diff --git a/test/ttmlir/Conversion/TTKernelToEmitC/arith_const.mlir b/test/ttmlir/Conversion/TTKernelToEmitC/arith_const.mlir new file mode 100644 index 0000000000..9522befe55 --- /dev/null +++ b/test/ttmlir/Conversion/TTKernelToEmitC/arith_const.mlir @@ -0,0 +1,10 @@ +// RUN: ttmlir-opt --convert-ttkernel-to-emitc %s | FileCheck %s +module { + func.func @const() -> i32 { + // CHECK: %[[ZERO:[0-9]+]] = "emitc.constant"() <{value = 0 : i32}> : () -> i32 + %0 = arith.constant 0 : i32 + // CHECK: %[[ONE:[0-9]+]] = "emitc.constant"() <{value = 1 : i32}> : () -> i32 + %1 = arith.constant 1 : i32 + return %1 : i32 + } +} diff --git a/test/ttmlir/Conversion/TTKernelToEmitC/memref_acc.mlir b/test/ttmlir/Conversion/TTKernelToEmitC/memref_acc.mlir new file mode 100644 index 0000000000..399ccff2ce --- /dev/null +++ b/test/ttmlir/Conversion/TTKernelToEmitC/memref_acc.mlir @@ -0,0 +1,17 @@ +// RUN: ttmlir-opt --convert-ttkernel-to-emitc %s | FileCheck %s +module { + func.func @accumulate(%num_iter : index, %incr : i32) -> i32 { + %zero = arith.constant 0 : i32 + %one = arith.constant 1 : index + %i0 = arith.constant 0 : index + %acc = memref.alloca() : memref<1xi32> + memref.store %zero, %acc[%i0] : memref<1xi32> + scf.for %i = %i0 to %num_iter step %one { + %current_sum = memref.load %acc[%i0] : memref<1xi32> + %new_sum = arith.addi %current_sum, %incr : i32 + memref.store %new_sum, %acc[%i0] : memref<1xi32> + } + %res = memref.load %acc[%i0] : memref<1xi32> + func.return %res : i32 + } +} diff --git a/test/ttmlir/Conversion/TTKernelToEmitC/memref_load_store.mlir b/test/ttmlir/Conversion/TTKernelToEmitC/memref_load_store.mlir new file mode 100644 index 0000000000..ac233a1f6b --- /dev/null +++ b/test/ttmlir/Conversion/TTKernelToEmitC/memref_load_store.mlir @@ -0,0 +1,19 @@ +// RUN: ttmlir-opt --convert-ttkernel-to-emitc %s | FileCheck %s +module { + func.func @load_store() -> i32 { + // CHECK: %[[VAL:[0-9]+]] = "emitc.constant"() <{value = 1 : i32}> : () -> i32 + %val = arith.constant 1 : i32 + // CHECK: %[[ZERO:[0-9]+]] = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t + %i0 = arith.constant 0 : index + // CHECK: %[[TWO:[0-9]+]] = "emitc.variable"() <{value = #emitc.opaque<"">}> : () -> !emitc.array<1xi32> + // CHECK: %[[THREE:[0-9]+]] = emitc.subscript %[[TWO]][%[[ZERO]]] : (!emitc.array<1xi32>, !emitc.size_t) -> !emitc.lvalue + %acc = memref.alloca() : memref<1xi32> + // CHECK: emitc.assign %[[VAL]] : i32 to %[[THREE]] : + memref.store %val, %acc[%i0] : memref<1xi32> + + // CHECK: %[[FOUR:[0-9]+]] = emitc.subscript %[[TWO]][%[[ZERO]]] : (!emitc.array<1xi32>, !emitc.size_t) -> !emitc.lvalue + // CHECK: %[[FIVE:[0-9]+]] = emitc.load %[[FOUR:[0-9]+]] : + %res = memref.load %acc[%i0] : memref<1xi32> + func.return %res : i32 + } +}