[llvm] [X86] Add mayLoad/mayStore to legacy instructions CMPS/LODS/MOVS/SCAS/STOS (PR #185689)

via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 10 10:01:29 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: None (nsurbay)

<details>
<summary>Changes</summary>

When LLVM is used to disassemble instructions, legacy X86 strings instructions doesn't report memory access with mayLoad and mayStore.

Note that INS and OUTS may also need sush flags, but I'm not totally sure which one.

---

Patch is 106.72 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/185689.diff


20 Files Affected:

- (modified) llvm/lib/Target/X86/X86InstrMisc.td (+11-11) 
- (modified) llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/LunarlakeP/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/SapphireRapids/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Znver2/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Znver3/resources-x86_64.s (+20-20) 
- (modified) llvm/test/tools/llvm-mca/X86/Znver4/resources-x86_64.s (+20-20) 


``````````diff
diff --git a/llvm/lib/Target/X86/X86InstrMisc.td b/llvm/lib/Target/X86/X86InstrMisc.td
index d94108754d555..fc6be26338f3d 100644
--- a/llvm/lib/Target/X86/X86InstrMisc.td
+++ b/llvm/lib/Target/X86/X86InstrMisc.td
@@ -300,7 +300,7 @@ def BSR64rm  : RI<0xBD, MRMSrcMem, (outs GR64:$dst), (ins GR64:$fallback, i64mem
 } // Defs = [EFLAGS]
 
 let SchedRW = [WriteMicrocoded] in {
-let Defs = [EDI,ESI], Uses = [EDI,ESI,DF] in {
+let Defs = [EDI,ESI], Uses = [EDI,ESI,DF], mayLoad = 1, mayStore = 1 in {
 def MOVSB : I<0xA4, RawFrmDstSrc, (outs), (ins dstidx8:$dst, srcidx8:$src),
               "movsb\t{$src, $dst|$dst, $src}", []>;
 def MOVSW : I<0xA5, RawFrmDstSrc, (outs), (ins dstidx16:$dst, srcidx16:$src),
@@ -312,35 +312,35 @@ def MOVSQ : RI<0xA5, RawFrmDstSrc, (outs), (ins dstidx64:$dst, srcidx64:$src),
                Requires<[In64BitMode]>;
 }
 
-let Defs = [EDI], Uses = [AL,EDI,DF] in
+let Defs = [EDI], Uses = [AL,EDI,DF], mayStore = 1 in
 def STOSB : I<0xAA, RawFrmDst, (outs), (ins dstidx8:$dst),
               "stosb\t{%al, $dst|$dst, al}", []>;
-let Defs = [EDI], Uses = [AX,EDI,DF] in
+let Defs = [EDI], Uses = [AX,EDI,DF], mayStore = 1 in
 def STOSW : I<0xAB, RawFrmDst, (outs), (ins dstidx16:$dst),
               "stosw\t{%ax, $dst|$dst, ax}", []>, OpSize16;
-let Defs = [EDI], Uses = [EAX,EDI,DF] in
+let Defs = [EDI], Uses = [EAX,EDI,DF], mayStore = 1 in
 def STOSL : I<0xAB, RawFrmDst, (outs), (ins dstidx32:$dst),
               "stos{l|d}\t{%eax, $dst|$dst, eax}", []>, OpSize32;
-let Defs = [RDI], Uses = [RAX,RDI,DF] in
+let Defs = [RDI], Uses = [RAX,RDI,DF], mayStore = 1 in
 def STOSQ : RI<0xAB, RawFrmDst, (outs), (ins dstidx64:$dst),
                "stosq\t{%rax, $dst|$dst, rax}", []>,
                Requires<[In64BitMode]>;
 
-let Defs = [EDI,EFLAGS], Uses = [AL,EDI,DF] in
+let Defs = [EDI,EFLAGS], Uses = [AL,EDI,DF], mayLoad = 1 in
 def SCASB : I<0xAE, RawFrmDst, (outs), (ins dstidx8:$dst),
               "scasb\t{$dst, %al|al, $dst}", []>;
-let Defs = [EDI,EFLAGS], Uses = [AX,EDI,DF] in
+let Defs = [EDI,EFLAGS], Uses = [AX,EDI,DF], mayLoad = 1 in
 def SCASW : I<0xAF, RawFrmDst, (outs), (ins dstidx16:$dst),
               "scasw\t{$dst, %ax|ax, $dst}", []>, OpSize16;
-let Defs = [EDI,EFLAGS], Uses = [EAX,EDI,DF] in
+let Defs = [EDI,EFLAGS], Uses = [EAX,EDI,DF], mayLoad = 1 in
 def SCASL : I<0xAF, RawFrmDst, (outs), (ins dstidx32:$dst),
               "scas{l|d}\t{$dst, %eax|eax, $dst}", []>, OpSize32;
-let Defs = [EDI,EFLAGS], Uses = [RAX,EDI,DF] in
+let Defs = [EDI,EFLAGS], Uses = [RAX,EDI,DF], mayLoad = 1 in
 def SCASQ : RI<0xAF, RawFrmDst, (outs), (ins dstidx64:$dst),
                "scasq\t{$dst, %rax|rax, $dst}", []>,
                Requires<[In64BitMode]>;
 
-let Defs = [EDI,ESI,EFLAGS], Uses = [EDI,ESI,DF] in {
+let Defs = [EDI,ESI,EFLAGS], Uses = [EDI,ESI,DF], mayLoad = 1 in {
 def CMPSB : I<0xA6, RawFrmDstSrc, (outs), (ins dstidx8:$dst, srcidx8:$src),
               "cmpsb\t{$dst, $src|$src, $dst}", []>;
 def CMPSW : I<0xA7, RawFrmDstSrc, (outs), (ins dstidx16:$dst, srcidx16:$src),
@@ -982,7 +982,7 @@ def REPNE_PREFIX : I<0xF2, PrefixByte, (outs),  (ins), "repne", []>;
 }
 
 // String manipulation instructions
-let SchedRW = [WriteMicrocoded] in {
+let SchedRW = [WriteMicrocoded], mayLoad = 1 in {
 let Defs = [AL,ESI], Uses = [ESI,DF] in
 def LODSB : I<0xAC, RawFrmSrc, (outs), (ins srcidx8:$src),
               "lodsb\t{$src, %al|al, $src}", []>;
diff --git a/llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s
index 5cad9072f37c6..f491d6e4e72d8 100644
--- a/llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s
+++ b/llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s
@@ -1292,10 +1292,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.20                        cmpq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.33    *                   cmpq	%rsi, (%rax)
 # CHECK-NEXT:  2      6     0.33    *                   cmpq	(%rax), %rdi
-# CHECK-NEXT:  7      6     1.00                  U     cmpsb	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  7      6     1.00                  U     cmpsw	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  7      6     1.00                  U     cmpsl	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  7      6     1.00                  U     cmpsq	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  7      6     1.00    *             U     cmpsb	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  7      6     1.00    *             U     cmpsw	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  7      6     1.00    *             U     cmpsl	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  7      6     1.00    *             U     cmpsq	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      3     1.00                        cmpxchgb	%cl, %bl
 # CHECK-NEXT:  6      13    1.00    *      *            cmpxchgb	%cl, (%rbx)
 # CHECK-NEXT:  6      13    1.00    *      *            lock		cmpxchgb	%cl, (%rbx)
@@ -1390,17 +1390,17 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.25                  U     invlpga
 # CHECK-NEXT:  1      3     0.50                        lahf
 # CHECK-NEXT:  3      6     0.40    *                   leave
-# CHECK-NEXT:  4      6     0.60                  U     lodsb	(%rsi), %al
-# CHECK-NEXT:  4      6     0.60                  U     lodsw	(%rsi), %ax
-# CHECK-NEXT:  3      5     0.40                  U     lodsl	(%rsi), %eax
-# CHECK-NEXT:  3      5     0.40                  U     lodsq	(%rsi), %rax
+# CHECK-NEXT:  4      6     0.60    *             U     lodsb	(%rsi), %al
+# CHECK-NEXT:  4      6     0.60    *             U     lodsw	(%rsi), %ax
+# CHECK-NEXT:  3      5     0.40    *             U     lodsl	(%rsi), %eax
+# CHECK-NEXT:  3      5     0.40    *             U     lodsq	(%rsi), %rax
 # CHECK-NEXT:  7      3     2.00                  U     loop	0
 # CHECK-NEXT:  11     3     3.00                  U     loope	0
 # CHECK-NEXT:  11     2     3.00                  U     loopne	0
-# CHECK-NEXT:  7      8     0.80                  U     movsb	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  7      7     0.80                  U     movsw	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  7      7     0.80                  U     movsl	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  7      7     0.80                  U     movsq	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  7      8     0.80    *      *      U     movsb	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  7      7     0.80    *      *      U     movsw	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  7      7     0.80    *      *      U     movsl	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  7      7     0.80    *      *      U     movsq	(%rsi), %es:(%rdi)
 # CHECK-NEXT:  1      1     0.33                        movsbw	%al, %di
 # CHECK-NEXT:  1      1     0.20                        movzbw	%al, %di
 # CHECK-NEXT:  2      6     0.33    *                   movsbw	(%rax), %di
@@ -1743,10 +1743,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  6      12    0.60    *      *            sbbq	%rsi, (%rax)
 # CHECK-NEXT:  6      12    0.60    *      *            lock		sbbq	%rsi, (%rax)
 # CHECK-NEXT:  2      6     0.50    *                   sbbq	(%rax), %rdi
-# CHECK-NEXT:  4      6     0.60                  U     scasb	%es:(%rdi), %al
-# CHECK-NEXT:  4      6     0.60                  U     scasw	%es:(%rdi), %ax
-# CHECK-NEXT:  4      6     0.60                  U     scasl	%es:(%rdi), %eax
-# CHECK-NEXT:  4      6     0.60                  U     scasq	%es:(%rdi), %rax
+# CHECK-NEXT:  4      6     0.60    *             U     scasb	%es:(%rdi), %al
+# CHECK-NEXT:  4      6     0.60    *             U     scasw	%es:(%rdi), %ax
+# CHECK-NEXT:  4      6     0.60    *             U     scasl	%es:(%rdi), %eax
+# CHECK-NEXT:  4      6     0.60    *             U     scasq	%es:(%rdi), %rax
 # CHECK-NEXT:  2      2     1.00                        seto	%al
 # CHECK-NEXT:  4      13    1.00           *            seto	(%rax)
 # CHECK-NEXT:  2      2     1.00                        setno	%al
@@ -1805,10 +1805,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  5      12    1.00    *      *            shrdq	$7, %rsi, (%rax)
 # CHECK-NEXT:  1      1     0.20                  U     stc
 # CHECK-NEXT:  2      6     0.50                  U     std
-# CHECK-NEXT:  4      8     0.50                  U     stosb	%al, %es:(%rdi)
-# CHECK-NEXT:  4      7     0.50                  U     stosw	%ax, %es:(%rdi)
-# CHECK-NEXT:  4      7     0.50                  U     stosl	%eax, %es:(%rdi)
-# CHECK-NEXT:  4      7     0.50                  U     stosq	%rax, %es:(%rdi)
+# CHECK-NEXT:  4      8     0.50           *      U     stosb	%al, %es:(%rdi)
+# CHECK-NEXT:  4      7     0.50           *      U     stosw	%ax, %es:(%rdi)
+# CHECK-NEXT:  4      7     0.50           *      U     stosl	%eax, %es:(%rdi)
+# CHECK-NEXT:  4      7     0.50           *      U     stosq	%rax, %es:(%rdi)
 # CHECK-NEXT:  1      1     0.20                        subb	$7, %al
 # CHECK-NEXT:  1      1     0.20                        subb	$7, %dil
 # CHECK-NEXT:  4      13    0.50    *      *            subb	$7, (%rax)
diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
index 2d7764627ef1b..e567bb036d63d 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
@@ -1292,10 +1292,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.50                        cmpq	%rsi, %rdi
 # CHECK-NEXT:  1      1     1.00    *                   cmpq	%rsi, (%rax)
 # CHECK-NEXT:  1      1     1.00    *                   cmpq	(%rax), %rdi
-# CHECK-NEXT:  1      3     1.50                  U     cmpsb	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  1      3     1.50                  U     cmpsw	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  1      3     1.50                  U     cmpsl	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  1      3     1.50                  U     cmpsq	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  1      3     1.50    *             U     cmpsb	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  1      3     1.50    *             U     cmpsw	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  1      3     1.50    *             U     cmpsl	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  1      3     1.50    *             U     cmpsq	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      9     4.50                        cmpxchgb	%cl, %bl
 # CHECK-NEXT:  1      6     3.00    *      *            cmpxchgb	%cl, (%rbx)
 # CHECK-NEXT:  1      6     3.00    *      *            lock		cmpxchgb	%cl, (%rbx)
@@ -1390,17 +1390,17 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      71    35.50                 U     invlpga
 # CHECK-NEXT:  1      2     1.00                        lahf
 # CHECK-NEXT:  1      2     1.00    *                   leave
-# CHECK-NEXT:  1      2     1.00                  U     lodsb	(%rsi), %al
-# CHECK-NEXT:  1      2     1.00                  U     lodsw	(%rsi), %ax
-# CHECK-NEXT:  1      2     1.00                  U     lodsl	(%rsi), %eax
-# CHECK-NEXT:  1      2     1.00                  U     lodsq	(%rsi), %rax
+# CHECK-NEXT:  1      2     1.00    *             U     lodsb	(%rsi), %al
+# CHECK-NEXT:  1      2     1.00    *             U     lodsw	(%rsi), %ax
+# CHECK-NEXT:  1      2     1.00    *             U     lodsl	(%rsi), %eax
+# CHECK-NEXT:  1      2     1.00    *             U     lodsq	(%rsi), %rax
 # CHECK-NEXT:  1      18    9.00                  U     loop	0
 # CHECK-NEXT:  1      8     4.00                  U     loope	0
 # CHECK-NEXT:  1      17    8.50                  U     loopne	0
-# CHECK-NEXT:  1      3     1.50                  U     movsb	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  1      3     1.50                  U     movsw	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  1      3     1.50                  U     movsl	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  1      3     1.50                  U     movsq	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  1      3     1.50    *      *      U     movsb	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  1      3     1.50    *      *      U     movsw	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  1      3     1.50    *      *      U     movsl	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  1      3     1.50    *      *      U     movsq	(%rsi), %es:(%rdi)
 # CHECK-NEXT:  1      2     1.00                        movsbw	%al, %di
 # CHECK-NEXT:  1      2     1.00                        movzbw	%al, %di
 # CHECK-NEXT:  1      3     1.50    *                   movsbw	(%rax), %di
@@ -1743,10 +1743,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     1.00    *      *            sbbq	%rsi, (%rax)
 # CHECK-NEXT:  1      1     1.00    *      *            lock		sbbq	%rsi, (%rax)
 # CHECK-NEXT:  1      1     1.00    *                   sbbq	(%rax), %rdi
-# CHECK-NEXT:  1      2     1.00                  U     scasb	%es:(%rdi), %al
-# CHECK-NEXT:  1      2     1.00                  U     scasw	%es:(%rdi), %ax
-# CHECK-NEXT:  1      2     1.00                  U     scasl	%es:(%rdi), %eax
-# CHECK-NEXT:  1      2     1.00                  U     scasq	%es:(%rdi), %rax
+# CHECK-NEXT:  1      2     1.00    *             U     scasb	%es:(%rdi), %al
+# CHECK-NEXT:  1      2     1.00    *             U     scasw	%es:(%rdi), %ax
+# CHECK-NEXT:  1      2     1.00    *             U     scasl	%es:(%rdi), %eax
+# CHECK-NEXT:  1      2     1.00    *             U     scasq	%es:(%rdi), %rax
 # CHECK-NEXT:  1      1     0.50                        seto	%al
 # CHECK-NEXT:  1      2     1.00           *            seto	(%rax)
 # CHECK-NEXT:  1      1     0.50                        setno	%al
@@ -1805,10 +1805,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      9     4.50    *      *            shrdq	$7, %rsi, (%rax)
 # CHECK-NEXT:  1      1     0.50                  U     stc
 # CHECK-NEXT:  1      21    10.50                 U     std
-# CHECK-NEXT:  1      1     0.50                  U     stosb	%al, %es:(%rdi)
-# CHECK-NEXT:  1      1     0.50                  U     stosw	%ax, %es:(%rdi)
-# CHECK-NEXT:  1      1     0.50                  U     stosl	%eax, %es:(%rdi)
-# CHECK-NEXT:  1      1     0.50                  U     stosq	%rax, %es:(%rdi)
+# CHECK-NEXT:  1      1     0.50           *      U     stosb	%al, %es:(%rdi)
+# CHECK-NEXT:  1      1     0.50           *      U     stosw	%ax, %es:(%rdi)
+# CHECK-NEXT:  1      1     0.50           *      U     stosl	%eax, %es:(%rdi)
+# CHECK-NEXT:  1      1     0.50           *      U     stosq	%rax, %es:(%rdi)
 # CHECK-NEXT:  1      1     0.50                        subb	$7, %al
 # CHECK-NEXT:  1      1     0.50                        subb	$7, %dil
 # CHECK-NEXT:  1      1     1.00    *      *            subb	$7, (%rax)
diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s
index 90cbb4891e75d..1a77d72f18192 100644
--- a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s
+++ b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s
@@ -1292,10 +1292,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.33                        cmpq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   cmpq	%rsi, (%rax)
 # CHECK-NEXT:  2      6     0.50    *                   cmpq	(%rax), %rdi
-# CHECK-NEXT:  5      8     1.00                  U     cmpsb	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  5      8     1.00                  U     cmpsw	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  5      8     1.00                  U     cmpsl	%es:(%rdi), (%rsi)
-# CHECK-NEXT:  5      8     1.00                  U     cmpsq	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  5      8     1.00    *             U     cmpsb	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  5      8     1.00    *             U     cmpsw	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  5      8     1.00    *             U     cmpsl	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  5      8     1.00    *             U     cmpsq	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  4      5     1.33                        cmpxchgb	%cl, %bl
 # CHECK-NEXT:  6      8     2.00    *      *            cmpxchgb	%cl, (%rbx)
 # CHECK-NEXT:  6      8     2.00    *      *            lock		cmpxchgb	%cl, (%rbx)
@@ -1390,17 +1390,17 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.33                  U     invlpga
 # CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  3      7     0.67    *                   leave
-# CHECK-NEXT:  3      7     0.67                  U     lodsb	(%rsi), %al
-# CHECK-NEXT:  3      7     0.67                  U     lodsw	(%rsi), %ax
-# CHECK-NEXT:  2      6     0.50                  U     lodsl	(%rsi), %eax
-# CHECK-NEXT:  2      6     0.50                  U     lodsq	(%rsi), %rax
+# CHECK-NEXT:  3      7     0.67    *             U     lodsb	(%rsi), %al
+# CHECK-NEXT:  3      7     0.67    *             U     lodsw	(%rsi), %ax
+# CHECK-NEXT:  2      6     0.50    *             U     lodsl	(%rsi), %eax
+# CHECK-NEXT:  2      6     0.50    *             U     lodsq	(%rsi), %rax
 # CHECK-NEXT:  8      3     3.00                  U     loop	0
 # CHECK-NEXT:  12     4     4.00                  U     loope	0
 # CHECK-NEXT:  12     4     4.00                  U     loopne	0
-# CHECK-NEXT:  5      8     1.00                  U     movsb	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  5      8     1.00                  U     movsw	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  5      8     1.00                  U     movsl	(%rsi), %es:(%rdi)
-# CHECK-NEXT:  5      8     1.00                  U     movsq	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  5      8     1.00    *      *      U     movsb	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  5      8     1.00    *      *      U     movsw	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  5      8     1.00    *      *      U     movsl	(%rsi), %es:(%rdi)
+# CHECK-NEXT:  5      8     1.00    *      *      U     movsq	(%rsi), %es:(%rdi)
 # CHECK-NEXT:  1      1     0.33                        movsbw	%al, %di
 # CHECK-NEXT:  1      1     0.33                        movzbw	%al, %di
 # CHECK-NEXT:  1      5     0.50    *                   movsbw	(%rax), %di
@@ -1743,10 +1743,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  4      9     1.00    *      *            sbbq	%rsi, (%rax)
 # CHECK-NEXT:  4      9     1.00    *      *            lock		sbbq	%rsi, (%rax)
 # CHECK-NEXT:  3      7     0.67    *                   sbbq	(%rax), %rdi
-# CHECK-NEXT:  2      2     0.67                  U     scasb	%es:(%rdi), %al
-# CHECK-NEXT:  2      2     0.67                  U     scasw	%es:(%rdi), %ax
-# CHECK-NEXT:  2      2     0.67                  U     scasl	%es:(%rdi), %eax
-# CHECK-NEXT:  2      2     0.67                  U     scasq	%es:(%rdi), %rax
+# CHECK-NEXT:  2      2     0.67    *             U     scasb	%es:(%rdi), %al
+# CHECK-NEXT:  2      2     0.67    *             U     scasw	%es:(%rdi), %ax
+# CHECK-NEXT:  2      2     0.67    *             U     scasl	%es:(%rdi), %eax
+# CHECK-NEXT:  2      2     0.67    *             U     scasq	%es:(%rdi), %rax
 # CHECK-NEXT:  1      1     0.50                        seto	%al
 # CHECK-NEXT:  3      2     1.00           *            seto	(%rax)
 # CHECK-NEXT:  1      1     0.50                        setno	%al
@@ -1805,10 +1805,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  5      8     1.00    *      *            shrdq	$7, %rsi, (%rax)
 # CHECK-NEXT:  1      1     0.33                  U     stc
 # CHECK-NEXT:  1      1     0.33                  U     std
-# CHECK-NEXT:  3      5     1.00                  U     stosb	%al, %es:(%rdi)
-# CHECK-NEXT:  3      5     1.00                  U     stosw	%ax, %es:(%rdi)
-# CHECK-NEXT:  3      5     1.00                  U     stosl	%eax, %es:(%rdi)
-# CHECK-NEXT:  3      5     1.00                  U     stosq	%rax, %es:(%rdi)
+# CHECK-NEXT:  3      5     1.00           *      U     stosb	%al, %es:(%rdi)
+# CHECK-NEXT:  3      5     1.00           *      U     stosw	%ax, %es:(%rdi)
+# CHECK-NEXT:  3      5     1.00           *      U     stosl	%eax, %es:(%rdi)
+# CHECK-NEXT:  3      5     1.00           *      U     stosq	%rax, %es:(%rdi)
 # CHECK-NEXT:  1      1     0.33                        subb	$7, %al
 # CHECK-NEXT:  1      1     0.33                        subb	$7, %dil
 # CHECK-NEXT:  3      7     1.00    *      *            subb	$7, (%rax)
diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s
index e7a0125bd0957..084d25ad71386 100644
--- a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s
+++ b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s
@@ -1292,10 +1292,10 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/185689


More information about the llvm-commits mailing list