@@ -279,10 +279,7 @@ define <2 x double> @signbits_ashr_concat_ashr_extract_sitofp(<2 x i64> %a0, <4
279279define float @signbits_ashr_sext_sextinreg_and_extract_sitofp (<2 x i64 > %a0 , <2 x i64 > %a1 , i32 %a2 ) nounwind {
280280; X32-LABEL: signbits_ashr_sext_sextinreg_and_extract_sitofp:
281281; 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
286283; X32-NEXT: vmovdqa {{.*#+}} xmm2 = [0,2147483648,0,2147483648]
287284; X32-NEXT: vpsrlq $60, %xmm2, %xmm3
288285; X32-NEXT: vpsrlq $61, %xmm2, %xmm2
@@ -292,7 +289,7 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
292289; X32-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]
293290; X32-NEXT: vpxor %xmm2, %xmm0, %xmm0
294291; X32-NEXT: vpsubq %xmm2, %xmm0, %xmm0
295- ; X32-NEXT: movl 8(%ebp ), %eax
292+ ; X32-NEXT: movl {{[0-9]+}}(%esp ), %eax
296293; X32-NEXT: vpinsrd $0, %eax, %xmm1, %xmm1
297294; X32-NEXT: sarl $31, %eax
298295; 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
301298; X32-NEXT: vpsrlq $20, %xmm1, %xmm1
302299; X32-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
303300; 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
310306; X32-NEXT: retl
311307;
312308; 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
325321; X64-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
326322; X64-NEXT: vpand %xmm1, %xmm0, %xmm0
327323; X64-NEXT: vmovq %xmm0, %rax
328- ; X64-NEXT: vcvtsi2ssq %rax , %xmm3, %xmm0
324+ ; X64-NEXT: vcvtsi2ssl %eax , %xmm3, %xmm0
329325; X64-NEXT: retq
330326 %1 = ashr <2 x i64 > %a0 , <i64 61 , i64 60 >
331327 %2 = sext i32 %a2 to i64
@@ -341,10 +337,7 @@ define float @signbits_ashr_sext_sextinreg_and_extract_sitofp(<2 x i64> %a0, <2
341337define float @signbits_ashr_sextvecinreg_bitops_extract_sitofp (<2 x i64 > %a0 , <4 x i32 > %a1 ) nounwind {
342338; X32-LABEL: signbits_ashr_sextvecinreg_bitops_extract_sitofp:
343339; 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
348341; X32-NEXT: vmovdqa {{.*#+}} xmm2 = [0,2147483648,0,2147483648]
349342; X32-NEXT: vpsrlq $60, %xmm2, %xmm3
350343; X32-NEXT: vpsrlq $61, %xmm2, %xmm2
@@ -358,12 +351,11 @@ define float @signbits_ashr_sextvecinreg_bitops_extract_sitofp(<2 x i64> %a0, <4
358351; X32-NEXT: vpand %xmm1, %xmm0, %xmm2
359352; X32-NEXT: vpor %xmm1, %xmm2, %xmm1
360353; 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
367359; X32-NEXT: retl
368360;
369361; 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
379371; X64-NEXT: vpor %xmm1, %xmm2, %xmm1
380372; X64-NEXT: vpxor %xmm0, %xmm1, %xmm0
381373; X64-NEXT: vmovq %xmm0, %rax
382- ; X64-NEXT: vcvtsi2ssq %rax , %xmm3, %xmm0
374+ ; X64-NEXT: vcvtsi2ssl %eax , %xmm3, %xmm0
383375; X64-NEXT: retq
384376 %1 = ashr <2 x i64 > %a0 , <i64 61 , i64 60 >
385377 %2 = shufflevector <4 x i32 > %a1 , <4 x i32 > undef , <2 x i32 > <i32 0 , i32 1 >
0 commit comments