| // A simple while loop example. |
| |
| // RUN: iree-run-mlir %s -iree-hal-target-backends=interpreter-bytecode --export-all=false | IreeFileCheck %s --implicit-check-not="[" --implicit-check-not="]" |
| // RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir %s -iree-hal-target-backends=vulkan-spirv --export-all=false | IreeFileCheck %s --implicit-check-not="[" --implicit-check-not="]") |
| |
| // CHECK-LABEL: EXEC @main |
| func @main() -> tensor<i32> attributes { iree.module.export } { |
| %start = iree.unfoldable_constant dense<1> : tensor<i32> |
| %bound = iree.unfoldable_constant dense<3> : tensor<i32> |
| %res = "xla_hlo.while"(%start) ( { |
| ^bb0(%count: tensor<i32>): |
| %1 = "xla_hlo.compare"(%count, %bound) {comparison_direction = "LT"} : (tensor<i32>, tensor<i32>) -> tensor<i1> |
| "xla_hlo.return"(%1) : (tensor<i1>) -> () |
| }, { |
| ^bb0(%count: tensor<i32>): |
| %1 = xla_hlo.add %count, %count : tensor<i32> |
| "xla_hlo.return"(%1) : (tensor<i32>) -> () |
| }) : (tensor<i32>) -> tensor<i32> |
| |
| return %res : tensor<i32> |
| } |
| |
| // CHECK: i32=4 |