@@ -279,10 +279,7 @@ define <2 x double> @signbits_ashr_concat_ashr_extract_sitofp(<2 x i64> %a0, <4
279
279
define float @signbits_ashr_sext_sextinreg_and_extract_sitofp (<2 x i64 > %a0 , <2 x i64 > %a1 , i32 %a2 ) nounwind {
280
280
; X32-LABEL: signbits_ashr_sext_sextinreg_and_extract_sitofp:
281
281
; X32: # BB#0:
282
- ; X32-NEXT: pushl %ebp
283
- ; X32-NEXT: movl %esp, %ebp
284
- ; X32-NEXT: andl $-8, %esp
285
- ; X32-NEXT: subl $16, %esp
282
+ ; X32-NEXT: pushl %eax
286
283
; X32-NEXT: vmovdqa {{.*#+}} xmm2 = [0,2147483648,0,2147483648]
287
284
; X32-NEXT: vpsrlq $60, %xmm2, %xmm3
288
285
; X32-NEXT: vpsrlq $61, %xmm2, %xmm2
@@ -292,7 +289,7 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
292
289
; X32-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]
293
290
; X32-NEXT: vpxor %xmm2, %xmm0, %xmm0
294
291
; X32-NEXT: vpsubq %xmm2, %xmm0, %xmm0
295
- ; X32-NEXT: movl 8(%ebp ), %eax
292
+ ; X32-NEXT: movl {{[0-9]+}}(%esp ), %eax
296
293
; X32-NEXT: vpinsrd $0, %eax, %xmm1, %xmm1
297
294
; X32-NEXT: sarl $31, %eax
298
295
; X32-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
@@ -301,12 +298,11 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
301
298
; X32-NEXT: vpsrlq $20, %xmm1, %xmm1
302
299
; X32-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
303
300
; X32-NEXT: vpand %xmm1, %xmm0, %xmm0
304
- ; X32-NEXT: vmovq %xmm0, {{[0-9]+}}(%esp)
305
- ; X32-NEXT: fildll {{[0-9]+}}(%esp)
306
- ; X32-NEXT: fstps {{[0-9]+}}(%esp)
307
- ; X32-NEXT: flds {{[0-9]+}}(%esp)
308
- ; X32-NEXT: movl %ebp, %esp
309
- ; X32-NEXT: popl %ebp
301
+ ; X32-NEXT: vmovd %xmm0, %eax
302
+ ; X32-NEXT: vcvtsi2ssl %eax, %xmm4, %xmm0
303
+ ; X32-NEXT: vmovss %xmm0, (%esp)
304
+ ; X32-NEXT: flds (%esp)
305
+ ; X32-NEXT: popl %eax
310
306
; X32-NEXT: retl
311
307
;
312
308
; X64-LABEL: signbits_ashr_sext_sextinreg_and_extract_sitofp:
@@ -325,7 +321,7 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
325
321
; X64-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
326
322
; X64-NEXT: vpand %xmm1, %xmm0, %xmm0
327
323
; X64-NEXT: vmovq %xmm0, %rax
328
- ; X64-NEXT: vcvtsi2ssq %rax , %xmm3, %xmm0
324
+ ; X64-NEXT: vcvtsi2ssl %eax , %xmm3, %xmm0
329
325
; X64-NEXT: retq
330
326
%1 = ashr <2 x i64 > %a0 , <i64 61 , i64 60 >
331
327
%2 = sext i32 %a2 to i64
@@ -341,10 +337,7 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
341
337
define float @signbits_ashr_sextvecinreg_bitops_extract_sitofp (<2 x i64 > %a0 , <4 x i32 > %a1 ) nounwind {
342
338
; X32-LABEL: signbits_ashr_sextvecinreg_bitops_extract_sitofp:
343
339
; X32: # BB#0:
344
- ; X32-NEXT: pushl %ebp
345
- ; X32-NEXT: movl %esp, %ebp
346
- ; X32-NEXT: andl $-8, %esp
347
- ; X32-NEXT: subl $16, %esp
340
+ ; X32-NEXT: pushl %eax
348
341
; X32-NEXT: vmovdqa {{.*#+}} xmm2 = [0,2147483648,0,2147483648]
349
342
; X32-NEXT: vpsrlq $60, %xmm2, %xmm3
350
343
; X32-NEXT: vpsrlq $61, %xmm2, %xmm2
@@ -358,12 +351,11 @@ define float @signbits_ashr_sextvecinreg_bitops_extract_sitofp(<2 x i64> %a0, <4
358
351
; X32-NEXT: vpand %xmm1, %xmm0, %xmm2
359
352
; X32-NEXT: vpor %xmm1, %xmm2, %xmm1
360
353
; X32-NEXT: vpxor %xmm0, %xmm1, %xmm0
361
- ; X32-NEXT: vmovq %xmm0, {{[0-9]+}}(%esp)
362
- ; X32-NEXT: fildll {{[0-9]+}}(%esp)
363
- ; X32-NEXT: fstps {{[0-9]+}}(%esp)
364
- ; X32-NEXT: flds {{[0-9]+}}(%esp)
365
- ; X32-NEXT: movl %ebp, %esp
366
- ; X32-NEXT: popl %ebp
354
+ ; X32-NEXT: vmovd %xmm0, %eax
355
+ ; X32-NEXT: vcvtsi2ssl %eax, %xmm4, %xmm0
356
+ ; X32-NEXT: vmovss %xmm0, (%esp)
357
+ ; X32-NEXT: flds (%esp)
358
+ ; X32-NEXT: popl %eax
367
359
; X32-NEXT: retl
368
360
;
369
361
; X64-LABEL: signbits_ashr_sextvecinreg_bitops_extract_sitofp:
@@ -379,7 +371,7 @@ define float @signbits_ashr_sextvecinreg_bitops_extract_sitofp(<2 x i64> %a0, <4
379
371
; X64-NEXT: vpor %xmm1, %xmm2, %xmm1
380
372
; X64-NEXT: vpxor %xmm0, %xmm1, %xmm0
381
373
; X64-NEXT: vmovq %xmm0, %rax
382
- ; X64-NEXT: vcvtsi2ssq %rax , %xmm3, %xmm0
374
+ ; X64-NEXT: vcvtsi2ssl %eax , %xmm3, %xmm0
383
375
; X64-NEXT: retq
384
376
%1 = ashr <2 x i64 > %a0 , <i64 61 , i64 60 >
385
377
%2 = shufflevector <4 x i32 > %a1 , <4 x i32 > undef , <2 x i32 > <i32 0 , i32 1 >
0 commit comments