@@ -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
@@ -2162,15 +2152,13 @@ define dso_local void @fmul_array(ptr %arg, double %arg1, i64 %arg2) nounwind {
2162
2152
;
2163
2153
; X64-SSE-LABEL: fmul_array:
2164
2154
; X64-SSE: # %bb.0: # %bb
2165
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
2166
- ; X64-SSE-NEXT: mulsd %xmm0, %xmm1
2167
- ; X64-SSE-NEXT: movsd %xmm1, (%rdi,%rsi,8)
2155
+ ; X64-SSE-NEXT: mulsd (%rdi,%rsi,8), %xmm0
2156
+ ; X64-SSE-NEXT: movsd %xmm0, (%rdi,%rsi,8)
2168
2157
; X64-SSE-NEXT: retq
2169
2158
;
2170
2159
; X64-AVX-LABEL: fmul_array:
2171
2160
; X64-AVX: # %bb.0: # %bb
2172
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
2173
- ; X64-AVX-NEXT: vmulsd %xmm0, %xmm1, %xmm0
2161
+ ; X64-AVX-NEXT: vmulsd (%rdi,%rsi,8), %xmm0, %xmm0
2174
2162
; X64-AVX-NEXT: vmovsd %xmm0, (%rdi,%rsi,8)
2175
2163
; X64-AVX-NEXT: retq
2176
2164
bb:
@@ -2592,36 +2580,32 @@ define dso_local void @fdiv_32stack() nounwind {
2592
2580
; X86-SSE2-LABEL: fdiv_32stack:
2593
2581
; X86-SSE2: # %bb.0:
2594
2582
; X86-SSE2-NEXT: pushl %eax
2595
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2596
- ; X86-SSE2-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2597
- ; X86-SSE2-NEXT: divss %xmm0, %xmm1
2598
- ; X86-SSE2-NEXT: movss %xmm1, (%esp)
2583
+ ; X86-SSE2-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2584
+ ; X86-SSE2-NEXT: divss (%esp), %xmm0
2585
+ ; X86-SSE2-NEXT: movss %xmm0, (%esp)
2599
2586
; X86-SSE2-NEXT: popl %eax
2600
2587
; X86-SSE2-NEXT: retl
2601
2588
;
2602
2589
; X86-AVX-LABEL: fdiv_32stack:
2603
2590
; X86-AVX: # %bb.0:
2604
2591
; X86-AVX-NEXT: pushl %eax
2605
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2606
- ; X86-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2607
- ; X86-AVX-NEXT: vdivss %xmm0, %xmm1, %xmm0
2592
+ ; X86-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2593
+ ; X86-AVX-NEXT: vdivss (%esp), %xmm0, %xmm0
2608
2594
; X86-AVX-NEXT: vmovss %xmm0, (%esp)
2609
2595
; X86-AVX-NEXT: popl %eax
2610
2596
; X86-AVX-NEXT: retl
2611
2597
;
2612
2598
; X64-SSE-LABEL: fdiv_32stack:
2613
2599
; X64-SSE: # %bb.0:
2614
- ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2615
- ; X64-SSE-NEXT: movss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2616
- ; X64-SSE-NEXT: divss %xmm0, %xmm1
2617
- ; X64-SSE-NEXT: movss %xmm1, -{{[0-9]+}}(%rsp)
2600
+ ; X64-SSE-NEXT: movss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2601
+ ; X64-SSE-NEXT: divss -{{[0-9]+}}(%rsp), %xmm0
2602
+ ; X64-SSE-NEXT: movss %xmm0, -{{[0-9]+}}(%rsp)
2618
2603
; X64-SSE-NEXT: retq
2619
2604
;
2620
2605
; X64-AVX-LABEL: fdiv_32stack:
2621
2606
; X64-AVX: # %bb.0:
2622
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2623
- ; X64-AVX-NEXT: vmovss {{.*#+}} xmm1 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2624
- ; X64-AVX-NEXT: vdivss %xmm0, %xmm1, %xmm0
2607
+ ; X64-AVX-NEXT: vmovss {{.*#+}} xmm0 = [1.0E+0,0.0E+0,0.0E+0,0.0E+0]
2608
+ ; X64-AVX-NEXT: vdivss -{{[0-9]+}}(%rsp), %xmm0, %xmm0
2625
2609
; X64-AVX-NEXT: vmovss %xmm0, -{{[0-9]+}}(%rsp)
2626
2610
; X64-AVX-NEXT: retq
2627
2611
%ptr = alloca i32 , align 4
@@ -2714,17 +2698,15 @@ define dso_local void @fdiv_64stack() nounwind {
2714
2698
;
2715
2699
; X64-SSE-LABEL: fdiv_64stack:
2716
2700
; X64-SSE: # %bb.0:
2717
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
2718
- ; X64-SSE-NEXT: movsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
2719
- ; X64-SSE-NEXT: divsd %xmm0, %xmm1
2720
- ; X64-SSE-NEXT: movsd %xmm1, -{{[0-9]+}}(%rsp)
2701
+ ; X64-SSE-NEXT: movsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
2702
+ ; X64-SSE-NEXT: divsd -{{[0-9]+}}(%rsp), %xmm0
2703
+ ; X64-SSE-NEXT: movsd %xmm0, -{{[0-9]+}}(%rsp)
2721
2704
; X64-SSE-NEXT: retq
2722
2705
;
2723
2706
; X64-AVX-LABEL: fdiv_64stack:
2724
2707
; X64-AVX: # %bb.0:
2725
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
2726
- ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm1 = [1.0E+0,0.0E+0]
2727
- ; X64-AVX-NEXT: vdivsd %xmm0, %xmm1, %xmm0
2708
+ ; X64-AVX-NEXT: vmovsd {{.*#+}} xmm0 = [1.0E+0,0.0E+0]
2709
+ ; X64-AVX-NEXT: vdivsd -{{[0-9]+}}(%rsp), %xmm0, %xmm0
2728
2710
; X64-AVX-NEXT: vmovsd %xmm0, -{{[0-9]+}}(%rsp)
2729
2711
; X64-AVX-NEXT: retq
2730
2712
%ptr = alloca i64 , align 8
0 commit comments