[llvm] c39c2cc - [X86] Fix SLM uops counts for AES instructions

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 19 03:04:07 PST 2022


Author: Simon Pilgrim
Date: 2022-12-19T11:03:41Z
New Revision: c39c2cc9541a38b61f968a9e5c9fe9ce486fb629

URL: https://github.com/llvm/llvm-project/commit/c39c2cc9541a38b61f968a9e5c9fe9ce486fb629
DIFF: https://github.com/llvm/llvm-project/commit/c39c2cc9541a38b61f968a9e5c9fe9ce486fb629.diff

LOG: [X86] Fix SLM uops counts for AES instructions

Based off llvm-exegesis captures, confirmed with uops.info

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ScheduleSLM.td
    llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td
index e186168bf603b..c0b0cc8e64d1a 100644
--- a/llvm/lib/Target/X86/X86ScheduleSLM.td
+++ b/llvm/lib/Target/X86/X86ScheduleSLM.td
@@ -448,9 +448,9 @@ def : WriteRes<WriteMMXMOVMSK,  [SLM_FPC_RSV1]> { let Latency = 4; }
 defm : X86WriteResUnsupported<WriteVecMOVMSKY>;
 
 // AES Instructions.
-defm : SLMWriteResPair<WriteAESDecEnc, [SLM_FPC_RSV0], 8, [5]>;
-defm : SLMWriteResPair<WriteAESIMC,    [SLM_FPC_RSV0], 8, [5]>;
-defm : SLMWriteResPair<WriteAESKeyGen, [SLM_FPC_RSV0], 8, [5]>;
+defm : SLMWriteResPair<WriteAESDecEnc, [SLM_FPC_RSV0], 8, [5], 4, 1>;
+defm : SLMWriteResPair<WriteAESIMC,    [SLM_FPC_RSV0], 8, [4], 3, 1>;
+defm : SLMWriteResPair<WriteAESKeyGen, [SLM_FPC_RSV0], 8, [4], 3, 1>;
 
 // Carry-less multiplication instructions.
 defm : SLMWriteResPair<WriteCLMul, [SLM_FPC_RSV0], 10, [10], 8, 1>;

diff  --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
index 144b94259047b..0d4ae4fcbe65d 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
@@ -28,18 +28,18 @@ aeskeygenassist $22, (%rax), %xmm2
 # CHECK-NEXT: [6]: HasSideEffects (U)
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
-# CHECK-NEXT:  1      8     5.00                        aesdec	%xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aesdec	(%rax), %xmm2
-# CHECK-NEXT:  1      8     5.00                        aesdeclast	%xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aesdeclast	(%rax), %xmm2
-# CHECK-NEXT:  1      8     5.00                        aesenc	%xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aesenc	(%rax), %xmm2
-# CHECK-NEXT:  1      8     5.00                        aesenclast	%xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aesenclast	(%rax), %xmm2
-# CHECK-NEXT:  1      8     5.00                        aesimc	%xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aesimc	(%rax), %xmm2
-# CHECK-NEXT:  1      8     5.00                        aeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  1      11    5.00    *                   aeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  4      8     5.00                        aesdec	%xmm0, %xmm2
+# CHECK-NEXT:  5      11    5.00    *                   aesdec	(%rax), %xmm2
+# CHECK-NEXT:  4      8     5.00                        aesdeclast	%xmm0, %xmm2
+# CHECK-NEXT:  5      11    5.00    *                   aesdeclast	(%rax), %xmm2
+# CHECK-NEXT:  4      8     5.00                        aesenc	%xmm0, %xmm2
+# CHECK-NEXT:  5      11    5.00    *                   aesenc	(%rax), %xmm2
+# CHECK-NEXT:  4      8     5.00                        aesenclast	%xmm0, %xmm2
+# CHECK-NEXT:  5      11    5.00    *                   aesenclast	(%rax), %xmm2
+# CHECK-NEXT:  3      8     4.00                        aesimc	%xmm0, %xmm2
+# CHECK-NEXT:  4      11    4.00    *                   aesimc	(%rax), %xmm2
+# CHECK-NEXT:  3      8     4.00                        aeskeygenassist	$22, %xmm0, %xmm2
+# CHECK-NEXT:  4      11    4.00    *                   aeskeygenassist	$22, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SLMDivider
@@ -53,7 +53,7 @@ aeskeygenassist $22, (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT:  -      -      -     60.00   -      -      -     6.00
+# CHECK-NEXT:  -      -      -     56.00   -      -      -     6.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
@@ -65,7 +65,7 @@ aeskeygenassist $22, (%rax), %xmm2
 # CHECK-NEXT:  -      -      -     5.00    -      -      -     1.00   aesenc	(%rax), %xmm2
 # CHECK-NEXT:  -      -      -     5.00    -      -      -      -     aesenclast	%xmm0, %xmm2
 # CHECK-NEXT:  -      -      -     5.00    -      -      -     1.00   aesenclast	(%rax), %xmm2
-# CHECK-NEXT:  -      -      -     5.00    -      -      -      -     aesimc	%xmm0, %xmm2
-# CHECK-NEXT:  -      -      -     5.00    -      -      -     1.00   aesimc	(%rax), %xmm2
-# CHECK-NEXT:  -      -      -     5.00    -      -      -      -     aeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  -      -      -     5.00    -      -      -     1.00   aeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     4.00    -      -      -      -     aesimc	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     4.00    -      -      -     1.00   aesimc	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     4.00    -      -      -      -     aeskeygenassist	$22, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     4.00    -      -      -     1.00   aeskeygenassist	$22, (%rax), %xmm2


        


More information about the llvm-commits mailing list