Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=pic < %s | FileCheck %s -check-prefix=pic
      2 
      3 @x = global float 1.500000e+00, align 4
      4 @xn = global float -1.900000e+01, align 4
      5 @negone = global float -1.000000e+00, align 4
      6 @one = global float 1.000000e+00, align 4
      7 @xd = global double 0x40048B0A8EA4481E, align 8
      8 @xdn = global double 0xC0311F9ADD373963, align 8
      9 @negoned = global double -1.000000e+00, align 8
     10 @oned = global float 1.000000e+00, align 4
     11 @y = common global float 0.000000e+00, align 4
     12 @yd = common global double 0.000000e+00, align 8
     13 
     14 ; Function Attrs: nounwind
     15 define void @foo1() #0 {
     16 entry:
     17   %0 = load float* @x, align 4
     18   %1 = load float* @one, align 4
     19   %call = call float @copysignf(float %0, float %1) #2
     20   store float %call, float* @y, align 4
     21   ret void
     22 }
     23 
     24 ; Function Attrs: nounwind readnone
     25 declare float @copysignf(float, float) #1
     26 
     27 ; Function Attrs: nounwind
     28 define void @foo2() #0 {
     29 entry:
     30   %0 = load float* @x, align 4
     31   %1 = load float* @negone, align 4
     32   %call = call float @copysignf(float %0, float %1) #2
     33   store float %call, float* @y, align 4
     34   ret void
     35 }
     36 
     37 ; Function Attrs: nounwind
     38 define void @foo3() #0 {
     39 entry:
     40   %0 = load double* @xd, align 8
     41   %1 = load float* @oned, align 4
     42   %conv = fpext float %1 to double
     43   %call = call double @copysign(double %0, double %conv) #2
     44   store double %call, double* @yd, align 8
     45   ret void
     46 }
     47 
     48 ; Function Attrs: nounwind readnone
     49 declare double @copysign(double, double) #1
     50 
     51 ; Function Attrs: nounwind
     52 define void @foo4() #0 {
     53 entry:
     54   %0 = load double* @xd, align 8
     55   %1 = load double* @negoned, align 8
     56   %call = call double @copysign(double %0, double %1) #2
     57   store double %call, double* @yd, align 8
     58   ret void
     59 }
     60 
     61 ; Function Attrs: nounwind
     62 define void @foo5() #0 {
     63 entry:
     64   %0 = load float* @xn, align 4
     65   %call = call float @fabsf(float %0) #2
     66   store float %call, float* @y, align 4
     67   ret void
     68 }
     69 
     70 ; Function Attrs: nounwind readnone
     71 declare float @fabsf(float) #1
     72 
     73 ; Function Attrs: nounwind
     74 define void @foo6() #0 {
     75 entry:
     76   %0 = load double* @xdn, align 8
     77   %call = call double @fabs(double %0) #2
     78   store double %call, double* @yd, align 8
     79   ret void
     80 }
     81 
     82 ; Function Attrs: nounwind readnone
     83 declare double @fabs(double) #1
     84 
     85 ; Function Attrs: nounwind
     86 define void @foo7() #0 {
     87 entry:
     88   %0 = load float* @x, align 4
     89   %call = call float @sinf(float %0) #3
     90 ;pic:	lw	${{[0-9]+}}, %call16(sinf)(${{[0-9]+}})
     91 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
     92   store float %call, float* @y, align 4
     93   ret void
     94 }
     95 
     96 ; Function Attrs: nounwind
     97 declare float @sinf(float) #0
     98 
     99 ; Function Attrs: nounwind
    100 define void @foo8() #0 {
    101 entry:
    102   %0 = load double* @xd, align 8
    103   %call = call double @sin(double %0) #3
    104 ;pic:	lw	${{[0-9]+}}, %call16(sin)(${{[0-9]+}})
    105 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    106   store double %call, double* @yd, align 8
    107   ret void
    108 }
    109 
    110 ; Function Attrs: nounwind
    111 declare double @sin(double) #0
    112 
    113 ; Function Attrs: nounwind
    114 define void @foo9() #0 {
    115 entry:
    116   %0 = load float* @x, align 4
    117   %call = call float @cosf(float %0) #3
    118 ;pic:	lw	${{[0-9]+}}, %call16(cosf)(${{[0-9]+}})
    119 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    120   store float %call, float* @y, align 4
    121   ret void
    122 }
    123 
    124 ; Function Attrs: nounwind
    125 declare float @cosf(float) #0
    126 
    127 ; Function Attrs: nounwind
    128 define void @foo10() #0 {
    129 entry:
    130   %0 = load double* @xd, align 8
    131   %call = call double @cos(double %0) #3
    132 ;pic:	lw	${{[0-9]+}}, %call16(cos)(${{[0-9]+}})
    133 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    134   store double %call, double* @yd, align 8
    135   ret void
    136 }
    137 
    138 ; Function Attrs: nounwind
    139 declare double @cos(double) #0
    140 
    141 ; Function Attrs: nounwind
    142 define void @foo11() #0 {
    143 entry:
    144   %0 = load float* @x, align 4
    145   %call = call float @sqrtf(float %0) #3
    146 ;pic:	lw	${{[0-9]+}}, %call16(sqrtf)(${{[0-9]+}})
    147 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    148   store float %call, float* @y, align 4
    149   ret void
    150 }
    151 
    152 ; Function Attrs: nounwind
    153 declare float @sqrtf(float) #0
    154 
    155 ; Function Attrs: nounwind
    156 define void @foo12() #0 {
    157 entry:
    158   %0 = load double* @xd, align 8
    159   %call = call double @sqrt(double %0) #3
    160 ;pic:	lw	${{[0-9]+}}, %call16(sqrt)(${{[0-9]+}})
    161 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    162   store double %call, double* @yd, align 8
    163   ret void
    164 }
    165 
    166 ; Function Attrs: nounwind
    167 declare double @sqrt(double) #0
    168 
    169 ; Function Attrs: nounwind
    170 define void @foo13() #0 {
    171 entry:
    172   %0 = load float* @x, align 4
    173   %call = call float @floorf(float %0) #2
    174 ;pic:	lw	${{[0-9]+}}, %call16(floorf)(${{[0-9]+}})
    175 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    176   store float %call, float* @y, align 4
    177   ret void
    178 }
    179 
    180 ; Function Attrs: nounwind readnone
    181 declare float @floorf(float) #1
    182 
    183 ; Function Attrs: nounwind
    184 define void @foo14() #0 {
    185 entry:
    186   %0 = load double* @xd, align 8
    187   %call = call double @floor(double %0) #2
    188 ;pic:	lw	${{[0-9]+}}, %call16(floor)(${{[0-9]+}})
    189 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    190   store double %call, double* @yd, align 8
    191   ret void
    192 }
    193 
    194 ; Function Attrs: nounwind readnone
    195 declare double @floor(double) #1
    196 
    197 ; Function Attrs: nounwind
    198 define void @foo15() #0 {
    199 entry:
    200   %0 = load float* @x, align 4
    201   %call = call float @nearbyintf(float %0) #2
    202 ;pic:	lw	${{[0-9]+}}, %call16(nearbyintf)(${{[0-9]+}})
    203 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    204   store float %call, float* @y, align 4
    205   ret void
    206 }
    207 
    208 ; Function Attrs: nounwind readnone
    209 declare float @nearbyintf(float) #1
    210 
    211 ; Function Attrs: nounwind
    212 define void @foo16() #0 {
    213 entry:
    214   %0 = load double* @xd, align 8
    215   %call = call double @nearbyint(double %0) #2
    216 ;pic:	lw	${{[0-9]+}}, %call16(nearbyint)(${{[0-9]+}})
    217 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    218   store double %call, double* @yd, align 8
    219   ret void
    220 }
    221 
    222 ; Function Attrs: nounwind readnone
    223 declare double @nearbyint(double) #1
    224 
    225 ; Function Attrs: nounwind
    226 define void @foo17() #0 {
    227 entry:
    228   %0 = load float* @x, align 4
    229   %call = call float @ceilf(float %0) #2
    230 ;pic:	lw	${{[0-9]+}}, %call16(ceilf)(${{[0-9]+}})
    231 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    232   store float %call, float* @y, align 4
    233   ret void
    234 }
    235 
    236 ; Function Attrs: nounwind readnone
    237 declare float @ceilf(float) #1
    238 
    239 ; Function Attrs: nounwind
    240 define void @foo18() #0 {
    241 entry:
    242   %0 = load double* @xd, align 8
    243   %call = call double @ceil(double %0) #2
    244 ;pic:	lw	${{[0-9]+}}, %call16(ceil)(${{[0-9]+}})
    245 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    246   store double %call, double* @yd, align 8
    247   ret void
    248 }
    249 
    250 ; Function Attrs: nounwind readnone
    251 declare double @ceil(double) #1
    252 
    253 ; Function Attrs: nounwind
    254 define void @foo19() #0 {
    255 entry:
    256   %0 = load float* @x, align 4
    257   %call = call float @rintf(float %0) #2
    258 ;pic:	lw	${{[0-9]+}}, %call16(rintf)(${{[0-9]+}})
    259 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    260   store float %call, float* @y, align 4
    261   ret void
    262 }
    263 
    264 ; Function Attrs: nounwind readnone
    265 declare float @rintf(float) #1
    266 
    267 ; Function Attrs: nounwind
    268 define void @foo20() #0 {
    269 entry:
    270   %0 = load double* @xd, align 8
    271   %call = call double @rint(double %0) #2
    272 ;pic:	lw	${{[0-9]+}}, %call16(rint)(${{[0-9]+}})
    273 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    274   store double %call, double* @yd, align 8
    275   ret void
    276 }
    277 
    278 ; Function Attrs: nounwind readnone
    279 declare double @rint(double) #1
    280 
    281 ; Function Attrs: nounwind
    282 define void @foo21() #0 {
    283 entry:
    284   %0 = load float* @x, align 4
    285   %call = call float @truncf(float %0) #2
    286 ;pic:	lw	${{[0-9]+}}, %call16(truncf)(${{[0-9]+}})
    287 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    288   store float %call, float* @y, align 4
    289   ret void
    290 }
    291 
    292 ; Function Attrs: nounwind readnone
    293 declare float @truncf(float) #1
    294 
    295 ; Function Attrs: nounwind
    296 define void @foo22() #0 {
    297 entry:
    298   %0 = load double* @xd, align 8
    299   %call = call double @trunc(double %0) #2
    300 ;pic:	lw	${{[0-9]+}}, %call16(trunc)(${{[0-9]+}})
    301 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    302   store double %call, double* @yd, align 8
    303   ret void
    304 }
    305 
    306 ; Function Attrs: nounwind readnone
    307 declare double @trunc(double) #1
    308 
    309 ; Function Attrs: nounwind
    310 define void @foo23() #0 {
    311 entry:
    312   %0 = load float* @x, align 4
    313   %call = call float @log2f(float %0) #3
    314 ;pic:	lw	${{[0-9]+}}, %call16(log2f)(${{[0-9]+}})
    315 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    316   store float %call, float* @y, align 4
    317   ret void
    318 }
    319 
    320 ; Function Attrs: nounwind
    321 declare float @log2f(float) #0
    322 
    323 ; Function Attrs: nounwind
    324 define void @foo24() #0 {
    325 entry:
    326   %0 = load double* @xd, align 8
    327   %call = call double @log2(double %0) #3
    328 ;pic:	lw	${{[0-9]+}}, %call16(log2)(${{[0-9]+}})
    329 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    330   store double %call, double* @yd, align 8
    331   ret void
    332 }
    333 
    334 ; Function Attrs: nounwind
    335 declare double @log2(double) #0
    336 
    337 ; Function Attrs: nounwind
    338 define void @foo25() #0 {
    339 entry:
    340   %0 = load float* @x, align 4
    341   %call = call float @exp2f(float %0) #3
    342 ;pic:	lw	${{[0-9]+}}, %call16(exp2f)(${{[0-9]+}})
    343 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    344   store float %call, float* @y, align 4
    345   ret void
    346 }
    347 
    348 ; Function Attrs: nounwind
    349 declare float @exp2f(float) #0
    350 
    351 ; Function Attrs: nounwind
    352 define void @foo26() #0 {
    353 entry:
    354   %0 = load double* @xd, align 8
    355   %call = call double @exp2(double %0) #3
    356 ;pic:	lw	${{[0-9]+}}, %call16(exp2)(${{[0-9]+}})
    357 ;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    358   store double %call, double* @yd, align 8
    359   ret void
    360 }
    361 
    362 ; Function Attrs: nounwind
    363 declare double @exp2(double) #0
    364 
    365 attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="true" }
    366 attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="true" }
    367 attributes #2 = { nounwind readnone }
    368 attributes #3 = { nounwind }
    369