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 15define void @foo1() #0 { 16entry: 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 25declare float @copysignf(float, float) #1 26 27; Function Attrs: nounwind 28define void @foo2() #0 { 29entry: 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 38define void @foo3() #0 { 39entry: 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 49declare double @copysign(double, double) #1 50 51; Function Attrs: nounwind 52define void @foo4() #0 { 53entry: 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 62define void @foo5() #0 { 63entry: 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 71declare float @fabsf(float) #1 72 73; Function Attrs: nounwind 74define void @foo6() #0 { 75entry: 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 83declare double @fabs(double) #1 84 85; Function Attrs: nounwind 86define void @foo7() #0 { 87entry: 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 97declare float @sinf(float) #0 98 99; Function Attrs: nounwind 100define void @foo8() #0 { 101entry: 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 111declare double @sin(double) #0 112 113; Function Attrs: nounwind 114define void @foo9() #0 { 115entry: 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 125declare float @cosf(float) #0 126 127; Function Attrs: nounwind 128define void @foo10() #0 { 129entry: 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 139declare double @cos(double) #0 140 141; Function Attrs: nounwind 142define void @foo11() #0 { 143entry: 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 153declare float @sqrtf(float) #0 154 155; Function Attrs: nounwind 156define void @foo12() #0 { 157entry: 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 167declare double @sqrt(double) #0 168 169; Function Attrs: nounwind 170define void @foo13() #0 { 171entry: 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 181declare float @floorf(float) #1 182 183; Function Attrs: nounwind 184define void @foo14() #0 { 185entry: 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 195declare double @floor(double) #1 196 197; Function Attrs: nounwind 198define void @foo15() #0 { 199entry: 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 209declare float @nearbyintf(float) #1 210 211; Function Attrs: nounwind 212define void @foo16() #0 { 213entry: 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 223declare double @nearbyint(double) #1 224 225; Function Attrs: nounwind 226define void @foo17() #0 { 227entry: 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 237declare float @ceilf(float) #1 238 239; Function Attrs: nounwind 240define void @foo18() #0 { 241entry: 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 251declare double @ceil(double) #1 252 253; Function Attrs: nounwind 254define void @foo19() #0 { 255entry: 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 265declare float @rintf(float) #1 266 267; Function Attrs: nounwind 268define void @foo20() #0 { 269entry: 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 279declare double @rint(double) #1 280 281; Function Attrs: nounwind 282define void @foo21() #0 { 283entry: 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 293declare float @truncf(float) #1 294 295; Function Attrs: nounwind 296define void @foo22() #0 { 297entry: 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 307declare double @trunc(double) #1 308 309; Function Attrs: nounwind 310define void @foo23() #0 { 311entry: 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 321declare float @log2f(float) #0 322 323; Function Attrs: nounwind 324define void @foo24() #0 { 325entry: 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 335declare double @log2(double) #0 336 337; Function Attrs: nounwind 338define void @foo25() #0 { 339entry: 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 349declare float @exp2f(float) #0 350 351; Function Attrs: nounwind 352define void @foo26() #0 { 353entry: 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 363declare double @exp2(double) #0 364 365attributes #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" } 366attributes #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" } 367attributes #2 = { nounwind readnone } 368attributes #3 = { nounwind } 369