Skip to content

Instantly share code, notes, and snippets.

@stellaraccident
Last active October 6, 2021 02:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stellaraccident/e9f41a09a3834465d7576312fc63c278 to your computer and use it in GitHub Desktop.
Save stellaraccident/e9f41a09a3834465d7576312fc63c278 to your computer and use it in GitHub Desktop.
module @module {
func @object_as_bool_int(%arg0: i32, %arg1: i32, %arg2: i32) -> (i32, i32) {
%c-4_i32 = constant -4 : i32
%c0_i32 = constant 0 : i32
%c1 = constant 1 : index
%c256_i32 = constant 256 : i32
%c0 = constant 0 : index
%c2 = constant 2 : index
%c78_i32 = constant 78 : 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>
iree.list.resize %3, %c2 : !iree.list<!iree.variant>
iree.list.set %3[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %3[%c1], %arg0 : !iree.list<!iree.variant>, i32
iree.list.resize %1, %c2 : !iree.list<!iree.variant>
iree.list.set %1[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %1[%c1], %3 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%4 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %4, %c2 : !iree.list<!iree.variant>
iree.list.set %4[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %4[%c1], %arg1 : !iree.list<!iree.variant>, i32
iree.list.resize %0, %c2 : !iree.list<!iree.variant>
iree.list.set %0[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %0[%c1], %4 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%5 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %5, %c2 : !iree.list<!iree.variant>
iree.list.set %5[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %5[%c1], %arg2 : !iree.list<!iree.variant>, i32
iree.list.resize %2, %c2 : !iree.list<!iree.variant>
iree.list.set %2[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %2[%c1], %5 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%6 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%7:2 = call @pydmrtl$object_as_bool(%6) : (!iree.list<!iree.variant>) -> (i32, i1)
%8 = cmpi eq, %c0_i32, %7#0 : i32
cond_br %8, ^bb1, ^bb4(%7#0, %c0_i32 : i32, i32)
^bb1: // pred: ^bb0
%9 = select %7#1, %0, %2 : !iree.list<!iree.variant>
%10 = iree.list.get %9[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%11 = iree.list.get %10[%c0] : !iree.list<!iree.variant> -> i32
%12 = cmpi eq, %c78_i32, %11 : i32
cond_br %12, ^bb2, ^bb3(%c-4_i32, %c0_i32 : i32, i32)
^bb2: // pred: ^bb1
%13 = iree.list.get %10[%c1] : !iree.list<!iree.variant> -> i32
br ^bb3(%c0_i32, %13 : i32, i32)
^bb3(%14: i32, %15: i32): // 2 preds: ^bb1, ^bb2
%16 = cmpi eq, %c0_i32, %14 : i32
cond_br %16, ^bb4(%c0_i32, %15 : i32, i32), ^bb4(%14, %c0_i32 : i32, i32)
^bb4(%17: i32, %18: i32): // 3 preds: ^bb0, ^bb3, ^bb3
return %17, %18 : i32, i32
}
func @object_as_bool_bool(%arg0: i1, %arg1: i32, %arg2: i32) -> (i32, i32) {
%c-4_i32 = constant -4 : i32
%c0_i32 = constant 0 : i32
%c1 = constant 1 : index
%c256_i32 = constant 256 : i32
%c0 = constant 0 : index
%c2 = constant 2 : index
%c78_i32 = constant 78 : i32
%c64_i32 = constant 64 : 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>
iree.list.resize %3, %c2 : !iree.list<!iree.variant>
iree.list.set %3[%c0], %c64_i32 : !iree.list<!iree.variant>, i32
iree.list.set %3[%c1], %arg0 : !iree.list<!iree.variant>, i1
iree.list.resize %1, %c2 : !iree.list<!iree.variant>
iree.list.set %1[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %1[%c1], %3 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%4 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %4, %c2 : !iree.list<!iree.variant>
iree.list.set %4[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %4[%c1], %arg1 : !iree.list<!iree.variant>, i32
iree.list.resize %0, %c2 : !iree.list<!iree.variant>
iree.list.set %0[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %0[%c1], %4 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%5 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %5, %c2 : !iree.list<!iree.variant>
iree.list.set %5[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %5[%c1], %arg2 : !iree.list<!iree.variant>, i32
iree.list.resize %2, %c2 : !iree.list<!iree.variant>
iree.list.set %2[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %2[%c1], %5 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%6 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%7:2 = call @pydmrtl$object_as_bool(%6) : (!iree.list<!iree.variant>) -> (i32, i1)
%8 = cmpi eq, %c0_i32, %7#0 : i32
cond_br %8, ^bb1, ^bb4(%7#0, %c0_i32 : i32, i32)
^bb1: // pred: ^bb0
%9 = select %7#1, %0, %2 : !iree.list<!iree.variant>
%10 = iree.list.get %9[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%11 = iree.list.get %10[%c0] : !iree.list<!iree.variant> -> i32
%12 = cmpi eq, %c78_i32, %11 : i32
cond_br %12, ^bb2, ^bb3(%c-4_i32, %c0_i32 : i32, i32)
^bb2: // pred: ^bb1
%13 = iree.list.get %10[%c1] : !iree.list<!iree.variant> -> i32
br ^bb3(%c0_i32, %13 : i32, i32)
^bb3(%14: i32, %15: i32): // 2 preds: ^bb1, ^bb2
%16 = cmpi eq, %c0_i32, %14 : i32
cond_br %16, ^bb4(%c0_i32, %15 : i32, i32), ^bb4(%14, %c0_i32 : i32, i32)
^bb4(%17: i32, %18: i32): // 3 preds: ^bb0, ^bb3, ^bb3
return %17, %18 : i32, i32
}
func @object_as_bool_float(%arg0: f32, %arg1: i32, %arg2: i32) -> (i32, i32) {
%c-4_i32 = constant -4 : i32
%c0_i32 = constant 0 : i32
%c1 = constant 1 : index
%c256_i32 = constant 256 : i32
%c0 = constant 0 : index
%c2 = constant 2 : index
%c78_i32 = constant 78 : i32
%c90_i32 = constant 90 : 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>
iree.list.resize %3, %c2 : !iree.list<!iree.variant>
iree.list.set %3[%c0], %c90_i32 : !iree.list<!iree.variant>, i32
iree.list.set %3[%c1], %arg0 : !iree.list<!iree.variant>, f32
iree.list.resize %1, %c2 : !iree.list<!iree.variant>
iree.list.set %1[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %1[%c1], %3 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%4 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %4, %c2 : !iree.list<!iree.variant>
iree.list.set %4[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %4[%c1], %arg1 : !iree.list<!iree.variant>, i32
iree.list.resize %0, %c2 : !iree.list<!iree.variant>
iree.list.set %0[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %0[%c1], %4 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%5 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %5, %c2 : !iree.list<!iree.variant>
iree.list.set %5[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %5[%c1], %arg2 : !iree.list<!iree.variant>, i32
iree.list.resize %2, %c2 : !iree.list<!iree.variant>
iree.list.set %2[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %2[%c1], %5 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%6 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%7:2 = call @pydmrtl$object_as_bool(%6) : (!iree.list<!iree.variant>) -> (i32, i1)
%8 = cmpi eq, %c0_i32, %7#0 : i32
cond_br %8, ^bb1, ^bb4(%7#0, %c0_i32 : i32, i32)
^bb1: // pred: ^bb0
%9 = select %7#1, %0, %2 : !iree.list<!iree.variant>
%10 = iree.list.get %9[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%11 = iree.list.get %10[%c0] : !iree.list<!iree.variant> -> i32
%12 = cmpi eq, %c78_i32, %11 : i32
cond_br %12, ^bb2, ^bb3(%c-4_i32, %c0_i32 : i32, i32)
^bb2: // pred: ^bb1
%13 = iree.list.get %10[%c1] : !iree.list<!iree.variant> -> i32
br ^bb3(%c0_i32, %13 : i32, i32)
^bb3(%14: i32, %15: i32): // 2 preds: ^bb1, ^bb2
%16 = cmpi eq, %c0_i32, %14 : i32
cond_br %16, ^bb4(%c0_i32, %15 : i32, i32), ^bb4(%14, %c0_i32 : i32, i32)
^bb4(%17: i32, %18: i32): // 3 preds: ^bb0, ^bb3, ^bb3
return %17, %18 : i32, i32
}
func private @pydmrtl$object_as_bool(%arg0: !iree.list<!iree.variant>) -> (i32, i1) {
%c-3_i32 = constant -3 : i32
%c79_i32 = constant 79 : i32
%c64_i32 = constant 64 : i32
%c78_i32 = constant 78 : i32
%c0 = constant 0 : index
%c1 = constant 1 : index
%c256_i32 = constant 256 : i32
%c2 = constant 2 : index
%true = constant true
%c6_i32 = constant 6 : i32
%c0_i64 = constant 0 : i64
%c0_i32 = constant 0 : i32
%c2_i32 = constant 2 : i32
%c3_i32 = constant 3 : i32
%c60_i32 = constant 60 : i32
%c1_i32 = constant 1 : i32
%false = constant false
%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>
iree.list.resize %0, %c2 : !iree.list<!iree.variant>
iree.list.set %0[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %0[%c1], %arg0 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%4 = iree.list.get %0[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%5 = iree.list.get %4[%c0] : !iree.list<!iree.variant> -> i32
%6 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %6, %c2 : !iree.list<!iree.variant>
iree.list.set %6[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %6[%c1], %5 : !iree.list<!iree.variant>, i32
iree.list.resize %3, %c2 : !iree.list<!iree.variant>
iree.list.set %3[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %3[%c1], %6 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%7 = iree.list.get %3[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%8 = iree.list.get %7[%c0] : !iree.list<!iree.variant> -> i32
%9 = cmpi eq, %c78_i32, %8 : i32
cond_br %9, ^bb1, ^bb2(%c0_i32 : i32)
^bb1: // pred: ^bb0
%10 = iree.list.get %7[%c1] : !iree.list<!iree.variant> -> i32
br ^bb2(%10 : i32)
^bb2(%11: i32): // 2 preds: ^bb0, ^bb1
%12 = cmpi eq, %11, %c1_i32 : i32
cond_br %12, ^bb3(%false : i1), ^bb4
^bb3(%13: i1): // 7 preds: ^bb2, ^bb6, ^bb12, ^bb13, ^bb37, ^bb40, ^bb43
return %c0_i32, %13 : i32, i1
^bb4: // pred: ^bb2
%14 = iree.list.get %3[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%15 = iree.list.get %14[%c0] : !iree.list<!iree.variant> -> i32
%16 = cmpi eq, %c78_i32, %15 : i32
cond_br %16, ^bb5, ^bb6(%c0_i32 : i32)
^bb5: // pred: ^bb4
%17 = iree.list.get %14[%c1] : !iree.list<!iree.variant> -> i32
br ^bb6(%17 : i32)
^bb6(%18: i32): // 2 preds: ^bb4, ^bb5
%19 = shift_right_signed %18, %c6_i32 : i32
%20 = cmpi eq, %19, %c1_i32 : i32
cond_br %20, ^bb7, ^bb3(%true : i1)
^bb7: // pred: ^bb6
%21 = iree.list.get %3[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%22 = iree.list.get %21[%c0] : !iree.list<!iree.variant> -> i32
%23 = cmpi eq, %c78_i32, %22 : i32
cond_br %23, ^bb8, ^bb9(%c0_i32 : i32)
^bb8: // pred: ^bb7
%24 = iree.list.get %21[%c1] : !iree.list<!iree.variant> -> i32
br ^bb9(%24 : i32)
^bb9(%25: i32): // 2 preds: ^bb7, ^bb8
%26 = and %25, %c60_i32 : i32
%27 = shift_right_signed %26, %c2_i32 : i32
%28 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %28, %c2 : !iree.list<!iree.variant>
iree.list.set %28[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %28[%c1], %27 : !iree.list<!iree.variant>, i32
iree.list.resize %1, %c2 : !iree.list<!iree.variant>
iree.list.set %1[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %1[%c1], %28 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%29 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%30 = iree.list.get %29[%c0] : !iree.list<!iree.variant> -> i32
%31 = cmpi eq, %c78_i32, %30 : i32
cond_br %31, ^bb10, ^bb11(%c0_i32 : i32)
^bb10: // pred: ^bb9
%32 = iree.list.get %29[%c1] : !iree.list<!iree.variant> -> i32
br ^bb11(%32 : i32)
^bb11(%33: i32): // 2 preds: ^bb9, ^bb10
%34 = cmpi eq, %33, %c0_i32 : i32
cond_br %34, ^bb12, ^bb14
^bb12: // pred: ^bb11
%35 = iree.list.get %0[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%36 = iree.list.get %35[%c0] : !iree.list<!iree.variant> -> i32
%37 = cmpi eq, %c64_i32, %36 : i32
cond_br %37, ^bb13, ^bb3(%false : i1)
^bb13: // pred: ^bb12
%38 = iree.list.get %35[%c1] : !iree.list<!iree.variant> -> i1
br ^bb3(%38 : i1)
^bb14: // pred: ^bb11
%39 = iree.list.get %3[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%40 = iree.list.get %39[%c0] : !iree.list<!iree.variant> -> i32
%41 = cmpi eq, %c78_i32, %40 : i32
cond_br %41, ^bb15, ^bb16(%c0_i32 : i32)
^bb15: // pred: ^bb14
%42 = iree.list.get %39[%c1] : !iree.list<!iree.variant> -> i32
br ^bb16(%42 : i32)
^bb16(%43: i32): // 2 preds: ^bb14, ^bb15
%44 = and %43, %c3_i32 : i32
%45 = iree.list.create : !iree.list<!iree.variant>
iree.list.resize %45, %c2 : !iree.list<!iree.variant>
iree.list.set %45[%c0], %c78_i32 : !iree.list<!iree.variant>, i32
iree.list.set %45[%c1], %44 : !iree.list<!iree.variant>, i32
iree.list.resize %2, %c2 : !iree.list<!iree.variant>
iree.list.set %2[%c0], %c256_i32 : !iree.list<!iree.variant>, i32
iree.list.set %2[%c1], %45 : !iree.list<!iree.variant>, !iree.list<!iree.variant>
%46 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%47 = iree.list.get %46[%c0] : !iree.list<!iree.variant> -> i32
%48 = cmpi eq, %c78_i32, %47 : i32
cond_br %48, ^bb17, ^bb18(%c0_i32 : i32)
^bb17: // pred: ^bb16
%49 = iree.list.get %46[%c1] : !iree.list<!iree.variant> -> i32
br ^bb18(%49 : i32)
^bb18(%50: i32): // 2 preds: ^bb16, ^bb17
%51 = cmpi eq, %50, %c3_i32 : i32
cond_br %51, ^bb19, ^bb32
^bb19: // pred: ^bb18
%52 = iree.list.get %2[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%53 = iree.list.get %52[%c0] : !iree.list<!iree.variant> -> i32
%54 = cmpi eq, %c78_i32, %53 : i32
cond_br %54, ^bb20, ^bb21(%c0_i32 : i32)
^bb20: // pred: ^bb19
%55 = iree.list.get %52[%c1] : !iree.list<!iree.variant> -> i32
br ^bb21(%55 : i32)
^bb21(%56: i32): // 2 preds: ^bb19, ^bb20
%57 = cmpi eq, %56, %c2_i32 : i32
cond_br %57, ^bb22, ^bb25
^bb22: // pred: ^bb21
%58 = iree.list.get %0[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%59 = iree.list.get %58[%c0] : !iree.list<!iree.variant> -> i32
%60 = cmpi eq, %c78_i32, %59 : i32
cond_br %60, ^bb23, ^bb24(%c0_i32 : i32)
^bb23: // pred: ^bb22
%61 = iree.list.get %58[%c1] : !iree.list<!iree.variant> -> i32
br ^bb24(%61 : i32)
^bb24(%62: i32): // 2 preds: ^bb22, ^bb23
%63 = cmpi ne, %62, %c0_i32 : i32
return %c0_i32, %63 : i32, i1
^bb25: // pred: ^bb21
%64 = iree.list.get %2[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%65 = iree.list.get %64[%c0] : !iree.list<!iree.variant> -> i32
%66 = cmpi eq, %c78_i32, %65 : i32
cond_br %66, ^bb26, ^bb27(%c0_i32 : i32)
^bb26: // pred: ^bb25
%67 = iree.list.get %64[%c1] : !iree.list<!iree.variant> -> i32
br ^bb27(%67 : i32)
^bb27(%68: i32): // 2 preds: ^bb25, ^bb26
%69 = cmpi eq, %68, %c3_i32 : i32
cond_br %69, ^bb28, ^bb31
^bb28: // pred: ^bb27
%70 = iree.list.get %0[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%71 = iree.list.get %70[%c0] : !iree.list<!iree.variant> -> i32
%72 = cmpi eq, %c79_i32, %71 : i32
cond_br %72, ^bb29, ^bb30(%c0_i64 : i64)
^bb29: // pred: ^bb28
%73 = iree.list.get %70[%c1] : !iree.list<!iree.variant> -> i64
br ^bb30(%73 : i64)
^bb30(%74: i64): // 2 preds: ^bb28, ^bb29
%75 = cmpi ne, %74, %c0_i64 : i64
return %c0_i32, %75 : i32, i1
^bb31: // 3 preds: ^bb27, ^bb34, ^bb43
return %c-3_i32, %false : i32, i1
^bb32: // pred: ^bb18
%76 = iree.list.get %1[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%77 = iree.list.get %76[%c0] : !iree.list<!iree.variant> -> i32
%78 = cmpi eq, %c78_i32, %77 : i32
cond_br %78, ^bb33, ^bb34(%c0_i32 : i32)
^bb33: // pred: ^bb32
%79 = iree.list.get %76[%c1] : !iree.list<!iree.variant> -> i32
br ^bb34(%79 : i32)
^bb34(%80: i32): // 2 preds: ^bb32, ^bb33
%81 = cmpi eq, %80, %c6_i32 : i32
cond_br %81, ^bb35, ^bb31
^bb35: // pred: ^bb34
%82 = iree.list.get %2[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%83 = iree.list.get %82[%c0] : !iree.list<!iree.variant> -> i32
%84 = cmpi eq, %c78_i32, %83 : i32
cond_br %84, ^bb36, ^bb37(%c0_i32 : i32)
^bb36: // pred: ^bb35
%85 = iree.list.get %82[%c1] : !iree.list<!iree.variant> -> i32
br ^bb37(%85 : i32)
^bb37(%86: i32): // 2 preds: ^bb35, ^bb36
%87 = cmpi eq, %86, %c2_i32 : i32
cond_br %87, ^bb3(%true : i1), ^bb38
^bb38: // pred: ^bb37
%88 = iree.list.get %2[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%89 = iree.list.get %88[%c0] : !iree.list<!iree.variant> -> i32
%90 = cmpi eq, %c78_i32, %89 : i32
cond_br %90, ^bb39, ^bb40(%c0_i32 : i32)
^bb39: // pred: ^bb38
%91 = iree.list.get %88[%c1] : !iree.list<!iree.variant> -> i32
br ^bb40(%91 : i32)
^bb40(%92: i32): // 2 preds: ^bb38, ^bb39
%93 = cmpi eq, %92, %c3_i32 : i32
cond_br %93, ^bb3(%true : i1), ^bb41
^bb41: // pred: ^bb40
%94 = iree.list.get %2[%c1] : !iree.list<!iree.variant> -> !iree.list<!iree.variant>
%95 = iree.list.get %94[%c0] : !iree.list<!iree.variant> -> i32
%96 = cmpi eq, %c78_i32, %95 : i32
cond_br %96, ^bb42, ^bb43(%c0_i32 : i32)
^bb42: // pred: ^bb41
%97 = iree.list.get %94[%c1] : !iree.list<!iree.variant> -> i32
br ^bb43(%97 : i32)
^bb43(%98: i32): // 2 preds: ^bb41, ^bb42
%99 = cmpi eq, %98, %c0_i32 : i32
cond_br %99, ^bb3(%true : i1), ^bb31
}
}
module @module {
iree_pydm.func @object_as_bool_int(%arg0: !iree_pydm.integer<32>, %arg1: !iree_pydm.integer<32>, %arg2: !iree_pydm.integer<32>) -> (!iree_pydm.exception_result, !iree_pydm.integer<32>) attributes {arg_names = ["condition", "true_value", "false_value"], cell_vars = [], free_vars = ["condition", "true_value", "false_value"]} {
%true_value = alloc_free_var "true_value" -> !iree_pydm.free_var_ref
%condition = alloc_free_var "condition" -> !iree_pydm.free_var_ref
%false_value = alloc_free_var "false_value" -> !iree_pydm.free_var_ref
%0 = box %arg0 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %condition = %0 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%1 = box %arg1 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %true_value = %1 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%2 = box %arg2 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %false_value = %2 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%3 = load_var %condition : !iree_pydm.free_var_ref -> !iree_pydm.object
%exc_result, %result = call @pydmrtl$object_as_bool(%3) : (!iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.bool)
raise_on_failure %exc_result : !iree_pydm.exception_result
%4 = bool_to_pred %result
%5 = select %4, %true_value, %false_value : !iree_pydm.free_var_ref
%6 = load_var %5 : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %6 : !iree_pydm.object -> !iree_pydm.integer<32>
raise_on_failure %status : !iree_pydm.exception_result
return %primitive : !iree_pydm.integer<32>
}
iree_pydm.func @object_as_bool_bool(%arg0: !iree_pydm.bool, %arg1: !iree_pydm.integer<32>, %arg2: !iree_pydm.integer<32>) -> (!iree_pydm.exception_result, !iree_pydm.integer<32>) attributes {arg_names = ["condition", "true_value", "false_value"], cell_vars = [], free_vars = ["condition", "true_value", "false_value"]} {
%true_value = alloc_free_var "true_value" -> !iree_pydm.free_var_ref
%condition = alloc_free_var "condition" -> !iree_pydm.free_var_ref
%false_value = alloc_free_var "false_value" -> !iree_pydm.free_var_ref
%0 = box %arg0 : !iree_pydm.bool -> !iree_pydm.object<!iree_pydm.bool>
store_var %condition = %0 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.bool>
%1 = box %arg1 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %true_value = %1 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%2 = box %arg2 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %false_value = %2 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%3 = load_var %condition : !iree_pydm.free_var_ref -> !iree_pydm.object
%exc_result, %result = call @pydmrtl$object_as_bool(%3) : (!iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.bool)
raise_on_failure %exc_result : !iree_pydm.exception_result
%4 = bool_to_pred %result
%5 = select %4, %true_value, %false_value : !iree_pydm.free_var_ref
%6 = load_var %5 : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %6 : !iree_pydm.object -> !iree_pydm.integer<32>
raise_on_failure %status : !iree_pydm.exception_result
return %primitive : !iree_pydm.integer<32>
}
iree_pydm.func @object_as_bool_float(%arg0: !iree_pydm.real<f32>, %arg1: !iree_pydm.integer<32>, %arg2: !iree_pydm.integer<32>) -> (!iree_pydm.exception_result, !iree_pydm.integer<32>) attributes {arg_names = ["condition", "true_value", "false_value"], cell_vars = [], free_vars = ["condition", "true_value", "false_value"]} {
%true_value = alloc_free_var "true_value" -> !iree_pydm.free_var_ref
%condition = alloc_free_var "condition" -> !iree_pydm.free_var_ref
%false_value = alloc_free_var "false_value" -> !iree_pydm.free_var_ref
%0 = box %arg0 : !iree_pydm.real<f32> -> !iree_pydm.object<!iree_pydm.real<f32>>
store_var %condition = %0 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.real<f32>>
%1 = box %arg1 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %true_value = %1 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%2 = box %arg2 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %false_value = %2 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%3 = load_var %condition : !iree_pydm.free_var_ref -> !iree_pydm.object
%exc_result, %result = call @pydmrtl$object_as_bool(%3) : (!iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.bool)
raise_on_failure %exc_result : !iree_pydm.exception_result
%4 = bool_to_pred %result
%5 = select %4, %true_value, %false_value : !iree_pydm.free_var_ref
%6 = load_var %5 : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %6 : !iree_pydm.object -> !iree_pydm.integer<32>
raise_on_failure %status : !iree_pydm.exception_result
return %primitive : !iree_pydm.integer<32>
}
iree_pydm.func private @pydmrtl$object_as_bool(%arg0: !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.bool) attributes {arg_names = ["v"], cell_vars = [], free_vars = ["v", "type_code", "numeric_cat", "numeric_subtype"]} {
%0 = constant 1 : i64 -> !iree_pydm.integer<32>
%1 = constant false -> !iree_pydm.bool
%2 = constant 6 : i32 -> !iree_pydm.integer<32>
%3 = constant 1 : i32 -> !iree_pydm.integer<32>
%4 = constant 60 : i32 -> !iree_pydm.integer<32>
%5 = constant 2 : i32 -> !iree_pydm.integer<32>
%6 = constant 0 : i64 -> !iree_pydm.integer<32>
%7 = constant 3 : i32 -> !iree_pydm.integer<32>
%8 = constant 3 : i64 -> !iree_pydm.integer<32>
%9 = constant 2 : i64 -> !iree_pydm.integer<32>
%10 = constant 0 : i32 -> !iree_pydm.integer<32>
%11 = constant 0 : i64 -> !iree_pydm.integer<64>
%12 = constant 6 : i64 -> !iree_pydm.integer<32>
%13 = constant true -> !iree_pydm.bool
%v = alloc_free_var "v" -> !iree_pydm.free_var_ref
%numeric_cat = alloc_free_var "numeric_cat" -> !iree_pydm.free_var_ref
%numeric_subtype = alloc_free_var "numeric_subtype" -> !iree_pydm.free_var_ref
%type_code = alloc_free_var "type_code" -> !iree_pydm.free_var_ref
store_var %v = %arg0 : !iree_pydm.free_var_ref, !iree_pydm.object
%14 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%15 = get_type_code %14 : !iree_pydm.object -> !iree_pydm.integer<32>
%16 = box %15 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %type_code = %16 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%17 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %17 : !iree_pydm.object -> !iree_pydm.integer<32>
%18 = apply_compare "eq", %primitive, %0 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%19 = bool_to_pred %18
cond_br %19, ^bb1(%1 : !iree_pydm.bool), ^bb2
^bb1(%20: !iree_pydm.bool): // 5 preds: ^bb0, ^bb2, ^bb12, ^bb13, ^bb14
return %20 : !iree_pydm.bool
^bb2: // pred: ^bb0
%21 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_0, %primitive_1 = unbox %21 : !iree_pydm.object -> !iree_pydm.integer<32>
%22 = apply_binary "rshift", %primitive_1, %2 : !iree_pydm.integer<32>, !iree_pydm.integer<32> -> !iree_pydm.integer<32>
%23 = apply_compare "eq", %22, %3 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%24 = bool_to_pred %23
cond_br %24, ^bb3, ^bb1(%13 : !iree_pydm.bool)
^bb3: // pred: ^bb2
%25 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_2, %primitive_3 = unbox %25 : !iree_pydm.object -> !iree_pydm.integer<32>
%26 = apply_binary "and", %primitive_3, %4 : !iree_pydm.integer<32>, !iree_pydm.integer<32> -> !iree_pydm.integer<32>
%27 = apply_binary "rshift", %26, %5 : !iree_pydm.integer<32>, !iree_pydm.integer<32> -> !iree_pydm.integer<32>
%28 = box %27 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %numeric_cat = %28 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%29 = load_var %numeric_cat : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_4, %primitive_5 = unbox %29 : !iree_pydm.object -> !iree_pydm.integer<32>
%30 = apply_compare "eq", %primitive_5, %6 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%31 = bool_to_pred %30
cond_br %31, ^bb4, ^bb5
^bb4: // pred: ^bb3
%32 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_6, %primitive_7 = unbox %32 : !iree_pydm.object -> !iree_pydm.bool
return %primitive_7 : !iree_pydm.bool
^bb5: // pred: ^bb3
%33 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_8, %primitive_9 = unbox %33 : !iree_pydm.object -> !iree_pydm.integer<32>
%34 = apply_binary "and", %primitive_9, %7 : !iree_pydm.integer<32>, !iree_pydm.integer<32> -> !iree_pydm.integer<32>
%35 = box %34 : !iree_pydm.integer<32> -> !iree_pydm.object<!iree_pydm.integer<32>>
store_var %numeric_subtype = %35 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer<32>>
%36 = load_var %numeric_cat : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_10, %primitive_11 = unbox %36 : !iree_pydm.object -> !iree_pydm.integer<32>
%37 = apply_compare "eq", %primitive_11, %8 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%38 = bool_to_pred %37
cond_br %38, ^bb6, ^bb11
^bb6: // pred: ^bb5
%39 = load_var %numeric_subtype : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_12, %primitive_13 = unbox %39 : !iree_pydm.object -> !iree_pydm.integer<32>
%40 = apply_compare "eq", %primitive_13, %9 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%41 = bool_to_pred %40
cond_br %41, ^bb7, ^bb8
^bb7: // pred: ^bb6
%42 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_14, %primitive_15 = unbox %42 : !iree_pydm.object -> !iree_pydm.integer<32>
%43 = apply_compare "ne", %primitive_15, %10 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
return %43 : !iree_pydm.bool
^bb8: // pred: ^bb6
%44 = load_var %numeric_subtype : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_16, %primitive_17 = unbox %44 : !iree_pydm.object -> !iree_pydm.integer<32>
%45 = apply_compare "eq", %primitive_17, %8 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%46 = bool_to_pred %45
cond_br %46, ^bb9, ^bb10
^bb9: // pred: ^bb8
%47 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_18, %primitive_19 = unbox %47 : !iree_pydm.object -> !iree_pydm.integer<64>
%48 = apply_compare "ne", %primitive_19, %11 : !iree_pydm.integer<64>, !iree_pydm.integer<64>
return %48 : !iree_pydm.bool
^bb10: // 3 preds: ^bb8, ^bb11, ^bb14
%49 = failure -> !iree_pydm.exception_result
raise_on_failure %49 : !iree_pydm.exception_result
return %1 : !iree_pydm.bool
^bb11: // pred: ^bb5
%50 = load_var %numeric_cat : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_20, %primitive_21 = unbox %50 : !iree_pydm.object -> !iree_pydm.integer<32>
%51 = apply_compare "eq", %primitive_21, %12 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%52 = bool_to_pred %51
cond_br %52, ^bb12, ^bb10
^bb12: // pred: ^bb11
%53 = load_var %numeric_subtype : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_22, %primitive_23 = unbox %53 : !iree_pydm.object -> !iree_pydm.integer<32>
%54 = apply_compare "eq", %primitive_23, %9 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%55 = bool_to_pred %54
cond_br %55, ^bb1(%13 : !iree_pydm.bool), ^bb13
^bb13: // pred: ^bb12
%56 = load_var %numeric_subtype : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_24, %primitive_25 = unbox %56 : !iree_pydm.object -> !iree_pydm.integer<32>
%57 = apply_compare "eq", %primitive_25, %8 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%58 = bool_to_pred %57
cond_br %58, ^bb1(%13 : !iree_pydm.bool), ^bb14
^bb14: // pred: ^bb13
%59 = load_var %numeric_subtype : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_26, %primitive_27 = unbox %59 : !iree_pydm.object -> !iree_pydm.integer<32>
%60 = apply_compare "eq", %primitive_27, %6 : !iree_pydm.integer<32>, !iree_pydm.integer<32>
%61 = bool_to_pred %60
cond_br %61, ^bb1(%13 : !iree_pydm.bool), ^bb10
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment