[Mlir-commits] [mlir] [mlir][emitc] Add EmitC lowering for arith.trunci, arith.extsi, arith.extui (PR #91491)
Corentin Ferry
llvmlistbot at llvm.org
Wed May 22 06:49:04 PDT 2024
================
@@ -177,3 +177,66 @@ func.func @arith_int_to_float_cast_ops(%arg0: i8, %arg1: i64) {
return
}
+
+// -----
+
+func.func @arith_trunci(%arg0: i32) -> i8 {
+ // CHECK-LABEL: arith_trunci
+ // CHECK-SAME: (%[[Arg0:[^ ]*]]: i32)
+ // CHECK: %[[CastUI:.*]] = emitc.cast %[[Arg0]] : i32 to ui32
+ // CHECK: %[[Trunc:.*]] = emitc.cast %[[CastUI]] : ui32 to ui8
+ // CHECK: emitc.cast %[[Trunc]] : ui8 to i8
+ %truncd = arith.trunci %arg0 : i32 to i8
+
+ return %truncd : i8
+}
+
+// -----
+
+func.func @arith_trunci_to_i1(%arg0: i32) -> i1 {
+ // CHECK-LABEL: arith_trunci_to_i1
+ // CHECK-SAME: (%[[Arg0:[^ ]*]]: i32)
+ // CHECK: %[[Const:.*]] = "emitc.constant"
+ // CHECK-SAME: value = 1
+ // CHECK: %[[And:.*]] = emitc.bitwise_and %[[Arg0]], %[[Const]] : (i32, i32) -> i32
+ // CHECK: emitc.cast %[[And]] : i32 to i1
+ %truncd = arith.trunci %arg0 : i32 to i1
+
+ return %truncd : i1
+}
+
+// -----
+
+func.func @arith_extsi(%arg0: i32) {
+ // CHECK-LABEL: arith_extsi
+ // CHECK-SAME: ([[Arg0:[^ ]*]]: i32)
+ // CHECK: emitc.cast [[Arg0]] : i32 to i64
+ %extd = arith.extsi %arg0 : i32 to i64
+
+ return
+}
+
+// -----
+
+func.func @arith_extui(%arg0: i32) {
+ // CHECK-LABEL: arith_extui
+ // CHECK-SAME: (%[[Arg0:[^ ]*]]: i32)
+ // CHECK: %[[Conv0:.*]] = emitc.cast %[[Arg0]] : i32 to ui32
+ // CHECK: %[[Conv1:.*]] = emitc.cast %[[Conv0]] : ui32 to ui64
+ // CHECK: emitc.cast %[[Conv1]] : ui64 to i64
+ %extd = arith.extui %arg0 : i32 to i64
+
+ return
+}
+
+// -----
+
+func.func @arith_extui_i1_to_i32(%arg0: i1) {
+ // CHECK-LABEL: arith_extui_i1_to_i32
+ // CHECK-SAME: (%[[Arg0:[^ ]*]]: i1)
+ // CHECK: %[[Conv0:.*]] = emitc.cast %[[Arg0]] : i1 to ui1
+ // CHECK: %[[Conv1:.*]] = emitc.cast %[[Conv0]] : ui1 to ui32
+ // CHECK: emitc.cast %[[Conv1]] : ui32 to i32
+ %idx = arith.extui %arg0 : i1 to i32
+ return
+}
----------------
cferry-AMD wrote:
Solved :)
https://github.com/llvm/llvm-project/pull/91491
More information about the Mlir-commits
mailing list