@@ -1311,36 +1311,32 @@ define dso_local void @fsub_32stack() nounwind {
1311
1311
; X86-SSE2-LABEL: fsub_32stack:
1312
1312
; X86-SSE2: # %bb.0:
1313
1313
; X86-SSE2-NEXT: pushl %eax
1314
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1315
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1316
- ; X86-SSE2-NEXT: subss %xmm0, %xmm1
1317
- ; X86-SSE2-NEXT: movss %xmm1, (%esp)
1314
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1315
+ ; X86-SSE2-NEXT: subss (%esp), %xmm0
1316
+ ; X86-SSE2-NEXT: movss %xmm0, (%esp)
1318
1317
; X86-SSE2-NEXT: popl %eax
1319
1318
; X86-SSE2-NEXT: retl
1320
1319
;
1321
1320
; X86-AVX-LABEL: fsub_32stack:
1322
1321
; X86-AVX: # %bb.0:
1323
1322
; X86-AVX-NEXT: pushl %eax
1324
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1325
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1326
- ; X86-AVX-NEXT: vsubss %xmm0, %xmm1, %xmm0
1323
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1324
+ ; X86-AVX-NEXT: vsubss (%esp), %xmm0, %xmm0
1327
1325
; X86-AVX-NEXT: vmovss %xmm0, (%esp)
1328
1326
; X86-AVX-NEXT: popl %eax
1329
1327
; X86-AVX-NEXT: retl
1330
1328
;
1331
1329
; X64-SSE-LABEL: fsub_32stack:
1332
1330
; X64-SSE: # %bb.0:
1333
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1334
- ; X64-SSE-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1335
- ; X64-SSE-NEXT: subss %xmm0, %xmm1
1336
- ; X64-SSE-NEXT: movss %xmm1, -{{[0-9]+}}(%rsp)
1331
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1332
+ ; X64-SSE-NEXT: subss -{{[0-9]+}}(%rsp), %xmm0
1333
+ ; X64-SSE-NEXT: movss %xmm0, -{{[0-9]+}}(%rsp)
1337
1334
; X64-SSE-NEXT: retq
1338
1335
;
1339
1336
; X64-AVX-LABEL: fsub_32stack:
1340
1337
; X64-AVX: # %bb.0:
1341
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1342
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1343
- ; X64-AVX-NEXT: vsubss %xmm0, %xmm1, %xmm0
1338
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
1339
+ ; X64-AVX-NEXT: vsubss -{{[0-9]+}}(%rsp), %xmm0, %xmm0
1344
1340
; X64-AVX-NEXT: vmovss %xmm0, -{{[0-9]+}}(%rsp)
1345
1341
; X64-AVX-NEXT: retq
1346
1342
%ptr = alloca i32 , align 4
@@ -1433,17 +1429,15 @@ define dso_local void @fsub_64stack() nounwind {
1433
1429
;
1434
1430
; X64-SSE-LABEL: fsub_64stack:
1435
1431
; X64-SSE: # %bb.0:
1436
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
1437
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
1438
- ; X64-SSE-NEXT: subsd %xmm0, %xmm1
1439
- ; X64-SSE-NEXT: movsd %xmm1, -{{[0-9]+}}(%rsp)
1432
+ ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
1433
+ ; X64-SSE-NEXT: subsd -{{[0-9]+}}(%rsp), %xmm0
1434
+ ; X64-SSE-NEXT: movsd %xmm0, -{{[0-9]+}}(%rsp)
1440
1435
; X64-SSE-NEXT: retq
1441
1436
;
1442
1437
; X64-AVX-LABEL: fsub_64stack:
1443
1438
; X64-AVX: # %bb.0:
1444
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
1445
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
1446
- ; X64-AVX-NEXT: vsubsd %xmm0, %xmm1, %xmm0
1439
+ ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
1440
+ ; X64-AVX-NEXT: vsubsd -{{[0-9]+}}(%rsp), %xmm0, %xmm0
1447
1441
; X64-AVX-NEXT: vmovsd %xmm0, -{{[0-9]+}}(%rsp)
1448
1442
; X64-AVX-NEXT: retq
1449
1443
%ptr = alloca i64 , align 8
@@ -1600,29 +1594,27 @@ define dso_local void @fmul_32r(ptr %loc, float %val) nounwind {
1600
1594
; X86-SSE2: # %bb.0:
1601
1595
; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1602
1596
; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1603
- ; X86-SSE2-NEXT: mulss {{[0-9]+}}(%esp ), %xmm0
1597
+ ; X86-SSE2-NEXT: mulss (%eax ), %xmm0
1604
1598
; X86-SSE2-NEXT: movss %xmm0, (%eax)
1605
1599
; X86-SSE2-NEXT: retl
1606
1600
;
1607
1601
; X86-AVX-LABEL: fmul_32r:
1608
1602
; X86-AVX: # %bb.0:
1609
1603
; X86-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
1610
1604
; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1611
- ; X86-AVX-NEXT: vmulss {{[0-9]+}}(%esp ), %xmm0, %xmm0
1605
+ ; X86-AVX-NEXT: vmulss (%eax ), %xmm0, %xmm0
1612
1606
; X86-AVX-NEXT: vmovss %xmm0, (%eax)
1613
1607
; X86-AVX-NEXT: retl
1614
1608
;
1615
1609
; X64-SSE-LABEL: fmul_32r:
1616
1610
; X64-SSE: # %bb.0:
1617
- ; X64-SSE-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1618
- ; X64-SSE-NEXT: mulss %xmm0, %xmm1
1619
- ; X64-SSE-NEXT: movss %xmm1, (%rdi)
1611
+ ; X64-SSE-NEXT: mulss (%rdi), %xmm0
1612
+ ; X64-SSE-NEXT: movss %xmm0, (%rdi)
1620
1613
; X64-SSE-NEXT: retq
1621
1614
;
1622
1615
; X64-AVX-LABEL: fmul_32r:
1623
1616
; X64-AVX: # %bb.0:
1624
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1625
- ; X64-AVX-NEXT: vmulss %xmm0, %xmm1, %xmm0
1617
+ ; X64-AVX-NEXT: vmulss (%rdi), %xmm0, %xmm0
1626
1618
; X64-AVX-NEXT: vmovss %xmm0, (%rdi)
1627
1619
; X64-AVX-NEXT: retq
1628
1620
%1 = load atomic i32 , ptr %loc seq_cst , align 4
@@ -1716,15 +1708,13 @@ define dso_local void @fmul_64r(ptr %loc, double %val) nounwind {
1716
1708
;
1717
1709
; X64-SSE-LABEL: fmul_64r:
1718
1710
; X64-SSE: # %bb.0:
1719
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
1720
- ; X64-SSE-NEXT: mulsd %xmm0, %xmm1
1721
- ; X64-SSE-NEXT: movsd %xmm1, (%rdi)
1711
+ ; X64-SSE-NEXT: mulsd (%rdi), %xmm0
1712
+ ; X64-SSE-NEXT: movsd %xmm0, (%rdi)
1722
1713
; X64-SSE-NEXT: retq
1723
1714
;
1724
1715
; X64-AVX-LABEL: fmul_64r:
1725
1716
; X64-AVX: # %bb.0:
1726
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
1727
- ; X64-AVX-NEXT: vmulsd %xmm0, %xmm1, %xmm0
1717
+ ; X64-AVX-NEXT: vmulsd (%rdi), %xmm0, %xmm0
1728
1718
; X64-AVX-NEXT: vmovsd %xmm0, (%rdi)
1729
1719
; X64-AVX-NEXT: retq
1730
1720
%1 = load atomic i64 , ptr %loc seq_cst , align 8
@@ -1765,29 +1755,29 @@ define dso_local void @fmul_32g() nounwind {
1765
1755
;
1766
1756
; X86-SSE2-LABEL: fmul_32g:
1767
1757
; X86-SSE2: # %bb.0:
1768
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1769
- ; X86-SSE2-NEXT: mulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0
1758
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1759
+ ; X86-SSE2-NEXT: mulss glob32 , %xmm0
1770
1760
; X86-SSE2-NEXT: movss %xmm0, glob32
1771
1761
; X86-SSE2-NEXT: retl
1772
1762
;
1773
1763
; X86-AVX-LABEL: fmul_32g:
1774
1764
; X86-AVX: # %bb.0:
1775
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1776
- ; X86-AVX-NEXT: vmulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0, %xmm0
1765
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1766
+ ; X86-AVX-NEXT: vmulss glob32 , %xmm0, %xmm0
1777
1767
; X86-AVX-NEXT: vmovss %xmm0, glob32
1778
1768
; X86-AVX-NEXT: retl
1779
1769
;
1780
1770
; X64-SSE-LABEL: fmul_32g:
1781
1771
; X64-SSE: # %bb.0:
1782
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1783
- ; X64-SSE-NEXT: mulss {{\.?LCPI[0-9]+_[0-9]+}} (%rip), %xmm0
1772
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1773
+ ; X64-SSE-NEXT: mulss glob32 (%rip), %xmm0
1784
1774
; X64-SSE-NEXT: movss %xmm0, glob32(%rip)
1785
1775
; X64-SSE-NEXT: retq
1786
1776
;
1787
1777
; X64-AVX-LABEL: fmul_32g:
1788
1778
; X64-AVX: # %bb.0:
1789
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1790
- ; X64-AVX-NEXT: vmulss {{\.?LCPI[0-9]+_[0-9]+}} (%rip), %xmm0, %xmm0
1779
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1780
+ ; X64-AVX-NEXT: vmulss glob32 (%rip), %xmm0, %xmm0
1791
1781
; X64-AVX-NEXT: vmovss %xmm0, glob32(%rip)
1792
1782
; X64-AVX-NEXT: retq
1793
1783
%i = load atomic i32 , ptr @glob32 monotonic , align 4
@@ -1885,31 +1875,31 @@ define dso_local void @fmul_32imm() nounwind {
1885
1875
;
1886
1876
; X86-SSE2-LABEL: fmul_32imm:
1887
1877
; X86-SSE2: # %bb.0:
1888
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1889
- ; X86-SSE2-NEXT: mulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0
1878
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1879
+ ; X86-SSE2-NEXT: mulss -559038737 , %xmm0
1890
1880
; X86-SSE2-NEXT: movss %xmm0, -559038737
1891
1881
; X86-SSE2-NEXT: retl
1892
1882
;
1893
1883
; X86-AVX-LABEL: fmul_32imm:
1894
1884
; X86-AVX: # %bb.0:
1895
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1896
- ; X86-AVX-NEXT: vmulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0, %xmm0
1885
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1886
+ ; X86-AVX-NEXT: vmulss -559038737 , %xmm0, %xmm0
1897
1887
; X86-AVX-NEXT: vmovss %xmm0, -559038737
1898
1888
; X86-AVX-NEXT: retl
1899
1889
;
1900
1890
; X64-SSE-LABEL: fmul_32imm:
1901
1891
; X64-SSE: # %bb.0:
1902
1892
; X64-SSE-NEXT: movl $3735928559, %eax # imm = 0xDEADBEEF
1903
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1904
- ; X64-SSE-NEXT: mulss {{\.?LCPI[0-9]+_[0-9]+}}(%rip ), %xmm0
1893
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1894
+ ; X64-SSE-NEXT: mulss (%rax ), %xmm0
1905
1895
; X64-SSE-NEXT: movss %xmm0, (%rax)
1906
1896
; X64-SSE-NEXT: retq
1907
1897
;
1908
1898
; X64-AVX-LABEL: fmul_32imm:
1909
1899
; X64-AVX: # %bb.0:
1910
1900
; X64-AVX-NEXT: movl $3735928559, %eax # imm = 0xDEADBEEF
1911
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
1912
- ; X64-AVX-NEXT: vmulss {{\.?LCPI[0-9]+_[0-9]+}}(%rip ), %xmm0, %xmm0
1901
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
1902
+ ; X64-AVX-NEXT: vmulss (%rax ), %xmm0, %xmm0
1913
1903
; X64-AVX-NEXT: vmovss %xmm0, (%rax)
1914
1904
; X64-AVX-NEXT: retq
1915
1905
%i = load atomic i32 , ptr inttoptr (i32 3735928559 to ptr ) monotonic , align 4
@@ -2010,32 +2000,32 @@ define dso_local void @fmul_32stack() nounwind {
2010
2000
; X86-SSE2-LABEL: fmul_32stack:
2011
2001
; X86-SSE2: # %bb.0:
2012
2002
; X86-SSE2-NEXT: pushl %eax
2013
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2014
- ; X86-SSE2-NEXT: mulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0
2003
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
2004
+ ; X86-SSE2-NEXT: mulss (%esp) , %xmm0
2015
2005
; X86-SSE2-NEXT: movss %xmm0, (%esp)
2016
2006
; X86-SSE2-NEXT: popl %eax
2017
2007
; X86-SSE2-NEXT: retl
2018
2008
;
2019
2009
; X86-AVX-LABEL: fmul_32stack:
2020
2010
; X86-AVX: # %bb.0:
2021
2011
; X86-AVX-NEXT: pushl %eax
2022
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2023
- ; X86-AVX-NEXT: vmulss {{\.?LCPI[0-9]+_[0-9]+}} , %xmm0, %xmm0
2012
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
2013
+ ; X86-AVX-NEXT: vmulss (%esp) , %xmm0, %xmm0
2024
2014
; X86-AVX-NEXT: vmovss %xmm0, (%esp)
2025
2015
; X86-AVX-NEXT: popl %eax
2026
2016
; X86-AVX-NEXT: retl
2027
2017
;
2028
2018
; X64-SSE-LABEL: fmul_32stack:
2029
2019
; X64-SSE: # %bb.0:
2030
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2031
- ; X64-SSE-NEXT: mulss {{\.?LCPI [0-9]+_[0-9]+ }}(%rip ), %xmm0
2020
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
2021
+ ; X64-SSE-NEXT: mulss -{{ [0-9]+}}(%rsp ), %xmm0
2032
2022
; X64-SSE-NEXT: movss %xmm0, -{{[0-9]+}}(%rsp)
2033
2023
; X64-SSE-NEXT: retq
2034
2024
;
2035
2025
; X64-AVX-LABEL: fmul_32stack:
2036
2026
; X64-AVX: # %bb.0:
2037
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2038
- ; X64-AVX-NEXT: vmulss {{\.?LCPI [0-9]+_[0-9]+ }}(%rip ), %xmm0, %xmm0
2027
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [3.14159012E+0,0.0E+0,0.0E+0,0.0E+0]
2028
+ ; X64-AVX-NEXT: vmulss -{{ [0-9]+}}(%rsp ), %xmm0, %xmm0
2039
2029
; X64-AVX-NEXT: vmovss %xmm0, -{{[0-9]+}}(%rsp)
2040
2030
; X64-AVX-NEXT: retq
2041
2031
%ptr = alloca i32 , align 4
@@ -2126,15 +2116,15 @@ define dso_local void @fmul_64stack() nounwind {
2126
2116
;
2127
2117
; X64-SSE-LABEL: fmul_64stack:
2128
2118
; X64-SSE: # %bb.0:
2129
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
2130
- ; X64-SSE-NEXT: mulsd {{\.?LCPI [0-9]+_[0-9]+ }}(%rip ), %xmm0
2119
+ ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = [3.1415901184082031E+0,0.0E+0]
2120
+ ; X64-SSE-NEXT: mulsd -{{ [0-9]+}}(%rsp ), %xmm0
2131
2121
; X64-SSE-NEXT: movsd %xmm0, -{{[0-9]+}}(%rsp)
2132
2122
; X64-SSE-NEXT: retq
2133
2123
;
2134
2124
; X64-AVX-LABEL: fmul_64stack:
2135
2125
; X64-AVX: # %bb.0:
2136
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
2137
- ; X64-AVX-NEXT: vmulsd {{\.?LCPI [0-9]+_[0-9]+ }}(%rip ), %xmm0, %xmm0
2126
+ ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = [3.1415901184082031E+0,0.0E+0]
2127
+ ; X64-AVX-NEXT: vmulsd -{{ [0-9]+}}(%rsp ), %xmm0, %xmm0
2138
2128
; X64-AVX-NEXT: vmovsd %xmm0, -{{[0-9]+}}(%rsp)
2139
2129
; X64-AVX-NEXT: retq
2140
2130
%ptr = alloca i64 , align 8
@@ -2235,15 +2225,13 @@ define dso_local void @fmul_array(ptr %arg, double %arg1, i64 %arg2) nounwind {
2235
2225
;
2236
2226
; X64-SSE-LABEL: fmul_array:
2237
2227
; X64-SSE: # %bb.0: # %bb
2238
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
2239
- ; X64-SSE-NEXT: mulsd %xmm0, %xmm1
2240
- ; X64-SSE-NEXT: movsd %xmm1, (%rdi,%rsi,8)
2228
+ ; X64-SSE-NEXT: mulsd (%rdi,%rsi,8), %xmm0
2229
+ ; X64-SSE-NEXT: movsd %xmm0, (%rdi,%rsi,8)
2241
2230
; X64-SSE-NEXT: retq
2242
2231
;
2243
2232
; X64-AVX-LABEL: fmul_array:
2244
2233
; X64-AVX: # %bb.0: # %bb
2245
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
2246
- ; X64-AVX-NEXT: vmulsd %xmm0, %xmm1, %xmm0
2234
+ ; X64-AVX-NEXT: vmulsd (%rdi,%rsi,8), %xmm0, %xmm0
2247
2235
; X64-AVX-NEXT: vmovsd %xmm0, (%rdi,%rsi,8)
2248
2236
; X64-AVX-NEXT: retq
2249
2237
bb:
@@ -2701,36 +2689,32 @@ define dso_local void @fdiv_32stack() nounwind {
2701
2689
; X86-SSE2-LABEL: fdiv_32stack:
2702
2690
; X86-SSE2: # %bb.0:
2703
2691
; X86-SSE2-NEXT: pushl %eax
2704
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2705
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2706
- ; X86-SSE2-NEXT: divss %xmm0, %xmm1
2707
- ; X86-SSE2-NEXT: movss %xmm1, (%esp)
2692
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2693
+ ; X86-SSE2-NEXT: divss (%esp), %xmm0
2694
+ ; X86-SSE2-NEXT: movss %xmm0, (%esp)
2708
2695
; X86-SSE2-NEXT: popl %eax
2709
2696
; X86-SSE2-NEXT: retl
2710
2697
;
2711
2698
; X86-AVX-LABEL: fdiv_32stack:
2712
2699
; X86-AVX: # %bb.0:
2713
2700
; X86-AVX-NEXT: pushl %eax
2714
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2715
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2716
- ; X86-AVX-NEXT: vdivss %xmm0, %xmm1, %xmm0
2701
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2702
+ ; X86-AVX-NEXT: vdivss (%esp), %xmm0, %xmm0
2717
2703
; X86-AVX-NEXT: vmovss %xmm0, (%esp)
2718
2704
; X86-AVX-NEXT: popl %eax
2719
2705
; X86-AVX-NEXT: retl
2720
2706
;
2721
2707
; X64-SSE-LABEL: fdiv_32stack:
2722
2708
; X64-SSE: # %bb.0:
2723
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2724
- ; X64-SSE-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2725
- ; X64-SSE-NEXT: divss %xmm0, %xmm1
2726
- ; X64-SSE-NEXT: movss %xmm1, -{{[0-9]+}}(%rsp)
2709
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2710
+ ; X64-SSE-NEXT: divss -{{[0-9]+}}(%rsp), %xmm0
2711
+ ; X64-SSE-NEXT: movss %xmm0, -{{[0-9]+}}(%rsp)
2727
2712
; X64-SSE-NEXT: retq
2728
2713
;
2729
2714
; X64-AVX-LABEL: fdiv_32stack:
2730
2715
; X64-AVX: # %bb.0:
2731
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2732
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2733
- ; X64-AVX-NEXT: vdivss %xmm0, %xmm1, %xmm0
2716
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2717
+ ; X64-AVX-NEXT: vdivss -{{[0-9]+}}(%rsp), %xmm0, %xmm0
2734
2718
; X64-AVX-NEXT: vmovss %xmm0, -{{[0-9]+}}(%rsp)
2735
2719
; X64-AVX-NEXT: retq
2736
2720
%ptr = alloca i32 , align 4
@@ -2823,17 +2807,15 @@ define dso_local void @fdiv_64stack() nounwind {
2823
2807
;
2824
2808
; X64-SSE-LABEL: fdiv_64stack:
2825
2809
; X64-SSE: # %bb.0:
2826
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
2827
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
2828
- ; X64-SSE-NEXT: divsd %xmm0, %xmm1
2829
- ; X64-SSE-NEXT: movsd %xmm1, -{{[0-9]+}}(%rsp)
2810
+ ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
2811
+ ; X64-SSE-NEXT: divsd -{{[0-9]+}}(%rsp), %xmm0
2812
+ ; X64-SSE-NEXT: movsd %xmm0, -{{[0-9]+}}(%rsp)
2830
2813
; X64-SSE-NEXT: retq
2831
2814
;
2832
2815
; X64-AVX-LABEL: fdiv_64stack:
2833
2816
; X64-AVX: # %bb.0:
2834
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
2835
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
2836
- ; X64-AVX-NEXT: vdivsd %xmm0, %xmm1, %xmm0
2817
+ ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
2818
+ ; X64-AVX-NEXT: vdivsd -{{[0-9]+}}(%rsp), %xmm0, %xmm0
2837
2819
; X64-AVX-NEXT: vmovsd %xmm0, -{{[0-9]+}}(%rsp)
2838
2820
; X64-AVX-NEXT: retq
2839
2821
%ptr = alloca i64 , align 8
0 commit comments