Skip to content

Instantly share code, notes, and snippets.

@stellaraccident
Last active October 1, 2021 23:22
Show Gist options
  • Save stellaraccident/a72e25025569bc8ab3332889f9d38697 to your computer and use it in GitHub Desktop.
Save stellaraccident/a72e25025569bc8ab3332889f9d38697 to your computer and use it in GitHub Desktop.
module @module {
iree_pydm.func @return_arg(%arg0: !iree_pydm.integer, %arg1: !iree_pydm.integer, %arg2: !iree_pydm.integer) -> (!iree_pydm.exception_result, !iree_pydm.integer) attributes {arg_names = ["a", "b", "c"], cell_vars = [], free_vars = ["a", "b", "c"]} {
%a = alloc_free_var "a" -> !iree_pydm.free_var_ref
%c = alloc_free_var "c" -> !iree_pydm.free_var_ref
%b = alloc_free_var "b" -> !iree_pydm.free_var_ref
%0 = box %arg0 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer>
store_var %a = %0 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer>
%1 = box %arg1 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer>
store_var %b = %1 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer>
%2 = box %arg2 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer>
store_var %c = %2 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer>
%3 = load_var %b : !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
cond_br %4, ^bb1(%a : !iree_pydm.free_var_ref), ^bb1(%c : !iree_pydm.free_var_ref)
^bb1(%5: !iree_pydm.free_var_ref): // 2 preds: ^bb0, ^bb0
%6 = load_var %5 : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %6 : !iree_pydm.object -> !iree_pydm.integer
raise_on_failure %status : !iree_pydm.exception_result
return %primitive : !iree_pydm.integer
}
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"]} {
%0 = constant true -> !iree_pydm.bool
%1 = constant 0.000000e+00 : f64 -> !iree_pydm.real
%2 = constant 10 : i64 -> !iree_pydm.integer
%3 = constant 0 : i64 -> !iree_pydm.integer
%4 = constant 9 : i64 -> !iree_pydm.integer
%5 = constant false -> !iree_pydm.bool
%6 = constant 1 : i64 -> !iree_pydm.integer
%7 = constant 8 : i64 -> !iree_pydm.integer
%v = alloc_free_var "v" -> !iree_pydm.free_var_ref
store_var %v = %arg0 : !iree_pydm.free_var_ref, !iree_pydm.object
%8 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%9 = get_type_code %8 : !iree_pydm.object
%10 = apply_compare "eq", %7, %9 : !iree_pydm.integer, !iree_pydm.integer
%11 = bool_to_pred %10
cond_br %11, ^bb1, ^bb2
^bb1: // pred: ^bb0
%12 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status, %primitive = unbox %12 : !iree_pydm.object -> !iree_pydm.bool
return %primitive : !iree_pydm.bool
^bb2: // pred: ^bb0
%13 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%14 = get_type_code %13 : !iree_pydm.object
%15 = apply_compare "eq", %6, %14 : !iree_pydm.integer, !iree_pydm.integer
%16 = bool_to_pred %15
cond_br %16, ^bb3(%5 : !iree_pydm.bool), ^bb4
^bb3(%17: !iree_pydm.bool): // 2 preds: ^bb2, ^bb6
return %17 : !iree_pydm.bool
^bb4: // pred: ^bb2
%18 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%19 = get_type_code %18 : !iree_pydm.object
%20 = apply_compare "eq", %4, %19 : !iree_pydm.integer, !iree_pydm.integer
%21 = bool_to_pred %20
cond_br %21, ^bb5, ^bb6
^bb5: // pred: ^bb4
%22 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_0, %primitive_1 = unbox %22 : !iree_pydm.object -> !iree_pydm.integer
%23 = apply_compare "ne", %primitive_1, %3 : !iree_pydm.integer, !iree_pydm.integer
return %23 : !iree_pydm.bool
^bb6: // pred: ^bb4
%24 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%25 = get_type_code %24 : !iree_pydm.object
%26 = apply_compare "eq", %2, %25 : !iree_pydm.integer, !iree_pydm.integer
%27 = bool_to_pred %26
cond_br %27, ^bb7, ^bb3(%0 : !iree_pydm.bool)
^bb7: // pred: ^bb6
%28 = load_var %v : !iree_pydm.free_var_ref -> !iree_pydm.object
%status_2, %primitive_3 = unbox %28 : !iree_pydm.object -> !iree_pydm.real
%29 = apply_compare "ne", %primitive_3, %1 : !iree_pydm.real, !iree_pydm.real
return %29 : !iree_pydm.bool
}
}
loc("/usr/local/google/home/laurenzo/src/iree-build/compiler-api/python_package/iree/compiler/dialects/iree_pydm/rtl/modules/booleans.py":26:9): error: failed to legalize operation 'iree_pydm.constant' that was explicitly marked illegal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment