[X86][Btver2] BLSI/BLSMSK/BLSR instructions take 2uops not 1 (same as TZCNT)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 27 Sep 2018 14:57:57 +0000 (14:57 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 27 Sep 2018 14:57:57 +0000 (14:57 +0000)
llvm-svn: 343227

llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/test/tools/llvm-mca/X86/BtVer2/resources-bmi1.s

index 450b18f..83ba18f 100644 (file)
@@ -214,7 +214,7 @@ defm : JWriteResIntPair<WriteTZCNT,          [JALU01], 2, [2], 2>;
 
 // BMI1 BEXTR/BLS, BMI2 BZHI
 defm : JWriteResIntPair<WriteBEXTR, [JALU01], 1>;
-defm : JWriteResIntPair<WriteBLS,   [JALU01], 2, [2]>;
+defm : JWriteResIntPair<WriteBLS,   [JALU01], 2, [2], 2>;
 defm : X86WriteResPairUnsupported<WriteBZHI>;
 
 ////////////////////////////////////////////////////////////////////////////////
index 54db08b..f2ea5ea 100644 (file)
@@ -54,18 +54,18 @@ tzcnt       (%rax), %rcx
 # CHECK-NEXT:  1      4     1.00    *                   bextrl %eax, (%rbx), %ecx
 # CHECK-NEXT:  1      1     0.50                        bextrq %rax, %rbx, %rcx
 # CHECK-NEXT:  1      4     1.00    *                   bextrq %rax, (%rbx), %rcx
-# CHECK-NEXT:  1      2     1.00                        blsil  %eax, %ecx
-# CHECK-NEXT:  1      5     1.00    *                   blsil  (%rax), %ecx
-# CHECK-NEXT:  1      2     1.00                        blsiq  %rax, %rcx
-# CHECK-NEXT:  1      5     1.00    *                   blsiq  (%rax), %rcx
-# CHECK-NEXT:  1      2     1.00                        blsmskl        %eax, %ecx
-# CHECK-NEXT:  1      5     1.00    *                   blsmskl        (%rax), %ecx
-# CHECK-NEXT:  1      2     1.00                        blsmskq        %rax, %rcx
-# CHECK-NEXT:  1      5     1.00    *                   blsmskq        (%rax), %rcx
-# CHECK-NEXT:  1      2     1.00                        blsrl  %eax, %ecx
-# CHECK-NEXT:  1      5     1.00    *                   blsrl  (%rax), %ecx
-# CHECK-NEXT:  1      2     1.00                        blsrq  %rax, %rcx
-# CHECK-NEXT:  1      5     1.00    *                   blsrq  (%rax), %rcx
+# CHECK-NEXT:  2      2     1.00                        blsil  %eax, %ecx
+# CHECK-NEXT:  2      5     1.00    *                   blsil  (%rax), %ecx
+# CHECK-NEXT:  2      2     1.00                        blsiq  %rax, %rcx
+# CHECK-NEXT:  2      5     1.00    *                   blsiq  (%rax), %rcx
+# CHECK-NEXT:  2      2     1.00                        blsmskl        %eax, %ecx
+# CHECK-NEXT:  2      5     1.00    *                   blsmskl        (%rax), %ecx
+# CHECK-NEXT:  2      2     1.00                        blsmskq        %rax, %rcx
+# CHECK-NEXT:  2      5     1.00    *                   blsmskq        (%rax), %rcx
+# CHECK-NEXT:  2      2     1.00                        blsrl  %eax, %ecx
+# CHECK-NEXT:  2      5     1.00    *                   blsrl  (%rax), %ecx
+# CHECK-NEXT:  2      2     1.00                        blsrq  %rax, %rcx
+# CHECK-NEXT:  2      5     1.00    *                   blsrq  (%rax), %rcx
 # CHECK-NEXT:  2      2     1.00                        tzcntl %eax, %ecx
 # CHECK-NEXT:  2      5     1.00    *                   tzcntl (%rax), %ecx
 # CHECK-NEXT:  2      2     1.00                        tzcntq %rax, %rcx