Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / CodeGen / X86 / extractelement-fp.ll
blob82d5a74b4e96dff71f42f60b9dd44534563c2521
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=avx2,fma | FileCheck %s
4 define float @fneg_v4f32(<4 x float> %x) nounwind {
5 ; CHECK-LABEL: fneg_v4f32:
6 ; CHECK:       # %bb.0:
7 ; CHECK-NEXT:    vbroadcastss {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
8 ; CHECK-NEXT:    vxorps %xmm1, %xmm0, %xmm0
9 ; CHECK-NEXT:    retq
10   %v = fneg <4 x float> %x
11   %r = extractelement <4 x float> %v, i32 0
12   ret float %r
15 define double @fneg_v4f64(<4 x double> %x) nounwind {
16 ; CHECK-LABEL: fneg_v4f64:
17 ; CHECK:       # %bb.0:
18 ; CHECK-NEXT:    vbroadcastsd {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
19 ; CHECK-NEXT:    vxorps %xmm1, %xmm0, %xmm0
20 ; CHECK-NEXT:    vzeroupper
21 ; CHECK-NEXT:    retq
22   %v = fneg <4 x double> %x
23   %r = extractelement <4 x double> %v, i32 0
24   ret double %r
27 define float @fadd_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
28 ; CHECK-LABEL: fadd_v4f32:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    vaddps %xmm1, %xmm0, %xmm0
31 ; CHECK-NEXT:    retq
32   %v = fadd <4 x float> %x, %y
33   %r = extractelement <4 x float> %v, i32 0
34   ret float %r
37 define double @fadd_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
38 ; CHECK-LABEL: fadd_v4f64:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    vaddpd %xmm1, %xmm0, %xmm0
41 ; CHECK-NEXT:    vzeroupper
42 ; CHECK-NEXT:    retq
43   %v = fadd <4 x double> %x, %y
44   %r = extractelement <4 x double> %v, i32 0
45   ret double %r
48 define float @fsub_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
49 ; CHECK-LABEL: fsub_v4f32:
50 ; CHECK:       # %bb.0:
51 ; CHECK-NEXT:    vsubps %xmm1, %xmm0, %xmm0
52 ; CHECK-NEXT:    retq
53   %v = fsub <4 x float> %x, %y
54   %r = extractelement <4 x float> %v, i32 0
55   ret float %r
58 define double @fsub_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
59 ; CHECK-LABEL: fsub_v4f64:
60 ; CHECK:       # %bb.0:
61 ; CHECK-NEXT:    vsubpd %xmm1, %xmm0, %xmm0
62 ; CHECK-NEXT:    vzeroupper
63 ; CHECK-NEXT:    retq
64   %v = fsub <4 x double> %x, %y
65   %r = extractelement <4 x double> %v, i32 0
66   ret double %r
69 define float @fmul_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
70 ; CHECK-LABEL: fmul_v4f32:
71 ; CHECK:       # %bb.0:
72 ; CHECK-NEXT:    vmulps %xmm1, %xmm0, %xmm0
73 ; CHECK-NEXT:    retq
74   %v = fmul <4 x float> %x, %y
75   %r = extractelement <4 x float> %v, i32 0
76   ret float %r
79 define double @fmul_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
80 ; CHECK-LABEL: fmul_v4f64:
81 ; CHECK:       # %bb.0:
82 ; CHECK-NEXT:    vmulpd %xmm1, %xmm0, %xmm0
83 ; CHECK-NEXT:    vzeroupper
84 ; CHECK-NEXT:    retq
85   %v = fmul <4 x double> %x, %y
86   %r = extractelement <4 x double> %v, i32 0
87   ret double %r
90 define float @fdiv_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
91 ; CHECK-LABEL: fdiv_v4f32:
92 ; CHECK:       # %bb.0:
93 ; CHECK-NEXT:    vdivps %xmm1, %xmm0, %xmm0
94 ; CHECK-NEXT:    retq
95   %v = fdiv <4 x float> %x, %y
96   %r = extractelement <4 x float> %v, i32 0
97   ret float %r
100 define double @fdiv_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
101 ; CHECK-LABEL: fdiv_v4f64:
102 ; CHECK:       # %bb.0:
103 ; CHECK-NEXT:    vdivpd %xmm1, %xmm0, %xmm0
104 ; CHECK-NEXT:    vzeroupper
105 ; CHECK-NEXT:    retq
106   %v = fdiv <4 x double> %x, %y
107   %r = extractelement <4 x double> %v, i32 0
108   ret double %r
111 define float @frem_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
112 ; CHECK-LABEL: frem_v4f32:
113 ; CHECK:       # %bb.0:
114 ; CHECK-NEXT:    jmp fmodf # TAILCALL
115   %v = frem <4 x float> %x, %y
116   %r = extractelement <4 x float> %v, i32 0
117   ret float %r
120 define double @frem_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
121 ; CHECK-LABEL: frem_v4f64:
122 ; CHECK:       # %bb.0:
123 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
124 ; CHECK-NEXT:    # kill: def $xmm1 killed $xmm1 killed $ymm1
125 ; CHECK-NEXT:    vzeroupper
126 ; CHECK-NEXT:    jmp fmod # TAILCALL
127   %v = frem <4 x double> %x, %y
128   %r = extractelement <4 x double> %v, i32 0
129   ret double %r
132 define float @fsqrt_v4f32(<4 x float> %x) nounwind {
133 ; CHECK-LABEL: fsqrt_v4f32:
134 ; CHECK:       # %bb.0:
135 ; CHECK-NEXT:    vsqrtps %xmm0, %xmm0
136 ; CHECK-NEXT:    retq
137   %v = call <4 x float> @llvm.sqrt.v4f32(<4 x float> %x)
138   %r = extractelement <4 x float> %v, i32 0
139   ret float %r
142 define double @fsqrt_v4f64(<4 x double> %x) nounwind {
143 ; CHECK-LABEL: fsqrt_v4f64:
144 ; CHECK:       # %bb.0:
145 ; CHECK-NEXT:    vsqrtpd %ymm0, %ymm0
146 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
147 ; CHECK-NEXT:    vzeroupper
148 ; CHECK-NEXT:    retq
149   %v = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %x)
150   %r = extractelement <4 x double> %v, i32 0
151   ret double %r
154 define float @fsin_v4f32(<4 x float> %x) nounwind {
155 ; CHECK-LABEL: fsin_v4f32:
156 ; CHECK:       # %bb.0:
157 ; CHECK-NEXT:    jmp sinf # TAILCALL
158   %v = call <4 x float> @llvm.sin.v4f32(<4 x float> %x)
159   %r = extractelement <4 x float> %v, i32 0
160   ret float %r
163 define double @fsin_v4f64(<4 x double> %x) nounwind {
164 ; CHECK-LABEL: fsin_v4f64:
165 ; CHECK:       # %bb.0:
166 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
167 ; CHECK-NEXT:    vzeroupper
168 ; CHECK-NEXT:    jmp sin # TAILCALL
169   %v = call <4 x double> @llvm.sin.v4f64(<4 x double> %x)
170   %r = extractelement <4 x double> %v, i32 0
171   ret double %r
174 define float @fma_v4f32(<4 x float> %x, <4 x float> %y, <4 x float> %z) nounwind {
175 ; CHECK-LABEL: fma_v4f32:
176 ; CHECK:       # %bb.0:
177 ; CHECK-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2
178 ; CHECK-NEXT:    retq
179   %v = call <4 x float> @llvm.fma.v4f32(<4 x float> %x, <4 x float> %y, <4 x float> %z)
180   %r = extractelement <4 x float> %v, i32 0
181   ret float %r
184 define double @fma_v4f64(<4 x double> %x, <4 x double> %y, <4 x double> %z) nounwind {
185 ; CHECK-LABEL: fma_v4f64:
186 ; CHECK:       # %bb.0:
187 ; CHECK-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2
188 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
189 ; CHECK-NEXT:    vzeroupper
190 ; CHECK-NEXT:    retq
191   %v = call <4 x double> @llvm.fma.v4f64(<4 x double> %x, <4 x double> %y, <4 x double> %z)
192   %r = extractelement <4 x double> %v, i32 0
193   ret double %r
196 define float @fabs_v4f32(<4 x float> %x) nounwind {
197 ; CHECK-LABEL: fabs_v4f32:
198 ; CHECK:       # %bb.0:
199 ; CHECK-NEXT:    vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]
200 ; CHECK-NEXT:    vandps %xmm1, %xmm0, %xmm0
201 ; CHECK-NEXT:    retq
202   %v = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
203   %r = extractelement <4 x float> %v, i32 0
204   ret float %r
207 define double @fabs_v4f64(<4 x double> %x) nounwind {
208 ; CHECK-LABEL: fabs_v4f64:
209 ; CHECK:       # %bb.0:
210 ; CHECK-NEXT:    vbroadcastsd {{.*#+}} ymm1 = [NaN,NaN,NaN,NaN]
211 ; CHECK-NEXT:    vandps %xmm1, %xmm0, %xmm0
212 ; CHECK-NEXT:    vzeroupper
213 ; CHECK-NEXT:    retq
214   %v = call <4 x double> @llvm.fabs.v4f64(<4 x double> %x)
215   %r = extractelement <4 x double> %v, i32 0
216   ret double %r
219 define float @fmaxnum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
220 ; CHECK-LABEL: fmaxnum_v4f32:
221 ; CHECK:       # %bb.0:
222 ; CHECK-NEXT:    vmaxps %xmm0, %xmm1, %xmm2
223 ; CHECK-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0
224 ; CHECK-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0
225 ; CHECK-NEXT:    retq
226   %v = call <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y)
227   %r = extractelement <4 x float> %v, i32 0
228   ret float %r
231 define double @fmaxnum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
232 ; CHECK-LABEL: fmaxnum_v4f64:
233 ; CHECK:       # %bb.0:
234 ; CHECK-NEXT:    vmaxpd %ymm0, %ymm1, %ymm2
235 ; CHECK-NEXT:    vcmpunordpd %ymm0, %ymm0, %ymm0
236 ; CHECK-NEXT:    vblendvpd %ymm0, %ymm1, %ymm2, %ymm0
237 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
238 ; CHECK-NEXT:    vzeroupper
239 ; CHECK-NEXT:    retq
240   %v = call <4 x double> @llvm.maxnum.v4f64(<4 x double> %x, <4 x double> %y)
241   %r = extractelement <4 x double> %v, i32 0
242   ret double %r
245 define float @fminnum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
246 ; CHECK-LABEL: fminnum_v4f32:
247 ; CHECK:       # %bb.0:
248 ; CHECK-NEXT:    vminps %xmm0, %xmm1, %xmm2
249 ; CHECK-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0
250 ; CHECK-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0
251 ; CHECK-NEXT:    retq
252   %v = call <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y)
253   %r = extractelement <4 x float> %v, i32 0
254   ret float %r
257 define double @fminnum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
258 ; CHECK-LABEL: fminnum_v4f64:
259 ; CHECK:       # %bb.0:
260 ; CHECK-NEXT:    vminpd %ymm0, %ymm1, %ymm2
261 ; CHECK-NEXT:    vcmpunordpd %ymm0, %ymm0, %ymm0
262 ; CHECK-NEXT:    vblendvpd %ymm0, %ymm1, %ymm2, %ymm0
263 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
264 ; CHECK-NEXT:    vzeroupper
265 ; CHECK-NEXT:    retq
266   %v = call <4 x double> @llvm.minnum.v4f64(<4 x double> %x, <4 x double> %y)
267   %r = extractelement <4 x double> %v, i32 0
268   ret double %r
271 ;define float @fmaximum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
272 ;  %v = call <4 x float> @llvm.maximum.v4f32(<4 x float> %x, <4 x float> %y)
273 ;  %r = extractelement <4 x float> %v, i32 0
274 ;  ret float %r
277 ;define double @fmaximum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
278 ;  %v = call <4 x double> @llvm.maximum.v4f64(<4 x double> %x, <4 x double> %y)
279 ;  %r = extractelement <4 x double> %v, i32 0
280 ;  ret double %r
283 ;define float @fminimum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
284 ;  %v = call <4 x float> @llvm.minimum.v4f32(<4 x float> %x, <4 x float> %y)
285 ;  %r = extractelement <4 x float> %v, i32 0
286 ;  ret float %r
289 ;define double @fminimum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
290 ;  %v = call <4 x double> @llvm.minimum.v4f64(<4 x double> %x, <4 x double> %y)
291 ;  %r = extractelement <4 x double> %v, i32 0
292 ;  ret double %r
295 define float @copysign_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
296 ; CHECK-LABEL: copysign_v4f32:
297 ; CHECK:       # %bb.0:
298 ; CHECK-NEXT:    vbroadcastss {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
299 ; CHECK-NEXT:    vandps %xmm2, %xmm1, %xmm1
300 ; CHECK-NEXT:    vbroadcastss {{.*#+}} xmm2 = [NaN,NaN,NaN,NaN]
301 ; CHECK-NEXT:    vandps %xmm2, %xmm0, %xmm0
302 ; CHECK-NEXT:    vorps %xmm1, %xmm0, %xmm0
303 ; CHECK-NEXT:    retq
304   %v = call <4 x float> @llvm.copysign.v4f32(<4 x float> %x, <4 x float> %y)
305   %r = extractelement <4 x float> %v, i32 0
306   ret float %r
309 define double @copysign_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
310 ; CHECK-LABEL: copysign_v4f64:
311 ; CHECK:       # %bb.0:
312 ; CHECK-NEXT:    vbroadcastsd {{.*#+}} ymm2 = [NaN,NaN,NaN,NaN]
313 ; CHECK-NEXT:    vbroadcastsd {{.*#+}} ymm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
314 ; CHECK-NEXT:    vandps %xmm3, %xmm1, %xmm1
315 ; CHECK-NEXT:    vandps %xmm2, %xmm0, %xmm0
316 ; CHECK-NEXT:    vorps %xmm1, %xmm0, %xmm0
317 ; CHECK-NEXT:    vzeroupper
318 ; CHECK-NEXT:    retq
319   %v = call <4 x double> @llvm.copysign.v4f64(<4 x double> %x, <4 x double> %y)
320   %r = extractelement <4 x double> %v, i32 0
321   ret double %r
324 define float @floor_v4f32(<4 x float> %x) nounwind {
325 ; CHECK-LABEL: floor_v4f32:
326 ; CHECK:       # %bb.0:
327 ; CHECK-NEXT:    vroundps $9, %xmm0, %xmm0
328 ; CHECK-NEXT:    retq
329   %v = call <4 x float> @llvm.floor.v4f32(<4 x float> %x)
330   %r = extractelement <4 x float> %v, i32 0
331   ret float %r
334 define double @floor_v4f64(<4 x double> %x) nounwind {
335 ; CHECK-LABEL: floor_v4f64:
336 ; CHECK:       # %bb.0:
337 ; CHECK-NEXT:    vroundpd $9, %ymm0, %ymm0
338 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
339 ; CHECK-NEXT:    vzeroupper
340 ; CHECK-NEXT:    retq
341   %v = call <4 x double> @llvm.floor.v4f64(<4 x double> %x)
342   %r = extractelement <4 x double> %v, i32 0
343   ret double %r
346 define float @ceil_v4f32(<4 x float> %x) nounwind {
347 ; CHECK-LABEL: ceil_v4f32:
348 ; CHECK:       # %bb.0:
349 ; CHECK-NEXT:    vroundps $10, %xmm0, %xmm0
350 ; CHECK-NEXT:    retq
351   %v = call <4 x float> @llvm.ceil.v4f32(<4 x float> %x)
352   %r = extractelement <4 x float> %v, i32 0
353   ret float %r
356 define double @ceil_v4f64(<4 x double> %x) nounwind {
357 ; CHECK-LABEL: ceil_v4f64:
358 ; CHECK:       # %bb.0:
359 ; CHECK-NEXT:    vroundpd $10, %ymm0, %ymm0
360 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
361 ; CHECK-NEXT:    vzeroupper
362 ; CHECK-NEXT:    retq
363   %v = call <4 x double> @llvm.ceil.v4f64(<4 x double> %x)
364   %r = extractelement <4 x double> %v, i32 0
365   ret double %r
368 define float @trunc_v4f32(<4 x float> %x) nounwind {
369 ; CHECK-LABEL: trunc_v4f32:
370 ; CHECK:       # %bb.0:
371 ; CHECK-NEXT:    vroundps $11, %xmm0, %xmm0
372 ; CHECK-NEXT:    retq
373   %v = call <4 x float> @llvm.trunc.v4f32(<4 x float> %x)
374   %r = extractelement <4 x float> %v, i32 0
375   ret float %r
378 define double @trunc_v4f64(<4 x double> %x) nounwind {
379 ; CHECK-LABEL: trunc_v4f64:
380 ; CHECK:       # %bb.0:
381 ; CHECK-NEXT:    vroundpd $11, %ymm0, %ymm0
382 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
383 ; CHECK-NEXT:    vzeroupper
384 ; CHECK-NEXT:    retq
385   %v = call <4 x double> @llvm.trunc.v4f64(<4 x double> %x)
386   %r = extractelement <4 x double> %v, i32 0
387   ret double %r
390 define float @rint_v4f32(<4 x float> %x) nounwind {
391 ; CHECK-LABEL: rint_v4f32:
392 ; CHECK:       # %bb.0:
393 ; CHECK-NEXT:    vroundps $4, %xmm0, %xmm0
394 ; CHECK-NEXT:    retq
395   %v = call <4 x float> @llvm.rint.v4f32(<4 x float> %x)
396   %r = extractelement <4 x float> %v, i32 0
397   ret float %r
400 define double @rint_v4f64(<4 x double> %x) nounwind {
401 ; CHECK-LABEL: rint_v4f64:
402 ; CHECK:       # %bb.0:
403 ; CHECK-NEXT:    vroundpd $4, %ymm0, %ymm0
404 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
405 ; CHECK-NEXT:    vzeroupper
406 ; CHECK-NEXT:    retq
407   %v = call <4 x double> @llvm.rint.v4f64(<4 x double> %x)
408   %r = extractelement <4 x double> %v, i32 0
409   ret double %r
412 define float @nearbyint_v4f32(<4 x float> %x) nounwind {
413 ; CHECK-LABEL: nearbyint_v4f32:
414 ; CHECK:       # %bb.0:
415 ; CHECK-NEXT:    vroundps $12, %xmm0, %xmm0
416 ; CHECK-NEXT:    retq
417   %v = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %x)
418   %r = extractelement <4 x float> %v, i32 0
419   ret float %r
422 define double @nearbyint_v4f64(<4 x double> %x) nounwind {
423 ; CHECK-LABEL: nearbyint_v4f64:
424 ; CHECK:       # %bb.0:
425 ; CHECK-NEXT:    vroundpd $12, %ymm0, %ymm0
426 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
427 ; CHECK-NEXT:    vzeroupper
428 ; CHECK-NEXT:    retq
429   %v = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %x)
430   %r = extractelement <4 x double> %v, i32 0
431   ret double %r
434 define float @round_v4f32(<4 x float> %x) nounwind {
435 ; CHECK-LABEL: round_v4f32:
436 ; CHECK:       # %bb.0:
437 ; CHECK-NEXT:    jmp roundf # TAILCALL
438   %v = call <4 x float> @llvm.round.v4f32(<4 x float> %x)
439   %r = extractelement <4 x float> %v, i32 0
440   ret float %r
443 define double @round_v4f64(<4 x double> %x) nounwind {
444 ; CHECK-LABEL: round_v4f64:
445 ; CHECK:       # %bb.0:
446 ; CHECK-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
447 ; CHECK-NEXT:    vzeroupper
448 ; CHECK-NEXT:    jmp round # TAILCALL
449   %v = call <4 x double> @llvm.round.v4f64(<4 x double> %x)
450   %r = extractelement <4 x double> %v, i32 0
451   ret double %r
454 declare <4 x float> @llvm.sqrt.v4f32(<4 x float>)
455 declare <4 x double> @llvm.sqrt.v4f64(<4 x double>)
456 declare <4 x float> @llvm.sin.v4f32(<4 x float>)
457 declare <4 x double> @llvm.sin.v4f64(<4 x double>)
458 declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
459 declare <4 x double> @llvm.fma.v4f64(<4 x double>, <4 x double>, <4 x double>)
460 declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
461 declare <4 x double> @llvm.fabs.v4f64(<4 x double>)
462 declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>)
463 declare <4 x double> @llvm.maxnum.v4f64(<4 x double>, <4 x double>)
464 declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>)
465 declare <4 x double> @llvm.minnum.v4f64(<4 x double>, <4 x double>)
466 declare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>)
467 declare <4 x double> @llvm.maximum.v4f64(<4 x double>, <4 x double>)
468 declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>)
469 declare <4 x double> @llvm.minimum.v4f64(<4 x double>, <4 x double>)
470 declare <4 x float> @llvm.copysign.v4f32(<4 x float>, <4 x float>)
471 declare <4 x double> @llvm.copysign.v4f64(<4 x double>, <4 x double>)
472 declare <4 x float> @llvm.floor.v4f32(<4 x float>)
473 declare <4 x double> @llvm.floor.v4f64(<4 x double>)
474 declare <4 x float> @llvm.ceil.v4f32(<4 x float>)
475 declare <4 x double> @llvm.ceil.v4f64(<4 x double>)
476 declare <4 x float> @llvm.trunc.v4f32(<4 x float>)
477 declare <4 x double> @llvm.trunc.v4f64(<4 x double>)
478 declare <4 x float> @llvm.rint.v4f32(<4 x float>)
479 declare <4 x double> @llvm.rint.v4f64(<4 x double>)
480 declare <4 x float> @llvm.nearbyint.v4f32(<4 x float>)
481 declare <4 x double> @llvm.nearbyint.v4f64(<4 x double>)
482 declare <4 x float> @llvm.round.v4f32(<4 x float>)
483 declare <4 x double> @llvm.round.v4f64(<4 x double>)