Created
September 19, 2021 05:16
-
-
Save stellaraccident/1ff49e4a6108f22f1e82ad7934d9ab85 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
module { | |
module @booleans { | |
iree_pydm.func @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 8 : i64 -> !iree_pydm.integer | |
%1 = constant 1 : i64 -> !iree_pydm.integer | |
%2 = constant false -> !iree_pydm.bool | |
%3 = constant 9 : i64 -> !iree_pydm.integer | |
%4 = constant 0 : i64 -> !iree_pydm.integer | |
%5 = constant 10 : i64 -> !iree_pydm.integer | |
%6 = constant 0.000000e+00 : f64 -> !iree_pydm.real | |
%7 = constant true -> !iree_pydm.bool | |
%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", %0, %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", %1, %14 : !iree_pydm.integer, !iree_pydm.integer | |
%16 = bool_to_pred %15 | |
cond_br %16, ^bb3(%2 : !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", %3, %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, %4 : !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", %5, %25 : !iree_pydm.integer, !iree_pydm.integer | |
%27 = bool_to_pred %26 | |
cond_br %27, ^bb7, ^bb3(%7 : !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, %6 : !iree_pydm.real, !iree_pydm.real | |
return %29 : !iree_pydm.bool | |
} | |
} | |
module @numerics { | |
iree_pydm.func @pydmrtl$dynamic_binary_promote(%arg0: !iree_pydm.object, %arg1: !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.tuple) attributes {arg_names = ["left", "right"], cell_vars = [], free_vars = ["left", "right", "left_order", "right_order"]} { | |
%left = alloc_free_var "left" -> !iree_pydm.free_var_ref | |
%right = alloc_free_var "right" -> !iree_pydm.free_var_ref | |
%left_order = alloc_free_var "left_order" -> !iree_pydm.free_var_ref | |
%right_order = alloc_free_var "right_order" -> !iree_pydm.free_var_ref | |
store_var %left = %arg0 : !iree_pydm.free_var_ref, !iree_pydm.object | |
store_var %right = %arg1 : !iree_pydm.free_var_ref, !iree_pydm.object | |
%0 = load_var %left : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%1 = get_numeric_promotion_order %0 : !iree_pydm.object | |
%2 = box %1 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer> | |
store_var %left_order = %2 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer> | |
%3 = load_var %right : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%4 = get_numeric_promotion_order %3 : !iree_pydm.object | |
%5 = box %4 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer> | |
store_var %right_order = %5 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer> | |
%6 = load_var %left_order : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%7 = load_var %right_order : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%8 = apply_compare "eq", %6, %7 : !iree_pydm.object, !iree_pydm.object | |
%9 = bool_to_pred %8 | |
cond_br %9, ^bb1, ^bb2 | |
^bb1: // pred: ^bb0 | |
%10 = load_var %left : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%11 = load_var %right : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%12 = make_tuple %10, %11 : !iree_pydm.object, !iree_pydm.object -> !iree_pydm.tuple | |
return %12 : !iree_pydm.tuple | |
^bb2: // pred: ^bb0 | |
%13 = load_var %left_order : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%14 = load_var %right_order : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%15 = apply_compare "gt", %13, %14 : !iree_pydm.object, !iree_pydm.object | |
%16 = bool_to_pred %15 | |
cond_br %16, ^bb3, ^bb4 | |
^bb3: // pred: ^bb2 | |
%17 = load_var %left : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%18 = load_var %left : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%19 = get_type_code %18 : !iree_pydm.object | |
%20 = load_var %right : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%exc_result, %result = dynamic_call @pydmrtl$_promote_to(%19, %20) : (!iree_pydm.integer, !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.object) | |
raise_on_failure %exc_result : !iree_pydm.exception_result | |
%21 = make_tuple %17, %result : !iree_pydm.object, !iree_pydm.object -> !iree_pydm.tuple | |
return %21 : !iree_pydm.tuple | |
^bb4: // pred: ^bb2 | |
%22 = load_var %right : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%23 = get_type_code %22 : !iree_pydm.object | |
%24 = load_var %left : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%exc_result_0, %result_1 = dynamic_call @pydmrtl$_promote_to(%23, %24) : (!iree_pydm.integer, !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.object) | |
raise_on_failure %exc_result_0 : !iree_pydm.exception_result | |
%25 = load_var %right : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%26 = make_tuple %result_1, %25 : !iree_pydm.object, !iree_pydm.object -> !iree_pydm.tuple | |
return %26 : !iree_pydm.tuple | |
} | |
iree_pydm.func private @pydmrtl$_promote_to(%arg0: !iree_pydm.integer, %arg1: !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.object) attributes {arg_names = ["type_code", "value"], cell_vars = [], free_vars = ["type_code", "value"]} { | |
%0 = constant 9 : i64 -> !iree_pydm.integer | |
%1 = constant 10 : i64 -> !iree_pydm.integer | |
%2 = none | |
%value = alloc_free_var "value" -> !iree_pydm.free_var_ref | |
%type_code = alloc_free_var "type_code" -> !iree_pydm.free_var_ref | |
%3 = box %arg0 : !iree_pydm.integer -> !iree_pydm.object<!iree_pydm.integer> | |
store_var %type_code = %3 : !iree_pydm.free_var_ref, !iree_pydm.object<!iree_pydm.integer> | |
store_var %value = %arg1 : !iree_pydm.free_var_ref, !iree_pydm.object | |
%4 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%5 = apply_compare "eq", %4, %0 : !iree_pydm.object, !iree_pydm.integer | |
%6 = bool_to_pred %5 | |
cond_br %6, ^bb1, ^bb2 | |
^bb1: // pred: ^bb0 | |
%7 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%exc_result, %result = dynamic_call @pydmrtl$_promote_to_integer(%7) : (!iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.object) | |
raise_on_failure %exc_result : !iree_pydm.exception_result | |
return %result : !iree_pydm.object | |
^bb2: // pred: ^bb0 | |
%8 = load_var %type_code : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%9 = apply_compare "eq", %8, %1 : !iree_pydm.object, !iree_pydm.integer | |
%10 = bool_to_pred %9 | |
cond_br %10, ^bb3, ^bb4 | |
^bb3: // pred: ^bb2 | |
%11 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%exc_result_0, %result_1 = dynamic_call @pydmrtl$_promote_to_real(%11) : (!iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.object) | |
raise_on_failure %exc_result_0 : !iree_pydm.exception_result | |
return %result_1 : !iree_pydm.object | |
^bb4: // pred: ^bb2 | |
%12 = failure -> !iree_pydm.exception_result | |
raise_on_failure %12 : !iree_pydm.exception_result | |
%13 = box %2 : !iree_pydm.none -> !iree_pydm.object<!iree_pydm.none> | |
return %13 : !iree_pydm.object<!iree_pydm.none> | |
} | |
iree_pydm.func private @pydmrtl$_promote_to_real(%arg0: !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.real) attributes {arg_names = ["value"], cell_vars = [], free_vars = ["value"]} { | |
%0 = constant 8 : i64 -> !iree_pydm.integer | |
%1 = constant 9 : i64 -> !iree_pydm.integer | |
%2 = constant 0.000000e+00 : f64 -> !iree_pydm.real | |
%value = alloc_free_var "value" -> !iree_pydm.free_var_ref | |
store_var %value = %arg0 : !iree_pydm.free_var_ref, !iree_pydm.object | |
%3 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%4 = get_type_code %3 : !iree_pydm.object | |
%5 = apply_compare "eq", %0, %4 : !iree_pydm.integer, !iree_pydm.integer | |
%6 = bool_to_pred %5 | |
cond_br %6, ^bb1, ^bb2 | |
^bb1: // pred: ^bb0 | |
%7 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%status, %primitive = unbox %7 : !iree_pydm.object -> !iree_pydm.bool | |
%8 = promote_numeric %primitive : !iree_pydm.bool -> !iree_pydm.real | |
return %8 : !iree_pydm.real | |
^bb2: // pred: ^bb0 | |
%9 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%10 = get_type_code %9 : !iree_pydm.object | |
%11 = apply_compare "eq", %1, %10 : !iree_pydm.integer, !iree_pydm.integer | |
%12 = bool_to_pred %11 | |
cond_br %12, ^bb3, ^bb4 | |
^bb3: // pred: ^bb2 | |
%13 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%status_0, %primitive_1 = unbox %13 : !iree_pydm.object -> !iree_pydm.integer | |
%14 = promote_numeric %primitive_1 : !iree_pydm.integer -> !iree_pydm.real | |
return %14 : !iree_pydm.real | |
^bb4: // pred: ^bb2 | |
%15 = failure -> !iree_pydm.exception_result | |
raise_on_failure %15 : !iree_pydm.exception_result | |
return %2 : !iree_pydm.real | |
} | |
iree_pydm.func private @pydmrtl$_promote_to_integer(%arg0: !iree_pydm.object) -> (!iree_pydm.exception_result, !iree_pydm.integer) attributes {arg_names = ["value"], cell_vars = [], free_vars = ["value"]} { | |
%0 = constant 8 : i64 -> !iree_pydm.integer | |
%1 = constant 0 : i64 -> !iree_pydm.integer | |
%value = alloc_free_var "value" -> !iree_pydm.free_var_ref | |
store_var %value = %arg0 : !iree_pydm.free_var_ref, !iree_pydm.object | |
%2 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%3 = get_type_code %2 : !iree_pydm.object | |
%4 = apply_compare "eq", %0, %3 : !iree_pydm.integer, !iree_pydm.integer | |
%5 = bool_to_pred %4 | |
cond_br %5, ^bb1, ^bb2 | |
^bb1: // pred: ^bb0 | |
%6 = load_var %value : !iree_pydm.free_var_ref -> !iree_pydm.object | |
%status, %primitive = unbox %6 : !iree_pydm.object -> !iree_pydm.bool | |
%7 = promote_numeric %primitive : !iree_pydm.bool -> !iree_pydm.integer | |
return %7 : !iree_pydm.integer | |
^bb2: // pred: ^bb0 | |
%8 = failure -> !iree_pydm.exception_result | |
raise_on_failure %8 : !iree_pydm.exception_result | |
return %1 : !iree_pydm.integer | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment