[X86][BtVer2] Fix the number of uOps for horizontal operations.
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 30 Mar 2018 18:15:30 +0000 (18:15 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 30 Mar 2018 18:15:30 +0000 (18:15 +0000)
llvm-svn: 328886

llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-2.s
llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s

index 808750e..d85c335 100644 (file)
@@ -388,12 +388,14 @@ defm : JWriteResFpuPair<WritePHAdd,       [JFPU01, JVALU], 1>;
 def JWriteFHAddY: SchedWriteRes<[JFPU0, JFPA]> {
   let Latency = 3;
   let ResourceCycles = [2, 2];
+  let NumMicroOps = 2;
 }
 def : InstRW<[JWriteFHAddY], (instrs VHADDPDYrr, VHADDPSYrr, VHSUBPDYrr, VHSUBPSYrr)>;
 
 def JWriteFHAddYLd: SchedWriteRes<[JLAGU, JFPU0, JFPA]> {
   let Latency = 8;
   let ResourceCycles = [2, 2, 2];
+  let NumMicroOps = 2;
 }
 def : InstRW<[JWriteFHAddYLd, ReadAfterLd], (instrs VHADDPDYrm, VHADDPSYrm,
                                                     VHSUBPDYrm, VHSUBPSYrm)>;
index 391a412..ce2a58e 100644 (file)
@@ -13,11 +13,11 @@ vhaddps (%rdi), %ymm1, %ymm2
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]   Instructions:
 # CHECK-NEXT:  1      1     0.50                       vshufps $0, %xmm0, %xmm1, %xmm1
-# CHECK-NEXT:  1      8     2.00    *                  vhaddps (%rdi), %ymm1, %ymm2
+# CHECK-NEXT:  2      8     2.00    *                  vhaddps (%rdi), %ymm1, %ymm2
 
 
 # CHECK:      Timeline view:
-# CHECK-NEXT:                    0
+# CHECK-NEXT:                    01
 # CHECK-NEXT: Index    0123456789 
-# CHECK:      [0,0]    DeER .    .     vshufps $0, %xmm0, %xmm1, %xmm1
-# CHECK-NEXT: [0,1]    DeeeeeeeeER     vhaddps (%rdi), %ymm1, %ymm2
+# CHECK:      [0,0]    DeER .    ..    vshufps $0, %xmm0, %xmm1, %xmm1
+# CHECK-NEXT: [0,1]    .DeeeeeeeeER    vhaddps (%rdi), %ymm1, %ymm2
index f0a5fdf..02b73ad 100644 (file)
@@ -1186,20 +1186,20 @@ vzeroupper
 # CHECK-NEXT:  2      6     1.00           *           vextractps      $1, %xmm0, (%rax)
 # CHECK-NEXT:  1      3     1.00                       vhaddpd %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      8     1.00    *                  vhaddpd (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      3     2.00                       vhaddpd %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  1      8     2.00    *                  vhaddpd (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  2      3     2.00                       vhaddpd %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      8     2.00    *                  vhaddpd (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      3     1.00                       vhaddps %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      8     1.00    *                  vhaddps (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      3     2.00                       vhaddps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  1      8     2.00    *                  vhaddps (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  2      3     2.00                       vhaddps %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      8     2.00    *                  vhaddps (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      3     1.00                       vhsubpd %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      8     1.00    *                  vhsubpd (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      3     2.00                       vhsubpd %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  1      8     2.00    *                  vhsubpd (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  2      3     2.00                       vhsubpd %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      8     2.00    *                  vhsubpd (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      3     1.00                       vhsubps %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      8     1.00    *                  vhsubps (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      3     2.00                       vhsubps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  1      8     2.00    *                  vhsubps (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  2      3     2.00                       vhsubps %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      8     2.00    *                  vhsubps (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      1     0.50                       vinsertf128     $1, %xmm0, %ymm1, %ymm2
 # CHECK-NEXT:  1      6     1.00    *                  vinsertf128     $1, (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      1     0.50                       vinsertps       $1, %xmm0, %xmm1, %xmm2