Created
October 2, 2021 06:09
-
-
Save stellaraccident/bc1b27f3c8e83d64bb8d5a0ad63e7e11 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ./iree/tools/iree-translate --iree-hal-target-backends=cpu --iree-mlir-to-vm-bytecode-module ~/scratch/ireerepro.mlir > ~/scratch/returnif.vmfb | |
// | |
// @M.export_pyfunc | |
// def return_arg(a: int, b: int, c: int) -> int: | |
// if b: | |
// return a | |
// else: | |
// return c | |
// Should print (0, 1) but prints (0, 5) | |
// ./iree/tools/iree-run-module --module_file=$HOME/scratch/returnif.vmfb --entry_function=return_arg --function_input=5 --function_input=0 --function_input=1 | |
// -----// IR Dump Before mlir::iree_compiler::IREE::ABI::WrapEntryPointsPass ('builtin.module' operation: @module) //----- // | |
module @module { | |
func @return_arg(%arg0: i32, %arg1: i32, %arg2: i32) -> (i32, i32) { | |
%0 = iree.list.create : !iree.list<!iree.variant> | |
%1 = iree.list.create : !iree.list<!iree.variant> | |
%2 = iree.list.create : !iree.list<!iree.variant> | |
%3 = iree.list.create : !iree.list<!iree.variant> | |
%c2 = constant 2 : index | |
iree.list.resize %3, %c2 : !iree.list<!iree.variant> | |
%c0 = constant 0 : index | |
%c9_i32 = constant 9 : i32 | |
iree.list.set %3[%c0], %c9_i32 : !iree.list<!iree.variant>, i32 | |
%c1 = constant 1 : index | |
iree.list.set %3[%c1], %arg0 : !iree.list<!iree.variant>, i32 | |
%c2_0 = constant 2 : index | |
iree.list.resize %0, %c2_0 : !iree.list<!iree.variant> | |
%c0_1 = constant 0 : index | |
%c256_i32 = constant 256 : i32 | |
iree.list.set %0[%c0_1], %c256_i32 : !iree.list<!iree.variant>, i32 | |
%c1_2 = constant 1 : index | |
iree.list.set %0[%c1_2], %3 : !iree.list<!iree.variant>, !iree.list<!iree.variant> | |
%4 = iree.list.create : !iree.list<!iree.variant> | |
%c2_3 = constant 2 : index | |
iree.list.resize %4, %c2_3 : !iree.list<!iree.variant> | |
%c0_4 = constant 0 : index | |
%c9_i32_5 = constant 9 : i32 | |
iree.list.set %4[%c0_4], %c9_i32_5 : !iree.list<!iree.variant>, i32 | |
%c1_6 = constant 1 : index | |
iree.list.set %4[%c1_6], %arg1 : !iree.list<!iree.variant>, i32 | |
%c2_7 = constant 2 : index | |
iree.list.resize %2, %c2_7 : !iree.list<!iree.variant> | |
%c0_8 = constant 0 : index | |
%c256_i32_9 = constant 256 : i32 | |
iree.list.set %2[%c0_8], %c256_i32_9 : !iree.list<!iree.variant>, i32 | |
%c1_10 = constant 1 : index | |
iree.list.set %2[%c1_10], %4 : !iree.list<!iree.variant>, !iree.list<!iree.variant> | |
%5 = iree.list.create : !iree.list<!iree.variant> | |
%c2_11 = constant 2 : index | |
iree.list.resize %5, %c2_11 : !iree.list<!iree.variant> | |
%c0_12 = constant 0 : index | |
%c9_i32_13 = constant 9 : i32 | |
iree.list.set %5[%c0_12], %c9_i32_13 : !iree.list<!iree.variant>, i32 | |
%c1_14 = constant 1 : index | |
iree.list.set %5[%c1_14], %arg2 : !iree.list<!iree.variant>, i32 | |
%c2_15 = constant 2 : index | |
iree.list.resize %1, %c2_15 : !iree.list<!iree.variant> | |
%c0_16 = constant 0 : index | |
%c256_i32_17 = constant 256 : i32 | |
iree.list.set %1[%c0_16], %c256_i32_17 : !iree.list<!iree.variant>, i32 | |
%c1_18 = constant 1 : index | |
iree.list.set %1[%c1_18], %5 : !iree.list<!iree.variant>, !iree.list<!iree.variant> | |
%c1_19 = constant 1 : index | |
%6 = iree.list.get %2[%c1_19] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%7:2 = call @pydmrtl$object_as_bool(%6) : (!iree.list<!iree.variant>) -> (i32, i1) | |
%c0_i32 = constant 0 : i32 | |
%8 = cmpi eq, %c0_i32, %7#0 : i32 | |
cond_br %8, ^bb1, ^bb6 | |
^bb1: // pred: ^bb0 | |
cond_br %7#1, ^bb2(%0 : !iree.list<!iree.variant>), ^bb2(%1 : !iree.list<!iree.variant>) | |
^bb2(%9: !iree.list<!iree.variant>): // 2 preds: ^bb1, ^bb1 | |
%c1_20 = constant 1 : index | |
%10 = iree.list.get %9[%c1_20] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_21 = constant 0 : index | |
%c9_i32_22 = constant 9 : i32 | |
%11 = iree.list.get %10[%c0_21] : !iree.list<!iree.variant> -> i32 | |
%12 = cmpi eq, %c9_i32_22, %11 : i32 | |
cond_br %12, ^bb3, ^bb7 | |
^bb3: // pred: ^bb2 | |
%c1_23 = constant 1 : index | |
%c0_i32_24 = constant 0 : i32 | |
%13 = iree.list.get %10[%c1_23] : !iree.list<!iree.variant> -> i32 | |
br ^bb4(%c0_i32_24, %13 : i32, i32) | |
^bb4(%14: i32, %15: i32): // 2 preds: ^bb3, ^bb7 | |
%c0_i32_25 = constant 0 : i32 | |
%16 = cmpi eq, %c0_i32_25, %14 : i32 | |
cond_br %16, ^bb5, ^bb8 | |
^bb5: // pred: ^bb4 | |
%c0_i32_26 = constant 0 : i32 | |
return %c0_i32_26, %15 : i32, i32 | |
^bb6: // pred: ^bb0 | |
%c0_i32_27 = constant 0 : i32 | |
return %7#0, %c0_i32_27 : i32, i32 | |
^bb7: // pred: ^bb2 | |
%c-4_i32 = constant -4 : i32 | |
%c0_i32_28 = constant 0 : i32 | |
br ^bb4(%c-4_i32, %c0_i32_28 : i32, i32) | |
^bb8: // pred: ^bb4 | |
%c0_i32_29 = constant 0 : i32 | |
return %14, %c0_i32_29 : i32, i32 | |
} | |
func private @pydmrtl$object_as_bool(%arg0: !iree.list<!iree.variant>) -> (i32, i1) { | |
%true = constant true | |
%cst = constant 0.000000e+00 : f32 | |
%c10_i32 = constant 10 : i32 | |
%c0_i32 = constant 0 : i32 | |
%c9_i32 = constant 9 : i32 | |
%false = constant false | |
%c1_i32 = constant 1 : i32 | |
%c8_i32 = constant 8 : i32 | |
%0 = iree.list.create : !iree.list<!iree.variant> | |
%c2 = constant 2 : index | |
iree.list.resize %0, %c2 : !iree.list<!iree.variant> | |
%c0 = constant 0 : index | |
%c256_i32 = constant 256 : i32 | |
iree.list.set %0[%c0], %c256_i32 : !iree.list<!iree.variant>, i32 | |
%c1 = constant 1 : index | |
iree.list.set %0[%c1], %arg0 : !iree.list<!iree.variant>, !iree.list<!iree.variant> | |
%c1_0 = constant 1 : index | |
%1 = iree.list.get %0[%c1_0] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_1 = constant 0 : index | |
%2 = iree.list.get %1[%c0_1] : !iree.list<!iree.variant> -> i32 | |
%3 = cmpi eq, %c8_i32, %2 : i32 | |
cond_br %3, ^bb1, ^bb4 | |
^bb1: // pred: ^bb0 | |
%c1_2 = constant 1 : index | |
%4 = iree.list.get %0[%c1_2] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_3 = constant 0 : index | |
%c8_i32_4 = constant 8 : i32 | |
%5 = iree.list.get %4[%c0_3] : !iree.list<!iree.variant> -> i32 | |
%6 = cmpi eq, %c8_i32_4, %5 : i32 | |
cond_br %6, ^bb2, ^bb16 | |
^bb2: // pred: ^bb1 | |
%c1_5 = constant 1 : index | |
%c0_i32_6 = constant 0 : i32 | |
%7 = iree.list.get %4[%c1_5] : !iree.list<!iree.variant> -> i1 | |
br ^bb3(%c0_i32_6, %7 : i32, i1) | |
^bb3(%8: i32, %9: i1): // 2 preds: ^bb2, ^bb16 | |
%c0_i32_7 = constant 0 : i32 | |
return %c0_i32_7, %9 : i32, i1 | |
^bb4: // pred: ^bb0 | |
%c1_8 = constant 1 : index | |
%10 = iree.list.get %0[%c1_8] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_9 = constant 0 : index | |
%11 = iree.list.get %10[%c0_9] : !iree.list<!iree.variant> -> i32 | |
%12 = cmpi eq, %c1_i32, %11 : i32 | |
cond_br %12, ^bb5(%false : i1), ^bb6 | |
^bb5(%13: i1): // 2 preds: ^bb4, ^bb10 | |
%c0_i32_10 = constant 0 : i32 | |
return %c0_i32_10, %13 : i32, i1 | |
^bb6: // pred: ^bb4 | |
%c1_11 = constant 1 : index | |
%14 = iree.list.get %0[%c1_11] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_12 = constant 0 : index | |
%15 = iree.list.get %14[%c0_12] : !iree.list<!iree.variant> -> i32 | |
%16 = cmpi eq, %c9_i32, %15 : i32 | |
cond_br %16, ^bb7, ^bb10 | |
^bb7: // pred: ^bb6 | |
%c1_13 = constant 1 : index | |
%17 = iree.list.get %0[%c1_13] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_14 = constant 0 : index | |
%c9_i32_15 = constant 9 : i32 | |
%18 = iree.list.get %17[%c0_14] : !iree.list<!iree.variant> -> i32 | |
%19 = cmpi eq, %c9_i32_15, %18 : i32 | |
cond_br %19, ^bb8, ^bb15 | |
^bb8: // pred: ^bb7 | |
%c1_16 = constant 1 : index | |
%c0_i32_17 = constant 0 : i32 | |
%20 = iree.list.get %17[%c1_16] : !iree.list<!iree.variant> -> i32 | |
br ^bb9(%c0_i32_17, %20 : i32, i32) | |
^bb9(%21: i32, %22: i32): // 2 preds: ^bb8, ^bb15 | |
%23 = cmpi ne, %22, %c0_i32 : i32 | |
%c0_i32_18 = constant 0 : i32 | |
return %c0_i32_18, %23 : i32, i1 | |
^bb10: // pred: ^bb6 | |
%c1_19 = constant 1 : index | |
%24 = iree.list.get %0[%c1_19] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_20 = constant 0 : index | |
%25 = iree.list.get %24[%c0_20] : !iree.list<!iree.variant> -> i32 | |
%26 = cmpi eq, %c10_i32, %25 : i32 | |
cond_br %26, ^bb11, ^bb5(%true : i1) | |
^bb11: // pred: ^bb10 | |
%c1_21 = constant 1 : index | |
%27 = iree.list.get %0[%c1_21] : !iree.list<!iree.variant> -> !iree.list<!iree.variant> | |
%c0_22 = constant 0 : index | |
%c10_i32_23 = constant 10 : i32 | |
%28 = iree.list.get %27[%c0_22] : !iree.list<!iree.variant> -> i32 | |
%29 = cmpi eq, %c10_i32_23, %28 : i32 | |
cond_br %29, ^bb12, ^bb14 | |
^bb12: // pred: ^bb11 | |
%c1_24 = constant 1 : index | |
%c0_i32_25 = constant 0 : i32 | |
%30 = iree.list.get %27[%c1_24] : !iree.list<!iree.variant> -> f32 | |
br ^bb13(%c0_i32_25, %30 : i32, f32) | |
^bb13(%31: i32, %32: f32): // 2 preds: ^bb12, ^bb14 | |
%33 = cmpf one, %32, %cst : f32 | |
%c0_i32_26 = constant 0 : i32 | |
return %c0_i32_26, %33 : i32, i1 | |
^bb14: // pred: ^bb11 | |
%c-4_i32 = constant -4 : i32 | |
%cst_27 = constant 0.000000e+00 : f32 | |
br ^bb13(%c-4_i32, %cst_27 : i32, f32) | |
^bb15: // pred: ^bb7 | |
%c-4_i32_28 = constant -4 : i32 | |
%c0_i32_29 = constant 0 : i32 | |
br ^bb9(%c-4_i32_28, %c0_i32_29 : i32, i32) | |
^bb16: // pred: ^bb1 | |
%c-4_i32_30 = constant -4 : i32 | |
%false_31 = constant false | |
br ^bb3(%c-4_i32_30, %false_31 : i32, i1) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment