1// RUN: mlir-opt --test-emulate-narrow-int="arith-compute-bitwidth=8" %s | FileCheck %s 2 3// Expect no conversions, f32 is not an integer type. 4// CHECK-LABEL: func @identity_f32 5// CHECK-SAME: ([[ARG:%.+]]: f32) -> f32 6// CHECK-NEXT: return [[ARG]] : f32 7func.func @identity_f32(%a : f32) -> f32 { 8 return %a : f32 9} 10 11// Expect no conversions, i32 is supported. 12// CHECK-LABEL: func @identity_i32 13// CHECK-SAME: ([[ARG:%.+]]: vector<2xi32>) -> vector<2xi32> 14// CHECK-NEXT: return [[ARG]] : vector<2xi32> 15func.func @identity_i32(%a : vector<2xi32>) -> vector<2xi32> { 16 return %a : vector<2xi32> 17} 18 19// CHECK-LABEL: func @identity_scalar 20// CHECK-SAME: ([[ARG:%.+]]: i8) -> i8 21// CHECK-NEXT: return [[ARG]] : i8 22func.func @identity_scalar(%x : i4) -> i4 { 23 return %x : i4 24} 25 26// CHECK-LABEL: func @identity_vector 27// CHECK-SAME: ([[ARG:%.+]]: vector<4xi8>) -> vector<4xi8> 28// CHECK-NEXT: return [[ARG]] : vector<4xi8> 29func.func @identity_vector(%x : vector<4xi4>) -> vector<4xi4> { 30 return %x : vector<4xi4> 31} 32 33// CHECK-LABEL: func @identity_vector2d 34// CHECK-SAME: ([[ARG:%.+]]: vector<3x4xi8>) -> vector<3x4xi8> 35// CHECK-NEXT: return [[ARG]] : vector<3x4xi8> 36func.func @identity_vector2d(%x : vector<3x4xi4>) -> vector<3x4xi4> { 37 return %x : vector<3x4xi4> 38} 39 40// CHECK-LABEL: func @call 41// CHECK-SAME: ([[ARG:%.+]]: vector<4xi8>) -> vector<4xi8> 42// CHECK-NEXT: [[RES:%.+]] = call @identity_vector([[ARG]]) : (vector<4xi8>) -> vector<4xi8> 43// CHECK-NEXT: return [[RES]] : vector<4xi8> 44func.func @call(%a : vector<4xi4>) -> vector<4xi4> { 45 %res = func.call @identity_vector(%a) : (vector<4xi4>) -> vector<4xi4> 46 return %res : vector<4xi4> 47} 48