Home | History | Annotate | Download | only in llvm2ice_tests
      1 ; This is a smoke test for floating-point constant pooling.  It tests
      2 ; pooling of various float and double constants (including positive
      3 ; and negative NaN) within functions and across functions.  Note that
      4 ; in LLVM bitcode, hex constants are used for an FP constant whenever
      5 ; the constant "cannot be represented as a decimal floating point
      6 ; number in a reasonable number of digits".  See
      7 ; http://llvm.org/docs/LangRef.html#simple-constants .
      8 
      9 ; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
     10 ; RUN:   -i %s --args -O2 --verbose none -allow-externally-defined-symbols \
     11 ; RUN:   | FileCheck %s
     12 ; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
     13 ; RUN:   -i %s --args -Om1 --verbose none -allow-externally-defined-symbols \
     14 ; RUN:   | FileCheck %s
     15 
     16 ; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \
     17 ; RUN:   --dis-flags=-s -i %s --args -O2 --verbose none \
     18 ; RUN:  -allow-externally-defined-symbols \
     19 ; RUN:  | %if --need allow_dump --command FileCheck %s
     20 ; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \
     21 ; RUN:   --dis-flags=-s -i %s --args -Om1 --verbose none \
     22 ; RUN:  -allow-externally-defined-symbols \
     23 ; RUN:  | %if --need allow_dump --command FileCheck %s
     24 
     25 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
     26 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
     27 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
     28 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
     29 
     30 define internal float @FpLookup1(i32 %Arg) {
     31 entry:
     32   switch i32 %Arg, label %return [
     33     i32 0, label %sw.bb
     34     i32 1, label %sw.bb1
     35     i32 2, label %sw.bb4
     36     i32 3, label %sw.bb7
     37     i32 -1, label %sw.bb10
     38     i32 -2, label %sw.bb14
     39     i32 -3, label %sw.bb19
     40     i32 10, label %sw.bb24
     41     i32 -10, label %sw.bb27
     42     i32 100, label %sw.bb30
     43     i32 101, label %sw.bb33
     44     i32 102, label %sw.bb36
     45     i32 103, label %sw.bb39
     46     i32 -101, label %sw.bb42
     47     i32 -102, label %sw.bb47
     48     i32 -103, label %sw.bb52
     49     i32 110, label %sw.bb57
     50     i32 -110, label %sw.bb60
     51   ]
     52 
     53 sw.bb:                                            ; preds = %entry
     54   %call = call float @Dummy(i32 0)
     55   %add = fadd float %call, 1.000000e+00
     56   br label %return
     57 
     58 sw.bb1:                                           ; preds = %entry
     59   %call2 = call float @Dummy(i32 1)
     60   %add3 = fadd float %call2, 2.000000e+00
     61   br label %return
     62 
     63 sw.bb4:                                           ; preds = %entry
     64   %call5 = call float @Dummy(i32 2)
     65   %add6 = fadd float %call5, 4.000000e+00
     66   br label %return
     67 
     68 sw.bb7:                                           ; preds = %entry
     69   %call8 = call float @Dummy(i32 3)
     70   %add9 = fadd float %call8, 8.000000e+00
     71   br label %return
     72 
     73 sw.bb10:                                          ; preds = %entry
     74   %call11 = call float @Dummy(i32 -1)
     75   %conv13 = fadd float %call11, 5.000000e-01
     76   br label %return
     77 
     78 sw.bb14:                                          ; preds = %entry
     79   %call15 = call float @Dummy(i32 -2)
     80   %conv16 = fpext float %call15 to double
     81   %add17 = fadd double %conv16, 0x3FD5555555555555
     82   %conv18 = fptrunc double %add17 to float
     83   br label %return
     84 
     85 sw.bb19:                                          ; preds = %entry
     86   %call20 = call float @Dummy(i32 -3)
     87   %conv23 = fadd float %call20, 2.500000e-01
     88   br label %return
     89 
     90 sw.bb24:                                          ; preds = %entry
     91   %call25 = call float @Dummy(i32 10)
     92   %add26 = fadd float %call25, 0x7FF8000000000000
     93   br label %return
     94 
     95 sw.bb27:                                          ; preds = %entry
     96   %call28 = call float @Dummy(i32 -10)
     97   %add29 = fadd float %call28, 0xFFF8000000000000
     98   br label %return
     99 
    100 sw.bb30:                                          ; preds = %entry
    101   %call31 = call float @Dummy(i32 100)
    102   %add32 = fadd float %call31, 1.000000e+00
    103   br label %return
    104 
    105 sw.bb33:                                          ; preds = %entry
    106   %call34 = call float @Dummy(i32 101)
    107   %add35 = fadd float %call34, 2.000000e+00
    108   br label %return
    109 
    110 sw.bb36:                                          ; preds = %entry
    111   %call37 = call float @Dummy(i32 102)
    112   %add38 = fadd float %call37, 4.000000e+00
    113   br label %return
    114 
    115 sw.bb39:                                          ; preds = %entry
    116   %call40 = call float @Dummy(i32 103)
    117   %add41 = fadd float %call40, 8.000000e+00
    118   br label %return
    119 
    120 sw.bb42:                                          ; preds = %entry
    121   %call43 = call float @Dummy(i32 -101)
    122   %conv46 = fadd float %call43, 5.000000e-01
    123   br label %return
    124 
    125 sw.bb47:                                          ; preds = %entry
    126   %call48 = call float @Dummy(i32 -102)
    127   %conv49 = fpext float %call48 to double
    128   %add50 = fadd double %conv49, 0x3FD5555555555555
    129   %conv51 = fptrunc double %add50 to float
    130   br label %return
    131 
    132 sw.bb52:                                          ; preds = %entry
    133   %call53 = call float @Dummy(i32 -103)
    134   %conv56 = fadd float %call53, 2.500000e-01
    135   br label %return
    136 
    137 sw.bb57:                                          ; preds = %entry
    138   %call58 = call float @Dummy(i32 110)
    139   %add59 = fadd float %call58, 0x7FF8000000000000
    140   br label %return
    141 
    142 sw.bb60:                                          ; preds = %entry
    143   %call61 = call float @Dummy(i32 -110)
    144   %add62 = fadd float %call61, 0xFFF8000000000000
    145   br label %return
    146 
    147 return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
    148   %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
    149   ret float %retval.0
    150 }
    151 
    152 declare float @Dummy(i32)
    153 
    154 define internal float @FpLookup2(i32 %Arg) {
    155 entry:
    156   switch i32 %Arg, label %return [
    157     i32 0, label %sw.bb
    158     i32 1, label %sw.bb1
    159     i32 2, label %sw.bb4
    160     i32 3, label %sw.bb7
    161     i32 -1, label %sw.bb10
    162     i32 -2, label %sw.bb14
    163     i32 -3, label %sw.bb19
    164     i32 10, label %sw.bb24
    165     i32 -10, label %sw.bb27
    166     i32 100, label %sw.bb30
    167     i32 101, label %sw.bb33
    168     i32 102, label %sw.bb36
    169     i32 103, label %sw.bb39
    170     i32 -101, label %sw.bb42
    171     i32 -102, label %sw.bb47
    172     i32 -103, label %sw.bb52
    173     i32 110, label %sw.bb57
    174     i32 -110, label %sw.bb60
    175   ]
    176 
    177 sw.bb:                                            ; preds = %entry
    178   %call = call float @Dummy(i32 0)
    179   %add = fadd float %call, 1.000000e+00
    180   br label %return
    181 
    182 sw.bb1:                                           ; preds = %entry
    183   %call2 = call float @Dummy(i32 1)
    184   %add3 = fadd float %call2, 2.000000e+00
    185   br label %return
    186 
    187 sw.bb4:                                           ; preds = %entry
    188   %call5 = call float @Dummy(i32 2)
    189   %add6 = fadd float %call5, 4.000000e+00
    190   br label %return
    191 
    192 sw.bb7:                                           ; preds = %entry
    193   %call8 = call float @Dummy(i32 3)
    194   %add9 = fadd float %call8, 8.000000e+00
    195   br label %return
    196 
    197 sw.bb10:                                          ; preds = %entry
    198   %call11 = call float @Dummy(i32 -1)
    199   %conv13 = fadd float %call11, 5.000000e-01
    200   br label %return
    201 
    202 sw.bb14:                                          ; preds = %entry
    203   %call15 = call float @Dummy(i32 -2)
    204   %conv16 = fpext float %call15 to double
    205   %add17 = fadd double %conv16, 0x3FD5555555555555
    206   %conv18 = fptrunc double %add17 to float
    207   br label %return
    208 
    209 sw.bb19:                                          ; preds = %entry
    210   %call20 = call float @Dummy(i32 -3)
    211   %conv23 = fadd float %call20, 2.500000e-01
    212   br label %return
    213 
    214 sw.bb24:                                          ; preds = %entry
    215   %call25 = call float @Dummy(i32 10)
    216   %add26 = fadd float %call25, 0x7FF8000000000000
    217   br label %return
    218 
    219 sw.bb27:                                          ; preds = %entry
    220   %call28 = call float @Dummy(i32 -10)
    221   %add29 = fadd float %call28, 0xFFF8000000000000
    222   br label %return
    223 
    224 sw.bb30:                                          ; preds = %entry
    225   %call31 = call float @Dummy(i32 100)
    226   %add32 = fadd float %call31, 1.000000e+00
    227   br label %return
    228 
    229 sw.bb33:                                          ; preds = %entry
    230   %call34 = call float @Dummy(i32 101)
    231   %add35 = fadd float %call34, 2.000000e+00
    232   br label %return
    233 
    234 sw.bb36:                                          ; preds = %entry
    235   %call37 = call float @Dummy(i32 102)
    236   %add38 = fadd float %call37, 4.000000e+00
    237   br label %return
    238 
    239 sw.bb39:                                          ; preds = %entry
    240   %call40 = call float @Dummy(i32 103)
    241   %add41 = fadd float %call40, 8.000000e+00
    242   br label %return
    243 
    244 sw.bb42:                                          ; preds = %entry
    245   %call43 = call float @Dummy(i32 -101)
    246   %conv46 = fadd float %call43, 5.000000e-01
    247   br label %return
    248 
    249 sw.bb47:                                          ; preds = %entry
    250   %call48 = call float @Dummy(i32 -102)
    251   %conv49 = fpext float %call48 to double
    252   %add50 = fadd double %conv49, 0x3FD5555555555555
    253   %conv51 = fptrunc double %add50 to float
    254   br label %return
    255 
    256 sw.bb52:                                          ; preds = %entry
    257   %call53 = call float @Dummy(i32 -103)
    258   %conv56 = fadd float %call53, 2.500000e-01
    259   br label %return
    260 
    261 sw.bb57:                                          ; preds = %entry
    262   %call58 = call float @Dummy(i32 110)
    263   %add59 = fadd float %call58, 0x7FF8000000000000
    264   br label %return
    265 
    266 sw.bb60:                                          ; preds = %entry
    267   %call61 = call float @Dummy(i32 -110)
    268   %add62 = fadd float %call61, 0xFFF8000000000000
    269   br label %return
    270 
    271 return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
    272   %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
    273   ret float %retval.0
    274 }
    275 
    276 define internal double @FpLookup3(i32 %Arg) {
    277 entry:
    278   switch i32 %Arg, label %return [
    279     i32 0, label %sw.bb
    280     i32 1, label %sw.bb1
    281     i32 2, label %sw.bb5
    282     i32 3, label %sw.bb9
    283     i32 -1, label %sw.bb13
    284     i32 -2, label %sw.bb17
    285     i32 -3, label %sw.bb21
    286     i32 10, label %sw.bb25
    287     i32 -10, label %sw.bb29
    288     i32 100, label %sw.bb33
    289     i32 101, label %sw.bb37
    290     i32 102, label %sw.bb41
    291     i32 103, label %sw.bb45
    292     i32 -101, label %sw.bb49
    293     i32 -102, label %sw.bb53
    294     i32 -103, label %sw.bb57
    295     i32 110, label %sw.bb61
    296     i32 -110, label %sw.bb65
    297   ]
    298 
    299 sw.bb:                                            ; preds = %entry
    300   %call = call float @Dummy(i32 0)
    301   %add = fadd float %call, 1.000000e+00
    302   %conv = fpext float %add to double
    303   br label %return
    304 
    305 sw.bb1:                                           ; preds = %entry
    306   %call2 = call float @Dummy(i32 1)
    307   %add3 = fadd float %call2, 2.000000e+00
    308   %conv4 = fpext float %add3 to double
    309   br label %return
    310 
    311 sw.bb5:                                           ; preds = %entry
    312   %call6 = call float @Dummy(i32 2)
    313   %add7 = fadd float %call6, 4.000000e+00
    314   %conv8 = fpext float %add7 to double
    315   br label %return
    316 
    317 sw.bb9:                                           ; preds = %entry
    318   %call10 = call float @Dummy(i32 3)
    319   %add11 = fadd float %call10, 8.000000e+00
    320   %conv12 = fpext float %add11 to double
    321   br label %return
    322 
    323 sw.bb13:                                          ; preds = %entry
    324   %call14 = call float @Dummy(i32 -1)
    325   %conv15 = fpext float %call14 to double
    326   %add16 = fadd double %conv15, 5.000000e-01
    327   br label %return
    328 
    329 sw.bb17:                                          ; preds = %entry
    330   %call18 = call float @Dummy(i32 -2)
    331   %conv19 = fpext float %call18 to double
    332   %add20 = fadd double %conv19, 0x3FD5555555555555
    333   br label %return
    334 
    335 sw.bb21:                                          ; preds = %entry
    336   %call22 = call float @Dummy(i32 -3)
    337   %conv23 = fpext float %call22 to double
    338   %add24 = fadd double %conv23, 2.500000e-01
    339   br label %return
    340 
    341 sw.bb25:                                          ; preds = %entry
    342   %call26 = call float @Dummy(i32 10)
    343   %conv27 = fpext float %call26 to double
    344   %add28 = fadd double %conv27, 0x7FF8000000000000
    345   br label %return
    346 
    347 sw.bb29:                                          ; preds = %entry
    348   %call30 = call float @Dummy(i32 -10)
    349   %conv31 = fpext float %call30 to double
    350   %add32 = fadd double %conv31, 0xFFF8000000000000
    351   br label %return
    352 
    353 sw.bb33:                                          ; preds = %entry
    354   %call34 = call float @Dummy(i32 100)
    355   %add35 = fadd float %call34, 1.000000e+00
    356   %conv36 = fpext float %add35 to double
    357   br label %return
    358 
    359 sw.bb37:                                          ; preds = %entry
    360   %call38 = call float @Dummy(i32 101)
    361   %add39 = fadd float %call38, 2.000000e+00
    362   %conv40 = fpext float %add39 to double
    363   br label %return
    364 
    365 sw.bb41:                                          ; preds = %entry
    366   %call42 = call float @Dummy(i32 102)
    367   %add43 = fadd float %call42, 4.000000e+00
    368   %conv44 = fpext float %add43 to double
    369   br label %return
    370 
    371 sw.bb45:                                          ; preds = %entry
    372   %call46 = call float @Dummy(i32 103)
    373   %add47 = fadd float %call46, 8.000000e+00
    374   %conv48 = fpext float %add47 to double
    375   br label %return
    376 
    377 sw.bb49:                                          ; preds = %entry
    378   %call50 = call float @Dummy(i32 -101)
    379   %conv51 = fpext float %call50 to double
    380   %add52 = fadd double %conv51, 5.000000e-01
    381   br label %return
    382 
    383 sw.bb53:                                          ; preds = %entry
    384   %call54 = call float @Dummy(i32 -102)
    385   %conv55 = fpext float %call54 to double
    386   %add56 = fadd double %conv55, 0x3FD5555555555555
    387   br label %return
    388 
    389 sw.bb57:                                          ; preds = %entry
    390   %call58 = call float @Dummy(i32 -103)
    391   %conv59 = fpext float %call58 to double
    392   %add60 = fadd double %conv59, 2.500000e-01
    393   br label %return
    394 
    395 sw.bb61:                                          ; preds = %entry
    396   %call62 = call float @Dummy(i32 110)
    397   %conv63 = fpext float %call62 to double
    398   %add64 = fadd double %conv63, 0x7FF8000000000000
    399   br label %return
    400 
    401 sw.bb65:                                          ; preds = %entry
    402   %call66 = call float @Dummy(i32 -110)
    403   %conv67 = fpext float %call66 to double
    404   %add68 = fadd double %conv67, 0xFFF8000000000000
    405   br label %return
    406 
    407 return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
    408   %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
    409   ret double %retval.0
    410 }
    411 
    412 define internal double @FpLookup4(i32 %Arg) {
    413 entry:
    414   switch i32 %Arg, label %return [
    415     i32 0, label %sw.bb
    416     i32 1, label %sw.bb1
    417     i32 2, label %sw.bb5
    418     i32 3, label %sw.bb9
    419     i32 -1, label %sw.bb13
    420     i32 -2, label %sw.bb17
    421     i32 -3, label %sw.bb21
    422     i32 10, label %sw.bb25
    423     i32 -10, label %sw.bb29
    424     i32 100, label %sw.bb33
    425     i32 101, label %sw.bb37
    426     i32 102, label %sw.bb41
    427     i32 103, label %sw.bb45
    428     i32 -101, label %sw.bb49
    429     i32 -102, label %sw.bb53
    430     i32 -103, label %sw.bb57
    431     i32 110, label %sw.bb61
    432     i32 -110, label %sw.bb65
    433   ]
    434 
    435 sw.bb:                                            ; preds = %entry
    436   %call = call float @Dummy(i32 0)
    437   %add = fadd float %call, 1.000000e+00
    438   %conv = fpext float %add to double
    439   br label %return
    440 
    441 sw.bb1:                                           ; preds = %entry
    442   %call2 = call float @Dummy(i32 1)
    443   %add3 = fadd float %call2, 2.000000e+00
    444   %conv4 = fpext float %add3 to double
    445   br label %return
    446 
    447 sw.bb5:                                           ; preds = %entry
    448   %call6 = call float @Dummy(i32 2)
    449   %add7 = fadd float %call6, 4.000000e+00
    450   %conv8 = fpext float %add7 to double
    451   br label %return
    452 
    453 sw.bb9:                                           ; preds = %entry
    454   %call10 = call float @Dummy(i32 3)
    455   %add11 = fadd float %call10, 8.000000e+00
    456   %conv12 = fpext float %add11 to double
    457   br label %return
    458 
    459 sw.bb13:                                          ; preds = %entry
    460   %call14 = call float @Dummy(i32 -1)
    461   %conv15 = fpext float %call14 to double
    462   %add16 = fadd double %conv15, 5.000000e-01
    463   br label %return
    464 
    465 sw.bb17:                                          ; preds = %entry
    466   %call18 = call float @Dummy(i32 -2)
    467   %conv19 = fpext float %call18 to double
    468   %add20 = fadd double %conv19, 0x3FD5555555555555
    469   br label %return
    470 
    471 sw.bb21:                                          ; preds = %entry
    472   %call22 = call float @Dummy(i32 -3)
    473   %conv23 = fpext float %call22 to double
    474   %add24 = fadd double %conv23, 2.500000e-01
    475   br label %return
    476 
    477 sw.bb25:                                          ; preds = %entry
    478   %call26 = call float @Dummy(i32 10)
    479   %conv27 = fpext float %call26 to double
    480   %add28 = fadd double %conv27, 0x7FF8000000000000
    481   br label %return
    482 
    483 sw.bb29:                                          ; preds = %entry
    484   %call30 = call float @Dummy(i32 -10)
    485   %conv31 = fpext float %call30 to double
    486   %add32 = fadd double %conv31, 0xFFF8000000000000
    487   br label %return
    488 
    489 sw.bb33:                                          ; preds = %entry
    490   %call34 = call float @Dummy(i32 100)
    491   %add35 = fadd float %call34, 1.000000e+00
    492   %conv36 = fpext float %add35 to double
    493   br label %return
    494 
    495 sw.bb37:                                          ; preds = %entry
    496   %call38 = call float @Dummy(i32 101)
    497   %add39 = fadd float %call38, 2.000000e+00
    498   %conv40 = fpext float %add39 to double
    499   br label %return
    500 
    501 sw.bb41:                                          ; preds = %entry
    502   %call42 = call float @Dummy(i32 102)
    503   %add43 = fadd float %call42, 4.000000e+00
    504   %conv44 = fpext float %add43 to double
    505   br label %return
    506 
    507 sw.bb45:                                          ; preds = %entry
    508   %call46 = call float @Dummy(i32 103)
    509   %add47 = fadd float %call46, 8.000000e+00
    510   %conv48 = fpext float %add47 to double
    511   br label %return
    512 
    513 sw.bb49:                                          ; preds = %entry
    514   %call50 = call float @Dummy(i32 -101)
    515   %conv51 = fpext float %call50 to double
    516   %add52 = fadd double %conv51, 5.000000e-01
    517   br label %return
    518 
    519 sw.bb53:                                          ; preds = %entry
    520   %call54 = call float @Dummy(i32 -102)
    521   %conv55 = fpext float %call54 to double
    522   %add56 = fadd double %conv55, 0x3FD5555555555555
    523   br label %return
    524 
    525 sw.bb57:                                          ; preds = %entry
    526   %call58 = call float @Dummy(i32 -103)
    527   %conv59 = fpext float %call58 to double
    528   %add60 = fadd double %conv59, 2.500000e-01
    529   br label %return
    530 
    531 sw.bb61:                                          ; preds = %entry
    532   %call62 = call float @Dummy(i32 110)
    533   %conv63 = fpext float %call62 to double
    534   %add64 = fadd double %conv63, 0x7FF8000000000000
    535   br label %return
    536 
    537 sw.bb65:                                          ; preds = %entry
    538   %call66 = call float @Dummy(i32 -110)
    539   %conv67 = fpext float %call66 to double
    540   %add68 = fadd double %conv67, 0xFFF8000000000000
    541   br label %return
    542 
    543 return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
    544   %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
    545   ret double %retval.0
    546 }
    547 
    548 ; The FP constant pool entries for each type are dumped in some
    549 ; implementation-dependent order.  So for the purposes of lit, we just
    550 ; pick one value for each type, and make sure it appears exactly once.
    551 
    552 ; Check for float 0.5
    553 ; CHECK-LABEL: .rodata.cst4
    554 ; CHECK:     0000003f
    555 ; CHECK-NOT: 0000003f
    556 
    557 ; Check for double 0.5
    558 ; CHECK-LABEL: .rodata.cst8
    559 ; CHECK:     00000000 0000e03f
    560 ; CHECK-NOT: 00000000 0000e03f
    561 ; CHECK-LABEL: .text
    562