[X86] X86DAGToDAGISel - attempt to merge XMM/YMM loads with YMM/ZMM loads of the...
[llvm-project.git] / llvm / test / CodeGen / PowerPC / pow-025-075-nointrinsic-scalar-mass-fast.ll
blobc43bccc3f239869a6d52c5ebca0c434c716ab1b8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
3 ; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
5 declare float @powf (float, float);
6 declare double @pow (double, double);
7 declare float @__powf_finite (float, float);
8 declare double @__pow_finite (double, double);
10 ; fast-math powf with 0.25
11 define float @powf_f32_fast025(float %a) #1 {
13 ; CHECK-LNX-LABEL: powf_f32_fast025:
14 ; CHECK-LNX:       # %bb.0: # %entry
15 ; CHECK-LNX-NEXT:    mflr 0
16 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
17 ; CHECK-LNX-NEXT:    std 0, 48(1)
18 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
19 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
20 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI0_0@toc@ha
21 ; CHECK-LNX-NEXT:    lfs 2, .LCPI0_0@toc@l(3)
22 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
23 ; CHECK-LNX-NEXT:    nop
24 ; CHECK-LNX-NEXT:    addi 1, 1, 32
25 ; CHECK-LNX-NEXT:    ld 0, 16(1)
26 ; CHECK-LNX-NEXT:    mtlr 0
27 ; CHECK-LNX-NEXT:    blr
29 ; CHECK-AIX-LABEL: powf_f32_fast025:
30 ; CHECK-AIX:       # %bb.0: # %entry
31 ; CHECK-AIX-NEXT:    mflr 0
32 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
33 ; CHECK-AIX-NEXT:    lwz 3, L..C0(2) # %const.0
34 ; CHECK-AIX-NEXT:    stw 0, 72(1)
35 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
36 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
37 ; CHECK-AIX-NEXT:    nop
38 ; CHECK-AIX-NEXT:    addi 1, 1, 64
39 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
40 ; CHECK-AIX-NEXT:    mtlr 0
41 ; CHECK-AIX-NEXT:    blr
42 entry:
43   %call = tail call nnan ninf afn nsz float @powf(float %a, float 2.500000e-01)
44   ret float %call
47 ; fast-math pow with 0.25
48 define double @pow_f64_fast025(double %a) #1 {
50 ; CHECK-LNX-LABEL: pow_f64_fast025:
51 ; CHECK-LNX:       # %bb.0: # %entry
52 ; CHECK-LNX-NEXT:    mflr 0
53 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
54 ; CHECK-LNX-NEXT:    std 0, 48(1)
55 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
56 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
57 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI1_0@toc@ha
58 ; CHECK-LNX-NEXT:    lfs 2, .LCPI1_0@toc@l(3)
59 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
60 ; CHECK-LNX-NEXT:    nop
61 ; CHECK-LNX-NEXT:    addi 1, 1, 32
62 ; CHECK-LNX-NEXT:    ld 0, 16(1)
63 ; CHECK-LNX-NEXT:    mtlr 0
64 ; CHECK-LNX-NEXT:    blr
66 ; CHECK-AIX-LABEL: pow_f64_fast025:
67 ; CHECK-AIX:       # %bb.0: # %entry
68 ; CHECK-AIX-NEXT:    mflr 0
69 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
70 ; CHECK-AIX-NEXT:    lwz 3, L..C1(2) # %const.0
71 ; CHECK-AIX-NEXT:    stw 0, 72(1)
72 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
73 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
74 ; CHECK-AIX-NEXT:    nop
75 ; CHECK-AIX-NEXT:    addi 1, 1, 64
76 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
77 ; CHECK-AIX-NEXT:    mtlr 0
78 ; CHECK-AIX-NEXT:    blr
79 entry:
80   %call = tail call nnan ninf afn nsz double @pow(double %a, double 2.500000e-01)
81   ret double %call
84 ; fast-math powf with 0.75
85 define float @powf_f32_fast075(float %a) #1 {
87 ; CHECK-LNX-LABEL: powf_f32_fast075:
88 ; CHECK-LNX:       # %bb.0: # %entry
89 ; CHECK-LNX-NEXT:    mflr 0
90 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
91 ; CHECK-LNX-NEXT:    std 0, 48(1)
92 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
93 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
94 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI2_0@toc@ha
95 ; CHECK-LNX-NEXT:    lfs 2, .LCPI2_0@toc@l(3)
96 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
97 ; CHECK-LNX-NEXT:    nop
98 ; CHECK-LNX-NEXT:    addi 1, 1, 32
99 ; CHECK-LNX-NEXT:    ld 0, 16(1)
100 ; CHECK-LNX-NEXT:    mtlr 0
101 ; CHECK-LNX-NEXT:    blr
103 ; CHECK-AIX-LABEL: powf_f32_fast075:
104 ; CHECK-AIX:       # %bb.0: # %entry
105 ; CHECK-AIX-NEXT:    mflr 0
106 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
107 ; CHECK-AIX-NEXT:    lwz 3, L..C2(2) # %const.0
108 ; CHECK-AIX-NEXT:    stw 0, 72(1)
109 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
110 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
111 ; CHECK-AIX-NEXT:    nop
112 ; CHECK-AIX-NEXT:    addi 1, 1, 64
113 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
114 ; CHECK-AIX-NEXT:    mtlr 0
115 ; CHECK-AIX-NEXT:    blr
116 entry:
117   %call = tail call nnan ninf afn nsz float @powf(float %a, float 7.500000e-01)
118   ret float %call
121 ; fast-math pow with 0.75
122 define double @pow_f64_fast075(double %a) #1 {
124 ; CHECK-LNX-LABEL: pow_f64_fast075:
125 ; CHECK-LNX:       # %bb.0: # %entry
126 ; CHECK-LNX-NEXT:    mflr 0
127 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
128 ; CHECK-LNX-NEXT:    std 0, 48(1)
129 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
130 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
131 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI3_0@toc@ha
132 ; CHECK-LNX-NEXT:    lfs 2, .LCPI3_0@toc@l(3)
133 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
134 ; CHECK-LNX-NEXT:    nop
135 ; CHECK-LNX-NEXT:    addi 1, 1, 32
136 ; CHECK-LNX-NEXT:    ld 0, 16(1)
137 ; CHECK-LNX-NEXT:    mtlr 0
138 ; CHECK-LNX-NEXT:    blr
140 ; CHECK-AIX-LABEL: pow_f64_fast075:
141 ; CHECK-AIX:       # %bb.0: # %entry
142 ; CHECK-AIX-NEXT:    mflr 0
143 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
144 ; CHECK-AIX-NEXT:    lwz 3, L..C3(2) # %const.0
145 ; CHECK-AIX-NEXT:    stw 0, 72(1)
146 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
147 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
148 ; CHECK-AIX-NEXT:    nop
149 ; CHECK-AIX-NEXT:    addi 1, 1, 64
150 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
151 ; CHECK-AIX-NEXT:    mtlr 0
152 ; CHECK-AIX-NEXT:    blr
153 entry:
154   %call = tail call nnan ninf afn nsz double @pow(double %a, double 7.500000e-01)
155   ret double %call
158 ; fast-math powf with 0.50
159 define float @powf_f32_fast050(float %a) #1 {
161 ; CHECK-LNX-LABEL: powf_f32_fast050:
162 ; CHECK-LNX:       # %bb.0: # %entry
163 ; CHECK-LNX-NEXT:    mflr 0
164 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
165 ; CHECK-LNX-NEXT:    std 0, 48(1)
166 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
167 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
168 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI4_0@toc@ha
169 ; CHECK-LNX-NEXT:    lfs 2, .LCPI4_0@toc@l(3)
170 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
171 ; CHECK-LNX-NEXT:    nop
172 ; CHECK-LNX-NEXT:    addi 1, 1, 32
173 ; CHECK-LNX-NEXT:    ld 0, 16(1)
174 ; CHECK-LNX-NEXT:    mtlr 0
175 ; CHECK-LNX-NEXT:    blr
177 ; CHECK-AIX-LABEL: powf_f32_fast050:
178 ; CHECK-AIX:       # %bb.0: # %entry
179 ; CHECK-AIX-NEXT:    mflr 0
180 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
181 ; CHECK-AIX-NEXT:    lwz 3, L..C4(2) # %const.0
182 ; CHECK-AIX-NEXT:    stw 0, 72(1)
183 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
184 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
185 ; CHECK-AIX-NEXT:    nop
186 ; CHECK-AIX-NEXT:    addi 1, 1, 64
187 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
188 ; CHECK-AIX-NEXT:    mtlr 0
189 ; CHECK-AIX-NEXT:    blr
190 entry:
191   %call = tail call nnan ninf afn nsz float @powf(float %a, float 5.000000e-01)
192   ret float %call
195 ; fast-math pow with 0.50
196 define double @pow_f64_fast050(double %a) #1 {
198 ; CHECK-LNX-LABEL: pow_f64_fast050:
199 ; CHECK-LNX:       # %bb.0: # %entry
200 ; CHECK-LNX-NEXT:    mflr 0
201 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
202 ; CHECK-LNX-NEXT:    std 0, 48(1)
203 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
204 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
205 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI5_0@toc@ha
206 ; CHECK-LNX-NEXT:    lfs 2, .LCPI5_0@toc@l(3)
207 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
208 ; CHECK-LNX-NEXT:    nop
209 ; CHECK-LNX-NEXT:    addi 1, 1, 32
210 ; CHECK-LNX-NEXT:    ld 0, 16(1)
211 ; CHECK-LNX-NEXT:    mtlr 0
212 ; CHECK-LNX-NEXT:    blr
214 ; CHECK-AIX-LABEL: pow_f64_fast050:
215 ; CHECK-AIX:       # %bb.0: # %entry
216 ; CHECK-AIX-NEXT:    mflr 0
217 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
218 ; CHECK-AIX-NEXT:    lwz 3, L..C5(2) # %const.0
219 ; CHECK-AIX-NEXT:    stw 0, 72(1)
220 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
221 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
222 ; CHECK-AIX-NEXT:    nop
223 ; CHECK-AIX-NEXT:    addi 1, 1, 64
224 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
225 ; CHECK-AIX-NEXT:    mtlr 0
226 ; CHECK-AIX-NEXT:    blr
227 entry:
228   %call = tail call nnan ninf afn nsz double @pow(double %a, double 5.000000e-01)
229   ret double %call
232 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
234 ; fast-math __powf_finite with 0.25
235 define float @__powf_finite_f32_fast025(float %a) #1 {
237 ; CHECK-LNX-LABEL: __powf_finite_f32_fast025:
238 ; CHECK-LNX:       # %bb.0: # %entry
239 ; CHECK-LNX-NEXT:    mflr 0
240 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
241 ; CHECK-LNX-NEXT:    std 0, 48(1)
242 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
243 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
244 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI6_0@toc@ha
245 ; CHECK-LNX-NEXT:    lfs 2, .LCPI6_0@toc@l(3)
246 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
247 ; CHECK-LNX-NEXT:    nop
248 ; CHECK-LNX-NEXT:    addi 1, 1, 32
249 ; CHECK-LNX-NEXT:    ld 0, 16(1)
250 ; CHECK-LNX-NEXT:    mtlr 0
251 ; CHECK-LNX-NEXT:    blr
253 ; CHECK-AIX-LABEL: __powf_finite_f32_fast025:
254 ; CHECK-AIX:       # %bb.0: # %entry
255 ; CHECK-AIX-NEXT:    mflr 0
256 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
257 ; CHECK-AIX-NEXT:    lwz 3, L..C6(2) # %const.0
258 ; CHECK-AIX-NEXT:    stw 0, 72(1)
259 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
260 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
261 ; CHECK-AIX-NEXT:    nop
262 ; CHECK-AIX-NEXT:    addi 1, 1, 64
263 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
264 ; CHECK-AIX-NEXT:    mtlr 0
265 ; CHECK-AIX-NEXT:    blr
266 entry:
267   %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 2.500000e-01)
268   ret float %call
271 ; fast-math __pow_finite with 0.25
272 define double @__pow_finite_f64_fast025(double %a) #1 {
274 ; CHECK-LNX-LABEL: __pow_finite_f64_fast025:
275 ; CHECK-LNX:       # %bb.0: # %entry
276 ; CHECK-LNX-NEXT:    mflr 0
277 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
278 ; CHECK-LNX-NEXT:    std 0, 48(1)
279 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
280 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
281 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI7_0@toc@ha
282 ; CHECK-LNX-NEXT:    lfs 2, .LCPI7_0@toc@l(3)
283 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
284 ; CHECK-LNX-NEXT:    nop
285 ; CHECK-LNX-NEXT:    addi 1, 1, 32
286 ; CHECK-LNX-NEXT:    ld 0, 16(1)
287 ; CHECK-LNX-NEXT:    mtlr 0
288 ; CHECK-LNX-NEXT:    blr
290 ; CHECK-AIX-LABEL: __pow_finite_f64_fast025:
291 ; CHECK-AIX:       # %bb.0: # %entry
292 ; CHECK-AIX-NEXT:    mflr 0
293 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
294 ; CHECK-AIX-NEXT:    lwz 3, L..C7(2) # %const.0
295 ; CHECK-AIX-NEXT:    stw 0, 72(1)
296 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
297 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
298 ; CHECK-AIX-NEXT:    nop
299 ; CHECK-AIX-NEXT:    addi 1, 1, 64
300 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
301 ; CHECK-AIX-NEXT:    mtlr 0
302 ; CHECK-AIX-NEXT:    blr
303 entry:
304   %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 2.500000e-01)
305   ret double %call
308 ; fast-math __powf_finite with 0.75
309 define float @__powf_finite_f32_fast075(float %a) #1 {
311 ; CHECK-LNX-LABEL: __powf_finite_f32_fast075:
312 ; CHECK-LNX:       # %bb.0: # %entry
313 ; CHECK-LNX-NEXT:    mflr 0
314 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
315 ; CHECK-LNX-NEXT:    std 0, 48(1)
316 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
317 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
318 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI8_0@toc@ha
319 ; CHECK-LNX-NEXT:    lfs 2, .LCPI8_0@toc@l(3)
320 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
321 ; CHECK-LNX-NEXT:    nop
322 ; CHECK-LNX-NEXT:    addi 1, 1, 32
323 ; CHECK-LNX-NEXT:    ld 0, 16(1)
324 ; CHECK-LNX-NEXT:    mtlr 0
325 ; CHECK-LNX-NEXT:    blr
327 ; CHECK-AIX-LABEL: __powf_finite_f32_fast075:
328 ; CHECK-AIX:       # %bb.0: # %entry
329 ; CHECK-AIX-NEXT:    mflr 0
330 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
331 ; CHECK-AIX-NEXT:    lwz 3, L..C8(2) # %const.0
332 ; CHECK-AIX-NEXT:    stw 0, 72(1)
333 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
334 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
335 ; CHECK-AIX-NEXT:    nop
336 ; CHECK-AIX-NEXT:    addi 1, 1, 64
337 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
338 ; CHECK-AIX-NEXT:    mtlr 0
339 ; CHECK-AIX-NEXT:    blr
340 entry:
341   %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 7.500000e-01)
342   ret float %call
345 ; fast-math __pow_finite with 0.75
346 define double @__pow_finite_f64_fast075(double %a) #1 {
348 ; CHECK-LNX-LABEL: __pow_finite_f64_fast075:
349 ; CHECK-LNX:       # %bb.0: # %entry
350 ; CHECK-LNX-NEXT:    mflr 0
351 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
352 ; CHECK-LNX-NEXT:    std 0, 48(1)
353 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
354 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
355 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI9_0@toc@ha
356 ; CHECK-LNX-NEXT:    lfs 2, .LCPI9_0@toc@l(3)
357 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
358 ; CHECK-LNX-NEXT:    nop
359 ; CHECK-LNX-NEXT:    addi 1, 1, 32
360 ; CHECK-LNX-NEXT:    ld 0, 16(1)
361 ; CHECK-LNX-NEXT:    mtlr 0
362 ; CHECK-LNX-NEXT:    blr
364 ; CHECK-AIX-LABEL: __pow_finite_f64_fast075:
365 ; CHECK-AIX:       # %bb.0: # %entry
366 ; CHECK-AIX-NEXT:    mflr 0
367 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
368 ; CHECK-AIX-NEXT:    lwz 3, L..C9(2) # %const.0
369 ; CHECK-AIX-NEXT:    stw 0, 72(1)
370 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
371 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
372 ; CHECK-AIX-NEXT:    nop
373 ; CHECK-AIX-NEXT:    addi 1, 1, 64
374 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
375 ; CHECK-AIX-NEXT:    mtlr 0
376 ; CHECK-AIX-NEXT:    blr
377 entry:
378   %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 7.500000e-01)
379   ret double %call
382 ; fast-math __powf_finite with 0.50
383 define float @__powf_finite_f32_fast050(float %a) #1 {
385 ; CHECK-LNX-LABEL: __powf_finite_f32_fast050:
386 ; CHECK-LNX:       # %bb.0: # %entry
387 ; CHECK-LNX-NEXT:    mflr 0
388 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
389 ; CHECK-LNX-NEXT:    std 0, 48(1)
390 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
391 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
392 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI10_0@toc@ha
393 ; CHECK-LNX-NEXT:    lfs 2, .LCPI10_0@toc@l(3)
394 ; CHECK-LNX-NEXT:    bl __xl_powf_finite
395 ; CHECK-LNX-NEXT:    nop
396 ; CHECK-LNX-NEXT:    addi 1, 1, 32
397 ; CHECK-LNX-NEXT:    ld 0, 16(1)
398 ; CHECK-LNX-NEXT:    mtlr 0
399 ; CHECK-LNX-NEXT:    blr
401 ; CHECK-AIX-LABEL: __powf_finite_f32_fast050:
402 ; CHECK-AIX:       # %bb.0: # %entry
403 ; CHECK-AIX-NEXT:    mflr 0
404 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
405 ; CHECK-AIX-NEXT:    lwz 3, L..C10(2) # %const.0
406 ; CHECK-AIX-NEXT:    stw 0, 72(1)
407 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
408 ; CHECK-AIX-NEXT:    bl .__xl_powf_finite[PR]
409 ; CHECK-AIX-NEXT:    nop
410 ; CHECK-AIX-NEXT:    addi 1, 1, 64
411 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
412 ; CHECK-AIX-NEXT:    mtlr 0
413 ; CHECK-AIX-NEXT:    blr
414 entry:
415   %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 5.000000e-01)
416   ret float %call
419 ; fast-math __pow_finite with 0.50
420 define double @__pow_finite_f64_fast050(double %a) #1 {
422 ; CHECK-LNX-LABEL: __pow_finite_f64_fast050:
423 ; CHECK-LNX:       # %bb.0: # %entry
424 ; CHECK-LNX-NEXT:    mflr 0
425 ; CHECK-LNX-NEXT:    stdu 1, -32(1)
426 ; CHECK-LNX-NEXT:    std 0, 48(1)
427 ; CHECK-LNX-NEXT:    .cfi_def_cfa_offset 32
428 ; CHECK-LNX-NEXT:    .cfi_offset lr, 16
429 ; CHECK-LNX-NEXT:    addis 3, 2, .LCPI11_0@toc@ha
430 ; CHECK-LNX-NEXT:    lfs 2, .LCPI11_0@toc@l(3)
431 ; CHECK-LNX-NEXT:    bl __xl_pow_finite
432 ; CHECK-LNX-NEXT:    nop
433 ; CHECK-LNX-NEXT:    addi 1, 1, 32
434 ; CHECK-LNX-NEXT:    ld 0, 16(1)
435 ; CHECK-LNX-NEXT:    mtlr 0
436 ; CHECK-LNX-NEXT:    blr
438 ; CHECK-AIX-LABEL: __pow_finite_f64_fast050:
439 ; CHECK-AIX:       # %bb.0: # %entry
440 ; CHECK-AIX-NEXT:    mflr 0
441 ; CHECK-AIX-NEXT:    stwu 1, -64(1)
442 ; CHECK-AIX-NEXT:    lwz 3, L..C11(2) # %const.0
443 ; CHECK-AIX-NEXT:    stw 0, 72(1)
444 ; CHECK-AIX-NEXT:    lfs 2, 0(3)
445 ; CHECK-AIX-NEXT:    bl .__xl_pow_finite[PR]
446 ; CHECK-AIX-NEXT:    nop
447 ; CHECK-AIX-NEXT:    addi 1, 1, 64
448 ; CHECK-AIX-NEXT:    lwz 0, 8(1)
449 ; CHECK-AIX-NEXT:    mtlr 0
450 ; CHECK-AIX-NEXT:    blr
451 entry:
452   %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 5.000000e-01)
453   ret double %call
456 attributes #1 = { "approx-func-fp-math"="true" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" }