Guest User

Untitled

a guest
Jan 21st, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.27 KB | None | 0 0
  1. sil_stage canonical
  2.  
  3. import Builtin
  4. import Swift
  5. import SwiftShims
  6.  
  7. func x()
  8.  
  9. // main
  10. sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 {
  11. bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>):
  12. %2 = integer_literal $Builtin.Int32, 0 // user: %3
  13. %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4
  14. return %3 : $Int32 // id: %4
  15. } // end sil function 'main'
  16.  
  17. // x()
  18. sil hidden @$s4main1xyyF : $@convention(thin) () -> () {
  19. bb0:
  20. %0 = alloc_stack $Float16, var, name "x" // users: %49, %50
  21. %1 = float_literal $Builtin.FPIEEE80, 0x3FFF8000000000000000 // 1 // user: %14
  22. %2 = float_literal $Builtin.FPIEEE32, 0x3F800000 // 1 // users: %3, %4, %12
  23. %3 = struct $Float (%2 : $Builtin.FPIEEE32) // users: %17, %31
  24. %4 = builtin "bitcast_FPIEEE32_Int32"(%2 : $Builtin.FPIEEE32) : $Builtin.Int32 // users: %26, %20, %6
  25. %5 = integer_literal $Builtin.Int32, 23 // user: %6
  26. %6 = builtin "lshr_Int32"(%4 : $Builtin.Int32, %5 : $Builtin.Int32) : $Builtin.Int32 // user: %7
  27. %7 = builtin "zextOrBitCast_Int32_Int64"(%6 : $Builtin.Int32) : $Builtin.Int64 // user: %9
  28. %8 = integer_literal $Builtin.Int64, 255 // users: %10, %9
  29. %9 = builtin "and_Int64"(%7 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int64 // user: %10
  30. %10 = builtin "cmp_ult_Int64"(%9 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int1 // user: %11
  31. cond_br %10, bb1, bb2 // id: %11
  32.  
  33. bb1: // Preds: bb0
  34. %12 = builtin "fpext_FPIEEE32_FPIEEE80"(%2 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %13
  35. %13 = builtin "int_fabs_FPIEEE80"(%12 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %15
  36. %14 = builtin "int_fabs_FPIEEE80"(%1 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // users: %36, %15
  37. %15 = builtin "fcmp_olt_FPIEEE80"(%14 : $Builtin.FPIEEE80, %13 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %16
  38. cond_br %15, bb3, bb4 // id: %16
  39.  
  40. bb2: // Preds: bb0
  41. br bb8(%3 : $Float) // id: %17
  42.  
  43. bb3: // Preds: bb1
  44. %18 = integer_literal $Builtin.Int32, 0 // user: %20
  45. %19 = integer_literal $Builtin.Int1, 0 // users: %26, %23, %20
  46. %20 = builtin "usub_with_overflow_Int32"(%18 : $Builtin.Int32, %4 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %21
  47. %21 = tuple_extract %20 : $(Builtin.Int32, Builtin.Int1), 0 // user: %23
  48. %22 = integer_literal $Builtin.Int32, 1 // users: %25, %23
  49. %23 = builtin "usub_with_overflow_Int32"(%21 : $Builtin.Int32, %22 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %24
  50. %24 = tuple_extract %23 : $(Builtin.Int32, Builtin.Int1), 0 // user: %25
  51. %25 = builtin "and_Int32"(%24 : $Builtin.Int32, %22 : $Builtin.Int32) : $Builtin.Int32 // user: %26
  52. %26 = builtin "usub_with_overflow_Int32"(%4 : $Builtin.Int32, %25 : $Builtin.Int32, %19 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %27
  53. %27 = tuple_extract %26 : $(Builtin.Int32, Builtin.Int1), 0 // user: %28
  54. %28 = builtin "bitcast_Int32_FPIEEE32"(%27 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %29
  55. %29 = struct $Float (%28 : $Builtin.FPIEEE32) // user: %30
  56. br bb5(%29 : $Float) // id: %30
  57.  
  58. bb4: // Preds: bb1
  59. br bb5(%3 : $Float) // id: %31
  60.  
  61. // %32 // users: %44, %33
  62. bb5(%32 : $Float): // Preds: bb4 bb3
  63. %33 = struct_extract %32 : $Float, #Float._value // users: %38, %34
  64. %34 = builtin "fpext_FPIEEE32_FPIEEE80"(%33 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %35
  65. %35 = builtin "int_fabs_FPIEEE80"(%34 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %36
  66. %36 = builtin "fcmp_olt_FPIEEE80"(%35 : $Builtin.FPIEEE80, %14 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %37
  67. cond_br %36, bb6, bb7 // id: %37
  68.  
  69. bb6: // Preds: bb5
  70. %38 = builtin "bitcast_FPIEEE32_Int32"(%33 : $Builtin.FPIEEE32) : $Builtin.Int32 // user: %40
  71. %39 = integer_literal $Builtin.Int32, 1 // user: %40
  72. %40 = builtin "or_Int32"(%38 : $Builtin.Int32, %39 : $Builtin.Int32) : $Builtin.Int32 // user: %41
  73. %41 = builtin "bitcast_Int32_FPIEEE32"(%40 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %42
  74. %42 = struct $Float (%41 : $Builtin.FPIEEE32) // user: %43
  75. br bb8(%42 : $Float) // id: %43
  76.  
  77. bb7: // Preds: bb5
  78. br bb8(%32 : $Float) // id: %44
  79.  
  80. // %45 // user: %46
  81. bb8(%45 : $Float): // Preds: bb2 bb7 bb6
  82. %46 = struct_extract %45 : $Float, #Float._value // user: %47
  83. %47 = builtin "fptrunc_FPIEEE32_FPIEEE16"(%46 : $Builtin.FPIEEE32) : $Builtin.FPIEEE16 // user: %48
  84. %48 = struct $Float16 (%47 : $Builtin.FPIEEE16) // user: %49
  85. store %48 to %0 : $*Float16 // id: %49
  86. dealloc_stack %0 : $*Float16 // id: %50
  87. %51 = tuple () // user: %52
  88. return %51 : $() // id: %52
  89. } // end sil function '$s4main1xyyF'
  90.  
  91. // Float16.init(_builtinFloatLiteral:)
  92. sil public_external [transparent] [serialized] @$ss7Float16V20_builtinFloatLiteralABBf80__tcfC : $@convention(method) (Builtin.FPIEEE80, @thin Float16.Type) -> Float16 {
  93. // %0 // users: %15, %2
  94. bb0(%0 : $Builtin.FPIEEE80, %1 : $@thin Float16.Type):
  95. %2 = builtin "fptrunc_FPIEEE80_FPIEEE32"(%0 : $Builtin.FPIEEE80) : $Builtin.FPIEEE32 // users: %13, %4, %3
  96. %3 = struct $Float (%2 : $Builtin.FPIEEE32) // users: %18, %12
  97. %4 = builtin "bitcast_FPIEEE32_Int32"(%2 : $Builtin.FPIEEE32) : $Builtin.Int32 // users: %27, %21, %6
  98. %5 = integer_literal $Builtin.Int32, 23 // user: %6
  99. %6 = builtin "lshr_Int32"(%4 : $Builtin.Int32, %5 : $Builtin.Int32) : $Builtin.Int32 // user: %7
  100. %7 = builtin "zextOrBitCast_Int32_Int64"(%6 : $Builtin.Int32) : $Builtin.Int64 // user: %9
  101. %8 = integer_literal $Builtin.Int64, 255 // users: %10, %9
  102. %9 = builtin "and_Int64"(%7 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int64 // user: %10
  103. %10 = builtin "cmp_ult_Int64"(%9 : $Builtin.Int64, %8 : $Builtin.Int64) : $Builtin.Int1 // user: %11
  104. cond_br %10, bb2, bb1 // id: %11
  105.  
  106. bb1: // Preds: bb0
  107. br bb8(%3 : $Float) // id: %12
  108.  
  109. bb2: // Preds: bb0
  110. %13 = builtin "fpext_FPIEEE32_FPIEEE80"(%2 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %14
  111. %14 = builtin "int_fabs_FPIEEE80"(%13 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %16
  112. %15 = builtin "int_fabs_FPIEEE80"(%0 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // users: %36, %16
  113. %16 = builtin "fcmp_olt_FPIEEE80"(%15 : $Builtin.FPIEEE80, %14 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %17
  114. cond_br %16, bb4, bb3 // id: %17
  115.  
  116. bb3: // Preds: bb2
  117. br bb5(%3 : $Float) // id: %18
  118.  
  119. bb4: // Preds: bb2
  120. %19 = integer_literal $Builtin.Int32, 0 // user: %21
  121. %20 = integer_literal $Builtin.Int1, 0 // users: %27, %24, %21
  122. %21 = builtin "usub_with_overflow_Int32"(%19 : $Builtin.Int32, %4 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %22
  123. %22 = tuple_extract %21 : $(Builtin.Int32, Builtin.Int1), 0 // user: %24
  124. %23 = integer_literal $Builtin.Int32, 1 // users: %26, %24
  125. %24 = builtin "usub_with_overflow_Int32"(%22 : $Builtin.Int32, %23 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %25
  126. %25 = tuple_extract %24 : $(Builtin.Int32, Builtin.Int1), 0 // user: %26
  127. %26 = builtin "and_Int32"(%25 : $Builtin.Int32, %23 : $Builtin.Int32) : $Builtin.Int32 // user: %27
  128. %27 = builtin "usub_with_overflow_Int32"(%4 : $Builtin.Int32, %26 : $Builtin.Int32, %20 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // user: %28
  129. %28 = tuple_extract %27 : $(Builtin.Int32, Builtin.Int1), 0 // user: %29
  130. %29 = builtin "bitcast_Int32_FPIEEE32"(%28 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %30
  131. %30 = struct $Float (%29 : $Builtin.FPIEEE32) // user: %31
  132. br bb5(%30 : $Float) // id: %31
  133.  
  134. // %32 // users: %38, %33
  135. bb5(%32 : $Float): // Preds: bb4 bb3
  136. %33 = struct_extract %32 : $Float, #Float._value // users: %39, %34
  137. %34 = builtin "fpext_FPIEEE32_FPIEEE80"(%33 : $Builtin.FPIEEE32) : $Builtin.FPIEEE80 // user: %35
  138. %35 = builtin "int_fabs_FPIEEE80"(%34 : $Builtin.FPIEEE80) : $Builtin.FPIEEE80 // user: %36
  139. %36 = builtin "fcmp_olt_FPIEEE80"(%35 : $Builtin.FPIEEE80, %15 : $Builtin.FPIEEE80) : $Builtin.Int1 // user: %37
  140. cond_br %36, bb7, bb6 // id: %37
  141.  
  142. bb6: // Preds: bb5
  143. br bb8(%32 : $Float) // id: %38
  144.  
  145. bb7: // Preds: bb5
  146. %39 = builtin "bitcast_FPIEEE32_Int32"(%33 : $Builtin.FPIEEE32) : $Builtin.Int32 // user: %41
  147. %40 = integer_literal $Builtin.Int32, 1 // user: %41
  148. %41 = builtin "or_Int32"(%39 : $Builtin.Int32, %40 : $Builtin.Int32) : $Builtin.Int32 // user: %42
  149. %42 = builtin "bitcast_Int32_FPIEEE32"(%41 : $Builtin.Int32) : $Builtin.FPIEEE32 // user: %43
  150. %43 = struct $Float (%42 : $Builtin.FPIEEE32) // user: %44
  151. br bb8(%43 : $Float) // id: %44
  152.  
  153. // %45 // user: %46
  154. bb8(%45 : $Float): // Preds: bb7 bb6 bb1
  155. %46 = struct_extract %45 : $Float, #Float._value // user: %47
  156. %47 = builtin "fptrunc_FPIEEE32_FPIEEE16"(%46 : $Builtin.FPIEEE32) : $Builtin.FPIEEE16 // user: %48
  157. %48 = struct $Float16 (%47 : $Builtin.FPIEEE16) // user: %49
  158. return %48 : $Float16 // id: %49
  159. } // end sil function '$ss7Float16V20_builtinFloatLiteralABBf80__tcfC'
Add Comment
Please, Sign In to add comment