Created
January 21, 2019 08:20
-
-
Save Azoy/12c131dd50b9d3610ac98e290123f8a8 to your computer and use it in GitHub Desktop.
Float16(Float80(value))
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
sil_stage canonical | |
import Builtin | |
import Swift | |
import SwiftShims | |
func x() | |
// main | |
sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { | |
bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): | |
%2 = integer_literal $Builtin.Int32, 0 // user: %3 | |
%3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 | |
return %3 : $Int32 // id: %4 | |
} // end sil function 'main' | |
// x() | |
sil hidden @$s4main1xyyF : $@convention(thin) () -> () { | |
bb0: | |
%0 = alloc_stack $Float16, var, name "x" // users: %49, %50 | |
%1 = float_literal $Builtin.FPIEEE80, 0x3FFF8000000000000000 // 1 // user: %14 | |
%2 = float_literal $Builtin.FPIEEE32, 0x3F800000 // 1 // users: %3, %4, %12 | |
%3 = struct $Float (%2 : $Builtin.FPIEEE32) // users: %17, %31 | |
%4 = builtin "bitcast_FPIEEE32_Int32"(%2 : $Builtin.FPIEEE32) : $Builtin.Int32 // users: %26, %20, %6 | |
%5 = integer_literal $Builtin.Int32, 23 // user: %6 | |
%6 = builtin "lshr_Int32"(%4 : $Builtin.Int32, %5 : $Builtin.Int32) : $Builtin.Int32 // user: %7 | |
%7 = builtin "zextOrBitCast_Int32_Int64"(%6 : $Builtin.Int32) : $Builtin.Int64 // user: %9 | |
%8 = integer_literal $Builtin.Int64, 255 // users: %10, %9 | |
%9 = builtin "and_Int64"(%7 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int64 // user: %10 | |
%10 = builtin "cmp_ult_Int64"(%9 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int1 // user: %11 | |
cond_br %10, bb1, bb2 // id: %11 | |
bb1: // Preds: bb0 | |
%12 = builtin "fpext_FPIEEE32_FPIEEE80"(%2 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %13 | |
%13 = builtin "int_fabs_FPIEEE80"(%12 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %15 | |
%14 = builtin "int_fabs_FPIEEE80"(%1 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // users: %36, %15 | |
%15 = builtin "fcmp_olt_FPIEEE80"(%14 : $Builtin.FPIEEE80, %13 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %16 | |
cond_br %15, bb3, bb4 // id: %16 | |
bb2: // Preds: bb0 | |
br bb8(%3 : $Float) // id: %17 | |
bb3: // Preds: bb1 | |
%18 = integer_literal $Builtin.Int32, 0 // user: %20 | |
%19 = integer_literal $Builtin.Int1, 0 // users: %26, %23, %20 | |
%20 = builtin "usub_with_overflow_Int32"(%18 : $Builtin.Int32, %4 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %21 | |
%21 = tuple_extract %20 : $(Builtin.Int32, Builtin.Int1), 0 // user: %23 | |
%22 = integer_literal $Builtin.Int32, 1 // users: %25, %23 | |
%23 = builtin "usub_with_overflow_Int32"(%21 : $Builtin.Int32, %22 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %24 | |
%24 = tuple_extract %23 : $(Builtin.Int32, Builtin.Int1), 0 // user: %25 | |
%25 = builtin "and_Int32"(%24 : $Builtin.Int32, %22 : $Builtin.Int32) : $Builtin.Int32 // user: %26 | |
%26 = builtin "usub_with_overflow_Int32"(%4 : $Builtin.Int32, %25 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %27 | |
%27 = tuple_extract %26 : $(Builtin.Int32, Builtin.Int1), 0 // user: %28 | |
%28 = builtin "bitcast_Int32_FPIEEE32"(%27 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %29 | |
%29 = struct $Float (%28 : $Builtin.FPIEEE32) // user: %30 | |
br bb5(%29 : $Float) // id: %30 | |
bb4: // Preds: bb1 | |
br bb5(%3 : $Float) // id: %31 | |
// %32 // users: %44, %33 | |
bb5(%32 : $Float): // Preds: bb4 bb3 | |
%33 = struct_extract %32 : $Float, #Float._value // users: %38, %34 | |
%34 = builtin "fpext_FPIEEE32_FPIEEE80"(%33 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %35 | |
%35 = builtin "int_fabs_FPIEEE80"(%34 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %36 | |
%36 = builtin "fcmp_olt_FPIEEE80"(%35 : $Builtin.FPIEEE80, %14 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %37 | |
cond_br %36, bb6, bb7 // id: %37 | |
bb6: // Preds: bb5 | |
%38 = builtin "bitcast_FPIEEE32_Int32"(%33 : $Builtin.FPIEEE32) : $Builtin.Int32 // user: %40 | |
%39 = integer_literal $Builtin.Int32, 1 // user: %40 | |
%40 = builtin "or_Int32"(%38 : $Builtin.Int32, %39 : $Builtin.Int32) : $Builtin.Int32 // user: %41 | |
%41 = builtin "bitcast_Int32_FPIEEE32"(%40 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %42 | |
%42 = struct $Float (%41 : $Builtin.FPIEEE32) // user: %43 | |
br bb8(%42 : $Float) // id: %43 | |
bb7: // Preds: bb5 | |
br bb8(%32 : $Float) // id: %44 | |
// %45 // user: %46 | |
bb8(%45 : $Float): // Preds: bb2 bb7 bb6 | |
%46 = struct_extract %45 : $Float, #Float._value // user: %47 | |
%47 = builtin "fptrunc_FPIEEE32_FPIEEE16"(%46 : $Builtin.FPIEEE32) : $Builtin.FPIEEE16 // user: %48 | |
%48 = struct $Float16 (%47 : $Builtin.FPIEEE16) // user: %49 | |
store %48 to %0 : $*Float16 // id: %49 | |
dealloc_stack %0 : $*Float16 // id: %50 | |
%51 = tuple () // user: %52 | |
return %51 : $() // id: %52 | |
} // end sil function '$s4main1xyyF' | |
// Float16.init(_builtinFloatLiteral:) | |
sil public_external [transparent] [serialized] @$ss7Float16V20_builtinFloatLiteralABBf80__tcfC : $@convention(method) (Builtin.FPIEEE80, @thin Float16.Type) -> Float16 { | |
// %0 // users: %15, %2 | |
bb0(%0 : $Builtin.FPIEEE80, %1 : $@thin Float16.Type): | |
%2 = builtin "fptrunc_FPIEEE80_FPIEEE32"(%0 : $Builtin.FPIEEE80) : $Builtin.FPIEEE32 // users: %13, %4, %3 | |
%3 = struct $Float (%2 : $Builtin.FPIEEE32) // users: %18, %12 | |
%4 = builtin "bitcast_FPIEEE32_Int32"(%2 : $Builtin.FPIEEE32) : $Builtin.Int32 // users: %27, %21, %6 | |
%5 = integer_literal $Builtin.Int32, 23 // user: %6 | |
%6 = builtin "lshr_Int32"(%4 : $Builtin.Int32, %5 : $Builtin.Int32) : $Builtin.Int32 // user: %7 | |
%7 = builtin "zextOrBitCast_Int32_Int64"(%6 : $Builtin.Int32) : $Builtin.Int64 // user: %9 | |
%8 = integer_literal $Builtin.Int64, 255 // users: %10, %9 | |
%9 = builtin "and_Int64"(%7 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int64 // user: %10 | |
%10 = builtin "cmp_ult_Int64"(%9 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int1 // user: %11 | |
cond_br %10, bb2, bb1 // id: %11 | |
bb1: // Preds: bb0 | |
br bb8(%3 : $Float) // id: %12 | |
bb2: // Preds: bb0 | |
%13 = builtin "fpext_FPIEEE32_FPIEEE80"(%2 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %14 | |
%14 = builtin "int_fabs_FPIEEE80"(%13 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %16 | |
%15 = builtin "int_fabs_FPIEEE80"(%0 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // users: %36, %16 | |
%16 = builtin "fcmp_olt_FPIEEE80"(%15 : $Builtin.FPIEEE80, %14 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %17 | |
cond_br %16, bb4, bb3 // id: %17 | |
bb3: // Preds: bb2 | |
br bb5(%3 : $Float) // id: %18 | |
bb4: // Preds: bb2 | |
%19 = integer_literal $Builtin.Int32, 0 // user: %21 | |
%20 = integer_literal $Builtin.Int1, 0 // users: %27, %24, %21 | |
%21 = builtin "usub_with_overflow_Int32"(%19 : $Builtin.Int32, %4 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %22 | |
%22 = tuple_extract %21 : $(Builtin.Int32, Builtin.Int1), 0 // user: %24 | |
%23 = integer_literal $Builtin.Int32, 1 // users: %26, %24 | |
%24 = builtin "usub_with_overflow_Int32"(%22 : $Builtin.Int32, %23 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %25 | |
%25 = tuple_extract %24 : $(Builtin.Int32, Builtin.Int1), 0 // user: %26 | |
%26 = builtin "and_Int32"(%25 : $Builtin.Int32, %23 : $Builtin.Int32) : $Builtin.Int32 // user: %27 | |
%27 = builtin "usub_with_overflow_Int32"(%4 : $Builtin.Int32, %26 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %28 | |
%28 = tuple_extract %27 : $(Builtin.Int32, Builtin.Int1), 0 // user: %29 | |
%29 = builtin "bitcast_Int32_FPIEEE32"(%28 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %30 | |
%30 = struct $Float (%29 : $Builtin.FPIEEE32) // user: %31 | |
br bb5(%30 : $Float) // id: %31 | |
// %32 // users: %38, %33 | |
bb5(%32 : $Float): // Preds: bb4 bb3 | |
%33 = struct_extract %32 : $Float, #Float._value // users: %39, %34 | |
%34 = builtin "fpext_FPIEEE32_FPIEEE80"(%33 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %35 | |
%35 = builtin "int_fabs_FPIEEE80"(%34 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %36 | |
%36 = builtin "fcmp_olt_FPIEEE80"(%35 : $Builtin.FPIEEE80, %15 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %37 | |
cond_br %36, bb7, bb6 // id: %37 | |
bb6: // Preds: bb5 | |
br bb8(%32 : $Float) // id: %38 | |
bb7: // Preds: bb5 | |
%39 = builtin "bitcast_FPIEEE32_Int32"(%33 : $Builtin.FPIEEE32) : $Builtin.Int32 // user: %41 | |
%40 = integer_literal $Builtin.Int32, 1 // user: %41 | |
%41 = builtin "or_Int32"(%39 : $Builtin.Int32, %40 : $Builtin.Int32) : $Builtin.Int32 // user: %42 | |
%42 = builtin "bitcast_Int32_FPIEEE32"(%41 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %43 | |
%43 = struct $Float (%42 : $Builtin.FPIEEE32) // user: %44 | |
br bb8(%43 : $Float) // id: %44 | |
// %45 // user: %46 | |
bb8(%45 : $Float): // Preds: bb7 bb6 bb1 | |
%46 = struct_extract %45 : $Float, #Float._value // user: %47 | |
%47 = builtin "fptrunc_FPIEEE32_FPIEEE16"(%46 : $Builtin.FPIEEE32) : $Builtin.FPIEEE16 // user: %48 | |
%48 = struct $Float16 (%47 : $Builtin.FPIEEE16) // user: %49 | |
return %48 : $Float16 // id: %49 | |
} // end sil function '$ss7Float16V20_builtinFloatLiteralABBf80__tcfC' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment