[X86] Move (v)movss to port 5 only for Skylake. Move (v)movups/d to port 015 for...
authorCraig Topper <craig.topper@intel.com>
Sun, 25 Mar 2018 23:40:56 +0000 (23:40 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 25 Mar 2018 23:40:56 +0000 (23:40 +0000)
This matches Agner's data and is consistent with what the EVEX instructions were doing on SKX.

llvm-svn: 328465

llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/test/CodeGen/X86/sse-schedule.ll

index 2174744..724c003 100644 (file)
@@ -361,8 +361,7 @@ def: InstRW<[SKLWriteResGroup3], (instregex "COMP_FST0r",
                                             "(V?)MOVSDrr",
                                             "(V?)MOVSHDUP(Y?)rr",
                                             "(V?)MOVSLDUP(Y?)rr",
-                                            "(V?)MOVUPD(Y?)rr",
-                                            "(V?)MOVUPS(Y?)rr",
+                                            "(V?)MOVSSrr",
                                             "(V?)PACKSSDW(Y?)rr",
                                             "(V?)PACKSSWB(Y?)rr",
                                             "(V?)PACKUSDW(Y?)rr",
@@ -566,7 +565,8 @@ def: InstRW<[SKLWriteResGroup9], (instregex "(V?)ANDNPD(Y?)rr",
                                             "(V?)MOVDQA(Y?)rr",
                                             "(V?)MOVDQU(Y?)rr",
                                             "(V?)MOVPQI2QIrr",
-                                            "(V?)MOVSSrr",
+                                            "(V?)MOVUPD(Y?)rr",
+                                            "(V?)MOVUPS(Y?)rr",
                                             "(V?)MOVZPQILo2PQIrr",
                                             "(V?)ORPD(Y?)rr",
                                             "(V?)ORPS(Y?)rr",
index aed892f..1b01236 100755 (executable)
@@ -402,8 +402,7 @@ def: InstRW<[SKXWriteResGroup3], (instregex "COMP_FST0r",
                                             "MOVSDrr",
                                             "MOVSHDUPrr",
                                             "MOVSLDUPrr",
-                                            "MOVUPDrr",
-                                            "MOVUPSrr",
+                                            "MOVSSrr",
                                             "PACKSSDWrr",
                                             "PACKSSWBrr",
                                             "PACKUSDWrr",
@@ -474,10 +473,7 @@ def: InstRW<[SKXWriteResGroup3], (instregex "COMP_FST0r",
                                             "VMOVSLDUPZrr(b?)(k?)(z?)",
                                             "VMOVSLDUPrr",
                                             "VMOVSSZrr(b?)(k?)(z?)",
-                                            "VMOVUPDYrr",
-                                            "VMOVUPDrr",
-                                            "VMOVUPSYrr",
-                                            "VMOVUPSrr",
+                                            "VMOVSSrr",
                                             "VPACKSSDWYrr",
                                             "VPACKSSDWZ128rr(b?)(k?)(z?)",
                                             "VPACKSSDWZ256rr(b?)(k?)(z?)",
@@ -1045,7 +1041,8 @@ def: InstRW<[SKXWriteResGroup9], (instregex "ANDNPDrr",
                                             "MOVDQArr",
                                             "MOVDQUrr",
                                             "MOVPQI2QIrr",
-                                            "MOVSSrr",
+                                            "MOVUPDrr",
+                                            "MOVUPSrr",
                                             "ORPDrr",
                                             "ORPSrr",
                                             "PADDBrr",
@@ -1124,13 +1121,16 @@ def: InstRW<[SKXWriteResGroup9], (instregex "ANDNPDrr",
                                             "VMOVDQUrr",
                                             "VMOVPQI(2Q|Lo2PQ)IZrr(b?)(k?)(z?)",
                                             "VMOVPQI2QIrr",
-                                            "VMOVSSrr",
+                                            "VMOVUPDYrr",
                                             "VMOVUPDZ128rr(b?)(k?)(z?)",
                                             "VMOVUPDZ256rr(b?)(k?)(z?)",
                                             "VMOVUPDZrr(b?)(k?)(z?)",
+                                            "VMOVUPDrr",
                                             "VMOVUPSZ128rr(b?)(k?)(z?)",
                                             "VMOVUPSZ256rr(b?)(k?)(z?)",
                                             "VMOVUPSZrr(b?)(k?)(z?)",
+                                            "VMOVUPSYrr",
+                                            "VMOVUPSrr",
                                             "VMOVZPQILo2PQIrr",
                                             "VORPDYrr",
                                             "VORPDZ128rr(b?)(k?)(z?)",
index 7534325..f75bdcc 100644 (file)
@@ -3449,7 +3449,7 @@ define <4 x float> @test_movss_reg(<4 x float> %a0, <4 x float> %a1) {
 ;
 ; SKYLAKE-SSE-LABEL: test_movss_reg:
 ; SKYLAKE-SSE:       # %bb.0:
-; SKYLAKE-SSE-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3] sched: [1:0.33]
+; SKYLAKE-SSE-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3] sched: [1:1.00]
 ; SKYLAKE-SSE-NEXT:    retq # sched: [7:1.00]
 ;
 ; SKYLAKE-LABEL: test_movss_reg:
@@ -3459,7 +3459,7 @@ define <4 x float> @test_movss_reg(<4 x float> %a0, <4 x float> %a1) {
 ;
 ; SKX-SSE-LABEL: test_movss_reg:
 ; SKX-SSE:       # %bb.0:
-; SKX-SSE-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3] sched: [1:0.33]
+; SKX-SSE-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3] sched: [1:1.00]
 ; SKX-SSE-NEXT:    retq # sched: [7:1.00]
 ;
 ; SKX-LABEL: test_movss_reg: