[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