aboutsummaryrefslogtreecommitdiff
path: root/test/tools/llvm-mca/X86
diff options
context:
space:
mode:
Diffstat (limited to 'test/tools/llvm-mca/X86')
-rw-r--r--test/tools/llvm-mca/X86/Atom/resources-x86_32.s72
-rw-r--r--test/tools/llvm-mca/X86/Atom/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s80
-rw-r--r--test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s22
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s39
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s36
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/one-idioms.s112
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s84
-rw-r--r--test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/Generic/resources-x86_32.s78
-rw-r--r--test/tools/llvm-mca/X86/Generic/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/Haswell/resources-x86_32.s80
-rw-r--r--test/tools/llvm-mca/X86/Haswell/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/SLM/resources-x86_32.s78
-rw-r--r--test/tools/llvm-mca/X86/SLM/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s78
-rw-r--r--test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s80
-rw-r--r--test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s80
-rw-r--r--test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s61
-rw-r--r--test/tools/llvm-mca/X86/Znver1/resources-x86_32.s82
-rw-r--r--test/tools/llvm-mca/X86/Znver1/resources-x86_64.s61
24 files changed, 1497 insertions, 114 deletions
diff --git a/test/tools/llvm-mca/X86/Atom/resources-x86_32.s b/test/tools/llvm-mca/X86/Atom/resources-x86_32.s
new file mode 100644
index 000000000000..f913a2f3082f
--- /dev/null
+++ b/test/tools/llvm-mca/X86/Atom/resources-x86_32.s
@@ -0,0 +1,72 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 13 6.50 aaa
+# CHECK-NEXT: 1 7 3.50 aad
+# CHECK-NEXT: 1 7 3.50 aad $7
+# CHECK-NEXT: 1 21 10.50 aam
+# CHECK-NEXT: 1 21 10.50 aam $7
+# CHECK-NEXT: 1 13 6.50 aas
+# CHECK-NEXT: 1 11 5.50 U bound %bx, (%eax)
+# CHECK-NEXT: 1 11 5.50 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 18 9.00 daa
+# CHECK-NEXT: 1 20 10.00 das
+# CHECK-NEXT: 1 6 3.00 U into
+# CHECK-NEXT: 1 2 1.00 * leave
+# CHECK-NEXT: 1 1 0.50 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1]
+# CHECK-NEXT: 75.50 75.50
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] Instructions:
+# CHECK-NEXT: 6.50 6.50 aaa
+# CHECK-NEXT: 3.50 3.50 aad
+# CHECK-NEXT: 3.50 3.50 aad $7
+# CHECK-NEXT: 10.50 10.50 aam
+# CHECK-NEXT: 10.50 10.50 aam $7
+# CHECK-NEXT: 6.50 6.50 aas
+# CHECK-NEXT: 5.50 5.50 bound %bx, (%eax)
+# CHECK-NEXT: 5.50 5.50 bound %ebx, (%eax)
+# CHECK-NEXT: 9.00 9.00 daa
+# CHECK-NEXT: 10.00 10.00 das
+# CHECK-NEXT: 3.00 3.00 into
+# CHECK-NEXT: 1.00 1.00 leave
+# CHECK-NEXT: 0.50 0.50 salc
diff --git a/test/tools/llvm-mca/X86/Atom/resources-x86_64.s b/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
index 32823eff8471..bd8578bf8e1a 100644
--- a/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,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 1 0.50 decb %dil
# CHECK-NEXT: 1 1 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.50 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.50 incq %rdi
# CHECK-NEXT: 1 1 1.00 * * incq (%rax)
# CHECK-NEXT: 1 2 1.00 lahf
+# 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 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
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 9 4.50 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 1 9 4.50 * * shldq $7, %rsi, (%rax)
# 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 subb $7, %al
# CHECK-NEXT: 1 1 0.50 subb $7, %dil
# CHECK-NEXT: 1 1 1.00 * * subb $7, (%rax)
@@ -1322,7 +1363,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1]
-# CHECK-NEXT: 1418.00 1088.00
+# CHECK-NEXT: 1447.00 1117.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] Instructions:
@@ -1517,6 +1558,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 0.50 0.50 cmpq %rsi, %rdi
# CHECK-NEXT: 1.00 - cmpq %rsi, (%rax)
# CHECK-NEXT: 1.00 - cmpq (%rax), %rdi
+# CHECK-NEXT: 1.50 1.50 cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1.50 1.50 cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1.50 1.50 cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1.50 1.50 cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 0.50 0.50 decb %dil
# CHECK-NEXT: 1.00 - decb (%rax)
# CHECK-NEXT: 0.50 0.50 decw %di
@@ -1576,6 +1621,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 0.50 0.50 incq %rdi
# CHECK-NEXT: 1.00 - incq (%rax)
# CHECK-NEXT: 1.00 1.00 lahf
+# CHECK-NEXT: 1.00 1.00 lodsb (%rsi), %al
+# CHECK-NEXT: 1.00 1.00 lodsw (%rsi), %ax
+# CHECK-NEXT: 1.00 1.00 lodsl (%rsi), %eax
+# CHECK-NEXT: 1.00 1.00 lodsq (%rsi), %rax
+# CHECK-NEXT: 1.50 1.50 movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1.50 1.50 movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1.50 1.50 movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1.50 1.50 movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1.00 1.00 movsbw %al, %di
# CHECK-NEXT: 1.00 1.00 movzbw %al, %di
# CHECK-NEXT: 1.50 1.50 movsbw (%rax), %di
@@ -1882,6 +1935,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 4.50 4.50 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 4.50 4.50 shldq $7, %rsi, (%rax)
# CHECK-NEXT: 4.50 4.50 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 0.50 0.50 stc
+# CHECK-NEXT: 10.50 10.50 std
+# CHECK-NEXT: 0.50 0.50 stosb %al, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 stosq %rax, %es:(%rdi)
# CHECK-NEXT: 0.50 0.50 subb $7, %al
# CHECK-NEXT: 0.50 0.50 subb $7, %dil
# CHECK-NEXT: 1.00 - subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s b/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s
new file mode 100644
index 000000000000..b880fe5b8103
--- /dev/null
+++ b/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=broadwell -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.25 aaa
+# CHECK-NEXT: 1 100 0.25 aad
+# CHECK-NEXT: 1 100 0.25 aad $7
+# CHECK-NEXT: 1 100 0.25 aam
+# CHECK-NEXT: 1 100 0.25 aam $7
+# CHECK-NEXT: 1 100 0.25 aas
+# CHECK-NEXT: 1 100 0.25 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.25 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.25 daa
+# CHECK-NEXT: 1 100 0.25 das
+# CHECK-NEXT: 1 100 0.25 U into
+# CHECK-NEXT: 3 7 0.50 * leave
+# CHECK-NEXT: 1 1 0.25 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - BWDivider
+# CHECK-NEXT: [1] - BWFPDivider
+# CHECK-NEXT: [2] - BWPort0
+# CHECK-NEXT: [3] - BWPort1
+# CHECK-NEXT: [4] - BWPort2
+# CHECK-NEXT: [5] - BWPort3
+# CHECK-NEXT: [6] - BWPort4
+# CHECK-NEXT: [7] - BWPort5
+# CHECK-NEXT: [8] - BWPort6
+# CHECK-NEXT: [9] - BWPort7
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
+# CHECK-NEXT: - - 3.50 3.50 0.50 0.50 - 3.50 3.50 -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aaa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aas
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %bx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - daa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - das
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - into
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - leave
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - salc
diff --git a/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s b/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
index ea6d7c6052b0..1083227070ce 100644
--- a/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 cmpq %rsi, %rdi
# CHECK-NEXT: 2 6 0.50 * cmpq %rsi, (%rax)
# CHECK-NEXT: 2 6 0.50 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 0.25 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.25 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.25 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 1 100 0.25 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 0.25 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 0.25 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 0.25 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 0.25 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 movsbw %al, %di
# CHECK-NEXT: 1 1 0.25 movzbw %al, %di
# CHECK-NEXT: 1 5 0.50 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 3 1.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 4 9 1.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 4 9 1.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.25 U stc
+# CHECK-NEXT: 6 6 1.50 U std
+# CHECK-NEXT: 3 2 1.00 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosq %rax, %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 subb $7, %al
# CHECK-NEXT: 1 1 0.25 subb $7, %dil
# CHECK-NEXT: 3 7 1.00 * * subb $7, (%rax)
@@ -1330,7 +1371,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: 50.00 - 377.00 267.50 218.00 218.00 167.00 161.00 343.50 69.00
+# CHECK-NEXT: 50.00 - 382.50 273.00 219.33 219.33 171.00 166.50 350.00 70.33
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1525,6 +1566,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq (%rax), %rdi
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decw %di
@@ -1584,6 +1629,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - incq %rdi
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 incq (%rax)
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - lahf
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsbw %al, %di
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movzbw %al, %di
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movsbw (%rax), %di
@@ -1890,6 +1943,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - 1.00 - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - stc
+# CHECK-NEXT: - - 1.25 1.25 - - - 1.25 2.25 - std
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %al
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s
index bc5ceb5b72e7..001fb8ed6612 100644
--- a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s
+++ b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s
@@ -11,9 +11,9 @@ cmovae %ebx, %eax
# CHECK: Iterations: 1500
# CHECK-NEXT: Instructions: 3000
-# CHECK-NEXT: Total Cycles: 3003
+# CHECK-NEXT: Total Cycles: 1504
# CHECK-NEXT: Dispatch Width: 2
-# CHECK-NEXT: IPC: 1.00
+# CHECK-NEXT: IPC: 1.99
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Instruction Info:
@@ -54,14 +54,14 @@ cmovae %ebx, %eax
# CHECK-NEXT: 1.00 - - - - - - - - - - - - - cmovael %ebx, %eax
# CHECK: Timeline view:
-# CHECK-NEXT: Index 012345678
+# CHECK-NEXT: Index 0123456
-# CHECK: [0,0] DeER . . cmpl %eax, %eax
-# CHECK-NEXT: [0,1] D=eER. . cmovael %ebx, %eax
-# CHECK-NEXT: [1,0] .D=eER . cmpl %eax, %eax
-# CHECK-NEXT: [1,1] .D==eER . cmovael %ebx, %eax
-# CHECK-NEXT: [2,0] . D==eER. cmpl %eax, %eax
-# CHECK-NEXT: [2,1] . D===eER cmovael %ebx, %eax
+# CHECK: [0,0] DeER .. cmpl %eax, %eax
+# CHECK-NEXT: [0,1] D=eER.. cmovael %ebx, %eax
+# CHECK-NEXT: [1,0] .DeER.. cmpl %eax, %eax
+# CHECK-NEXT: [1,1] .D=eER. cmovael %ebx, %eax
+# CHECK-NEXT: [2,0] . DeER. cmpl %eax, %eax
+# CHECK-NEXT: [2,1] . D=eER cmovael %ebx, %eax
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
@@ -70,5 +70,5 @@ cmovae %ebx, %eax
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
# CHECK: [0] [1] [2] [3]
-# CHECK-NEXT: 0. 3 2.0 0.3 0.0 cmpl %eax, %eax
-# CHECK-NEXT: 1. 3 3.0 0.0 0.0 cmovael %ebx, %eax
+# CHECK-NEXT: 0. 3 1.0 1.0 0.0 cmpl %eax, %eax
+# CHECK-NEXT: 1. 3 2.0 0.0 0.0 cmovael %ebx, %eax
diff --git a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s
index 97bf501e577a..04007f24e42b 100644
--- a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s
+++ b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s
@@ -14,9 +14,9 @@ vpcmpeqq %xmm3, %xmm3, %xmm0
# CHECK: Iterations: 1500
# CHECK-NEXT: Instructions: 6000
-# CHECK-NEXT: Total Cycles: 6003
+# CHECK-NEXT: Total Cycles: 3003
# CHECK-NEXT: Dispatch Width: 2
-# CHECK-NEXT: IPC: 1.00
+# CHECK-NEXT: IPC: 2.00
# CHECK-NEXT: Block RThroughput: 2.0
# CHECK: Instruction Info:
@@ -61,21 +61,20 @@ vpcmpeqq %xmm3, %xmm3, %xmm0
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqq %xmm3, %xmm3, %xmm0
# CHECK: Timeline view:
-# CHECK-NEXT: 01234
-# CHECK-NEXT: Index 0123456789
+# CHECK-NEXT: Index 012345678
-# CHECK: [0,0] DeER . . . vpcmpeqb %xmm0, %xmm0, %xmm1
-# CHECK-NEXT: [0,1] D=eER. . . vpcmpeqw %xmm1, %xmm1, %xmm2
-# CHECK-NEXT: [0,2] .D=eER . . vpcmpeqd %xmm2, %xmm2, %xmm3
-# CHECK-NEXT: [0,3] .D==eER . . vpcmpeqq %xmm3, %xmm3, %xmm0
-# CHECK-NEXT: [1,0] . D==eER . . vpcmpeqb %xmm0, %xmm0, %xmm1
-# CHECK-NEXT: [1,1] . D===eER . . vpcmpeqw %xmm1, %xmm1, %xmm2
-# CHECK-NEXT: [1,2] . D===eER. . vpcmpeqd %xmm2, %xmm2, %xmm3
-# CHECK-NEXT: [1,3] . D====eER . vpcmpeqq %xmm3, %xmm3, %xmm0
-# CHECK-NEXT: [2,0] . D====eER . vpcmpeqb %xmm0, %xmm0, %xmm1
-# CHECK-NEXT: [2,1] . D=====eER . vpcmpeqw %xmm1, %xmm1, %xmm2
-# CHECK-NEXT: [2,2] . D=====eER. vpcmpeqd %xmm2, %xmm2, %xmm3
-# CHECK-NEXT: [2,3] . D======eER vpcmpeqq %xmm3, %xmm3, %xmm0
+# CHECK: [0,0] DeER . . vpcmpeqb %xmm0, %xmm0, %xmm1
+# CHECK-NEXT: [0,1] DeER . . vpcmpeqw %xmm1, %xmm1, %xmm2
+# CHECK-NEXT: [0,2] .DeER. . vpcmpeqd %xmm2, %xmm2, %xmm3
+# CHECK-NEXT: [0,3] .DeER. . vpcmpeqq %xmm3, %xmm3, %xmm0
+# CHECK-NEXT: [1,0] . DeER . vpcmpeqb %xmm0, %xmm0, %xmm1
+# CHECK-NEXT: [1,1] . DeER . vpcmpeqw %xmm1, %xmm1, %xmm2
+# CHECK-NEXT: [1,2] . DeER . vpcmpeqd %xmm2, %xmm2, %xmm3
+# CHECK-NEXT: [1,3] . DeER . vpcmpeqq %xmm3, %xmm3, %xmm0
+# CHECK-NEXT: [2,0] . DeER. vpcmpeqb %xmm0, %xmm0, %xmm1
+# CHECK-NEXT: [2,1] . DeER. vpcmpeqw %xmm1, %xmm1, %xmm2
+# CHECK-NEXT: [2,2] . DeER vpcmpeqd %xmm2, %xmm2, %xmm3
+# CHECK-NEXT: [2,3] . DeER vpcmpeqq %xmm3, %xmm3, %xmm0
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
@@ -84,7 +83,7 @@ vpcmpeqq %xmm3, %xmm3, %xmm0
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
# CHECK: [0] [1] [2] [3]
-# CHECK-NEXT: 0. 3 3.0 0.3 0.0 vpcmpeqb %xmm0, %xmm0, %xmm1
-# CHECK-NEXT: 1. 3 4.0 0.0 0.0 vpcmpeqw %xmm1, %xmm1, %xmm2
-# CHECK-NEXT: 2. 3 4.0 0.0 0.0 vpcmpeqd %xmm2, %xmm2, %xmm3
-# CHECK-NEXT: 3. 3 5.0 0.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm0
+# CHECK-NEXT: 0. 3 1.0 1.0 0.0 vpcmpeqb %xmm0, %xmm0, %xmm1
+# CHECK-NEXT: 1. 3 1.0 1.0 0.0 vpcmpeqw %xmm1, %xmm1, %xmm2
+# CHECK-NEXT: 2. 3 1.0 1.0 0.0 vpcmpeqd %xmm2, %xmm2, %xmm3
+# CHECK-NEXT: 3. 3 1.0 1.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm0
diff --git a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s
index 00b88954e489..da94624fd551 100644
--- a/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s
+++ b/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s
@@ -13,9 +13,9 @@ sbb %eax, %eax
# CHECK: Iterations: 1500
# CHECK-NEXT: Instructions: 4500
-# CHECK-NEXT: Total Cycles: 6745
+# CHECK-NEXT: Total Cycles: 3007
# CHECK-NEXT: Dispatch Width: 2
-# CHECK-NEXT: IPC: 0.67
+# CHECK-NEXT: IPC: 1.50
# CHECK-NEXT: Block RThroughput: 2.0
# CHECK: Instruction Info:
@@ -49,27 +49,27 @@ sbb %eax, %eax
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
-# CHECK-NEXT: 2.01 1.99 - - - - - - 1.00 - - - - -
+# CHECK-NEXT: 2.00 2.00 - - - - - - 1.00 - - - - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %edx, %eax
-# CHECK-NEXT: 0.99 0.01 - - - - - - - - - - - - addl %edx, %edx
-# CHECK-NEXT: 1.01 0.99 - - - - - - - - - - - - sbbl %eax, %eax
+# CHECK-NEXT: - 1.00 - - - - - - - - - - - - addl %edx, %edx
+# CHECK-NEXT: 2.00 - - - - - - - - - - - - - sbbl %eax, %eax
# CHECK: Timeline view:
-# CHECK-NEXT: 012345
+# CHECK-NEXT: 01
# CHECK-NEXT: Index 0123456789
-# CHECK: [0,0] DeeeER . . imull %edx, %eax
-# CHECK-NEXT: [0,1] .DeE-R . . addl %edx, %edx
-# CHECK-NEXT: [0,2] .D==eER . . sbbl %eax, %eax
-# CHECK-NEXT: [1,0] . D===eeeER . imull %edx, %eax
-# CHECK-NEXT: [1,1] . DeE----R . addl %edx, %edx
-# CHECK-NEXT: [1,2] . D=====eER . sbbl %eax, %eax
-# CHECK-NEXT: [2,0] . D=====eeeER. imull %edx, %eax
-# CHECK-NEXT: [2,1] . DeE------R. addl %edx, %edx
-# CHECK-NEXT: [2,2] . D=======eER sbbl %eax, %eax
+# CHECK: [0,0] DeeeER .. imull %edx, %eax
+# CHECK-NEXT: [0,1] .DeE-R .. addl %edx, %edx
+# CHECK-NEXT: [0,2] .D=eE-R .. sbbl %eax, %eax
+# CHECK-NEXT: [1,0] . D==eeeER.. imull %edx, %eax
+# CHECK-NEXT: [1,1] . DeE---R.. addl %edx, %edx
+# CHECK-NEXT: [1,2] . D=eE---R. sbbl %eax, %eax
+# CHECK-NEXT: [2,0] . D=eeeER. imull %edx, %eax
+# CHECK-NEXT: [2,1] . D=eE--R addl %edx, %edx
+# CHECK-NEXT: [2,2] . D==eE-R sbbl %eax, %eax
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
@@ -78,6 +78,6 @@ sbb %eax, %eax
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
# CHECK: [0] [1] [2] [3]
-# CHECK-NEXT: 0. 3 3.7 0.7 0.0 imull %edx, %eax
-# CHECK-NEXT: 1. 3 1.0 1.0 3.7 addl %edx, %edx
-# CHECK-NEXT: 2. 3 5.7 0.0 0.0 sbbl %eax, %eax
+# CHECK-NEXT: 0. 3 2.0 0.7 0.0 imull %edx, %eax
+# CHECK-NEXT: 1. 3 1.3 1.3 2.0 addl %edx, %edx
+# CHECK-NEXT: 2. 3 2.3 0.0 1.7 sbbl %eax, %eax
diff --git a/test/tools/llvm-mca/X86/BtVer2/one-idioms.s b/test/tools/llvm-mca/X86/BtVer2/one-idioms.s
index 3beaf829c1a4..3c20002d9c8c 100644
--- a/test/tools/llvm-mca/X86/BtVer2/one-idioms.s
+++ b/test/tools/llvm-mca/X86/BtVer2/one-idioms.s
@@ -1,9 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
-# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -timeline -timeline-max-iterations=1 -register-file-stats < %s | FileCheck %s
# These are dependency-breaking one-idioms.
# Much like zero-idioms, but they produce ones, and do consume resources.
+# perf stats reports a throughput of 2.00 IPC.
+
pcmpeqb %mm2, %mm2
pcmpeqd %mm2, %mm2
pcmpeqw %mm2, %mm2
@@ -25,11 +27,11 @@ vpcmpeqw %xmm3, %xmm3, %xmm5
# FIXME: their handling is broken in llvm-mca.
-# CHECK: Iterations: 1
-# CHECK-NEXT: Instructions: 15
-# CHECK-NEXT: Total Cycles: 12
+# CHECK: Iterations: 100
+# CHECK-NEXT: Instructions: 1500
+# CHECK-NEXT: Total Cycles: 753
# CHECK-NEXT: Dispatch Width: 2
-# CHECK-NEXT: IPC: 1.25
+# CHECK-NEXT: IPC: 1.99
# CHECK-NEXT: Block RThroughput: 7.5
# CHECK: Instruction Info:
@@ -58,13 +60,13 @@ vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK-NEXT: 1 1 0.50 vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK: Register File statistics:
-# CHECK-NEXT: Total number of mappings created: 15
-# CHECK-NEXT: Max number of mappings used: 8
+# CHECK-NEXT: Total number of mappings created: 1500
+# CHECK-NEXT: Max number of mappings used: 6
# CHECK: * Register File #1 -- JFpuPRF:
# CHECK-NEXT: Number of physical registers: 72
-# CHECK-NEXT: Total number of mappings created: 15
-# CHECK-NEXT: Max number of mappings used: 8
+# CHECK-NEXT: Total number of mappings created: 1500
+# CHECK-NEXT: Max number of mappings used: 6
# CHECK: * Register File #2 -- JIntegerPRF:
# CHECK-NEXT: Number of physical registers: 64
@@ -89,45 +91,45 @@ vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
-# CHECK-NEXT: - - - - - 7.00 8.00 - - - - 7.00 8.00 -
+# CHECK-NEXT: - - - - - 7.50 7.50 - - - - 7.50 7.50 -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpeqb %mm2, %mm2
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpeqd %mm2, %mm2
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpeqw %mm2, %mm2
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpeqb %xmm2, %xmm2
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpeqd %xmm2, %xmm2
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpeqq %xmm2, %xmm2
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpeqw %xmm2, %xmm2
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpcmpeqb %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpcmpeqd %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqq %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpcmpeqw %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqb %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpcmpeqd %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqq %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpcmpeqw %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqb %mm2, %mm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqd %mm2, %mm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqw %mm2, %mm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqb %xmm2, %xmm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqd %xmm2, %xmm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqq %xmm2, %xmm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqw %xmm2, %xmm2
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqb %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqd %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqq %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqw %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqb %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqd %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqq %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK: Timeline view:
-# CHECK-NEXT: 01
+# CHECK-NEXT: 0
# CHECK-NEXT: Index 0123456789
-# CHECK: [0,0] DeER . .. pcmpeqb %mm2, %mm2
-# CHECK-NEXT: [0,1] D=eER. .. pcmpeqd %mm2, %mm2
-# CHECK-NEXT: [0,2] .D=eER .. pcmpeqw %mm2, %mm2
-# CHECK-NEXT: [0,3] .DeE-R .. pcmpeqb %xmm2, %xmm2
-# CHECK-NEXT: [0,4] . DeE-R .. pcmpeqd %xmm2, %xmm2
-# CHECK-NEXT: [0,5] . D=eER .. pcmpeqq %xmm2, %xmm2
-# CHECK-NEXT: [0,6] . D=eER .. pcmpeqw %xmm2, %xmm2
-# CHECK-NEXT: [0,7] . DeE-R .. vpcmpeqb %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,8] . DeE-R .. vpcmpeqd %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,9] . D=eER .. vpcmpeqq %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,10] . D=eER.. vpcmpeqw %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,11] . D==eER. vpcmpeqb %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,12] . .D=eER. vpcmpeqd %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,13] . .D==eER vpcmpeqq %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,14] . . D=eER vpcmpeqw %xmm3, %xmm3, %xmm5
+# CHECK: [0,0] DeER . . pcmpeqb %mm2, %mm2
+# CHECK-NEXT: [0,1] DeER . . pcmpeqd %mm2, %mm2
+# CHECK-NEXT: [0,2] .DeER. . pcmpeqw %mm2, %mm2
+# CHECK-NEXT: [0,3] .DeER. . pcmpeqb %xmm2, %xmm2
+# CHECK-NEXT: [0,4] . DeER . pcmpeqd %xmm2, %xmm2
+# CHECK-NEXT: [0,5] . DeER . pcmpeqq %xmm2, %xmm2
+# CHECK-NEXT: [0,6] . DeER . pcmpeqw %xmm2, %xmm2
+# CHECK-NEXT: [0,7] . DeER . vpcmpeqb %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,8] . DeER . vpcmpeqd %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,9] . DeER . vpcmpeqq %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,10] . DeER . vpcmpeqw %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,11] . DeER . vpcmpeqb %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,12] . .DeER. vpcmpeqd %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,13] . .DeER. vpcmpeqq %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,14] . . DeER vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
@@ -137,17 +139,17 @@ vpcmpeqw %xmm3, %xmm3, %xmm5
# CHECK: [0] [1] [2] [3]
# CHECK-NEXT: 0. 1 1.0 1.0 0.0 pcmpeqb %mm2, %mm2
-# CHECK-NEXT: 1. 1 2.0 0.0 0.0 pcmpeqd %mm2, %mm2
-# CHECK-NEXT: 2. 1 2.0 0.0 0.0 pcmpeqw %mm2, %mm2
-# CHECK-NEXT: 3. 1 1.0 1.0 1.0 pcmpeqb %xmm2, %xmm2
-# CHECK-NEXT: 4. 1 1.0 0.0 1.0 pcmpeqd %xmm2, %xmm2
-# CHECK-NEXT: 5. 1 2.0 0.0 0.0 pcmpeqq %xmm2, %xmm2
-# CHECK-NEXT: 6. 1 2.0 0.0 0.0 pcmpeqw %xmm2, %xmm2
-# CHECK-NEXT: 7. 1 1.0 1.0 1.0 vpcmpeqb %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 8. 1 1.0 0.0 1.0 vpcmpeqd %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 9. 1 2.0 0.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 10. 1 2.0 0.0 0.0 vpcmpeqw %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 11. 1 3.0 0.0 0.0 vpcmpeqb %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 12. 1 2.0 0.0 0.0 vpcmpeqd %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 13. 1 3.0 1.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 14. 1 2.0 1.0 0.0 vpcmpeqw %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 1. 1 1.0 1.0 0.0 pcmpeqd %mm2, %mm2
+# CHECK-NEXT: 2. 1 1.0 1.0 0.0 pcmpeqw %mm2, %mm2
+# CHECK-NEXT: 3. 1 1.0 1.0 0.0 pcmpeqb %xmm2, %xmm2
+# CHECK-NEXT: 4. 1 1.0 1.0 0.0 pcmpeqd %xmm2, %xmm2
+# CHECK-NEXT: 5. 1 1.0 1.0 0.0 pcmpeqq %xmm2, %xmm2
+# CHECK-NEXT: 6. 1 1.0 1.0 0.0 pcmpeqw %xmm2, %xmm2
+# CHECK-NEXT: 7. 1 1.0 1.0 0.0 vpcmpeqb %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 8. 1 1.0 1.0 0.0 vpcmpeqd %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 9. 1 1.0 1.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 10. 1 1.0 1.0 0.0 vpcmpeqw %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 11. 1 1.0 1.0 0.0 vpcmpeqb %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 12. 1 1.0 1.0 0.0 vpcmpeqd %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 13. 1 1.0 1.0 0.0 vpcmpeqq %xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 14. 1 1.0 1.0 0.0 vpcmpeqw %xmm3, %xmm3, %xmm5
diff --git a/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s b/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s
new file mode 100644
index 000000000000..5556e78a0155
--- /dev/null
+++ b/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s
@@ -0,0 +1,84 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.50 aaa
+# CHECK-NEXT: 1 100 0.50 aad
+# CHECK-NEXT: 1 100 0.50 aad $7
+# CHECK-NEXT: 1 100 0.50 aam
+# CHECK-NEXT: 1 100 0.50 aam $7
+# CHECK-NEXT: 1 100 0.50 aas
+# CHECK-NEXT: 1 100 0.50 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.50 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.50 daa
+# CHECK-NEXT: 1 100 0.50 das
+# CHECK-NEXT: 1 100 0.50 U into
+# CHECK-NEXT: 1 1 0.50 * leave
+# CHECK-NEXT: 1 1 0.50 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - JALU0
+# CHECK-NEXT: [1] - JALU1
+# CHECK-NEXT: [2] - JDiv
+# CHECK-NEXT: [3] - JFPA
+# CHECK-NEXT: [4] - JFPM
+# CHECK-NEXT: [5] - JFPU0
+# CHECK-NEXT: [6] - JFPU1
+# CHECK-NEXT: [7] - JLAGU
+# CHECK-NEXT: [8] - JMul
+# CHECK-NEXT: [9] - JSAGU
+# CHECK-NEXT: [10] - JSTC
+# CHECK-NEXT: [11] - JVALU0
+# CHECK-NEXT: [12] - JVALU1
+# CHECK-NEXT: [13] - JVIMUL
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
+# CHECK-NEXT: 6.50 6.50 - - - - - - - - - - - -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aaa
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aad
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aad $7
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aam
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aam $7
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - aas
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - bound %bx, (%eax)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - bound %ebx, (%eax)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - daa
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - das
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - into
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leave
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - salc
diff --git a/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s b/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
index 8a99598a5762..c5ffa6ced328 100644
--- a/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.50 cmpq %rsi, %rdi
# CHECK-NEXT: 1 4 1.00 * cmpq %rsi, (%rax)
# CHECK-NEXT: 1 4 1.00 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 0.50 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.50 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.50 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.50 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.50 decb %dil
# CHECK-NEXT: 2 5 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.50 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.50 incq %rdi
# CHECK-NEXT: 2 5 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 1 100 0.50 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 0.50 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 0.50 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 0.50 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 0.50 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.50 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.50 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.50 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.50 movsbw %al, %di
# CHECK-NEXT: 1 1 0.50 movzbw %al, %di
# CHECK-NEXT: 1 4 1.00 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 6 3 3.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 8 9 11.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 8 9 11.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.50 U stc
+# CHECK-NEXT: 1 1 0.50 U std
+# CHECK-NEXT: 1 100 0.50 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 1 100 0.50 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 1 100 0.50 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 1 100 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: 2 5 1.00 * * subb $7, (%rax)
@@ -1334,7 +1375,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
-# CHECK-NEXT: 493.00 543.00 380.00 - - - - 295.00 64.00 195.00 - - - -
+# CHECK-NEXT: 502.00 552.00 380.00 - - - - 295.00 64.00 195.00 - - - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
@@ -1529,6 +1570,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpq %rsi, %rdi
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmpq %rsi, (%rax)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmpq (%rax), %rdi
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - decb %dil
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - decb (%rax)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - decw %di
@@ -1588,6 +1633,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - incq %rdi
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - incq (%rax)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lahf
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lodsb (%rsi), %al
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lodsw (%rsi), %ax
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lodsl (%rsi), %eax
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lodsq (%rsi), %rax
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movsbw %al, %di
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movzbw %al, %di
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - movsbw (%rax), %di
@@ -1894,6 +1947,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 3.00 3.00 - - - - - - - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: 11.00 11.00 - - - - - 1.00 - - - - - - shldq $7, %rsi, (%rax)
# CHECK-NEXT: 11.00 11.00 - - - - - 1.00 - - - - - - shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - stc
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - std
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - stosb %al, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - stosq %rax, %es:(%rdi)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - subb $7, %al
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - subb $7, %dil
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/Generic/resources-x86_32.s b/test/tools/llvm-mca/X86/Generic/resources-x86_32.s
new file mode 100644
index 000000000000..b4672620cf43
--- /dev/null
+++ b/test/tools/llvm-mca/X86/Generic/resources-x86_32.s
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.33 aaa
+# CHECK-NEXT: 1 100 0.33 aad
+# CHECK-NEXT: 1 100 0.33 aad $7
+# CHECK-NEXT: 1 100 0.33 aam
+# CHECK-NEXT: 1 100 0.33 aam $7
+# CHECK-NEXT: 1 100 0.33 aas
+# CHECK-NEXT: 1 100 0.33 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.33 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.33 daa
+# CHECK-NEXT: 1 100 0.33 das
+# CHECK-NEXT: 1 100 0.33 U into
+# CHECK-NEXT: 3 7 0.67 * leave
+# CHECK-NEXT: 1 1 0.33 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
+# CHECK-NEXT: - - 4.67 4.67 - 4.67 0.50 0.50
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aaa
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aad
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aad $7
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aam
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aam $7
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aas
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - bound %bx, (%eax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - daa
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - das
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - into
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 leave
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - salc
diff --git a/test/tools/llvm-mca/X86/Generic/resources-x86_64.s b/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
index e27b322fa9b1..c04a56673db9 100644
--- a/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,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: 1 1 0.33 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.33 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.33 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# 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: 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
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 2 2 0.67 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 5 8 1.00 * * shldq $7, %rsi, (%rax)
# 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: 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)
@@ -1328,7 +1369,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
-# CHECK-NEXT: 160.00 - 365.50 171.00 210.00 356.50 254.00 254.00
+# CHECK-NEXT: 160.00 - 376.17 181.67 218.00 367.17 266.00 266.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
@@ -1523,6 +1564,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 cmpq (%rax), %rdi
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decb %dil
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 decb (%rax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decw %di
@@ -1582,6 +1627,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - incq %rdi
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 incq (%rax)
# CHECK-NEXT: - - 0.50 - - 0.50 - - lahf
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - movsbw %al, %di
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - movzbw %al, %di
# CHECK-NEXT: - - - - - - 0.50 0.50 movsbw (%rax), %di
@@ -1888,6 +1941,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.83 0.33 - 0.83 - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.83 0.33 1.00 0.83 1.00 1.00 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.83 0.33 1.00 0.83 1.00 1.00 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - stc
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - std
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - subb $7, %al
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - subb $7, %dil
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s b/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s
new file mode 100644
index 000000000000..2a2db69888ce
--- /dev/null
+++ b/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=haswell -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.25 aaa
+# CHECK-NEXT: 1 100 0.25 aad
+# CHECK-NEXT: 1 100 0.25 aad $7
+# CHECK-NEXT: 1 100 0.25 aam
+# CHECK-NEXT: 1 100 0.25 aam $7
+# CHECK-NEXT: 1 100 0.25 aas
+# CHECK-NEXT: 15 1 3.75 U bound %bx, (%eax)
+# CHECK-NEXT: 15 1 3.75 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.25 daa
+# CHECK-NEXT: 1 100 0.25 das
+# CHECK-NEXT: 4 1 1.00 U into
+# CHECK-NEXT: 3 7 0.50 * leave
+# CHECK-NEXT: 1 1 0.25 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - HWDivider
+# CHECK-NEXT: [1] - HWFPDivider
+# CHECK-NEXT: [2] - HWPort0
+# CHECK-NEXT: [3] - HWPort1
+# CHECK-NEXT: [4] - HWPort2
+# CHECK-NEXT: [5] - HWPort3
+# CHECK-NEXT: [6] - HWPort4
+# CHECK-NEXT: [7] - HWPort5
+# CHECK-NEXT: [8] - HWPort6
+# CHECK-NEXT: [9] - HWPort7
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
+# CHECK-NEXT: - - 2.75 2.75 0.50 0.50 - 2.75 2.75 -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aaa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aas
+# CHECK-NEXT: - - - - - - - - - - bound %bx, (%eax)
+# CHECK-NEXT: - - - - - - - - - - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - daa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - das
+# CHECK-NEXT: - - - - - - - - - - into
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - leave
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - salc
diff --git a/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s b/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
index 7a48e799abc2..9d6083a6c853 100644
--- a/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 cmpq %rsi, %rdi
# CHECK-NEXT: 2 6 0.50 * cmpq %rsi, (%rax)
# CHECK-NEXT: 2 6 0.50 * cmpq (%rax), %rdi
+# CHECK-NEXT: 5 4 1.00 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 5 4 1.00 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 5 4 1.00 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 5 4 1.00 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.25 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.25 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 3 1 0.50 U lodsb (%rsi), %al
+# CHECK-NEXT: 3 1 0.50 U lodsw (%rsi), %ax
+# CHECK-NEXT: 2 1 0.50 U lodsl (%rsi), %eax
+# CHECK-NEXT: 2 1 0.50 U lodsq (%rsi), %rax
+# CHECK-NEXT: 5 4 1.00 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 5 4 1.00 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 5 4 1.00 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 5 4 1.00 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 movsbw %al, %di
# CHECK-NEXT: 1 1 0.25 movzbw %al, %di
# CHECK-NEXT: 1 5 0.50 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 3 1.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 4 10 1.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 4 10 1.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.25 U stc
+# CHECK-NEXT: 6 6 1.50 U std
+# CHECK-NEXT: 3 2 1.00 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosq %rax, %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 subb $7, %al
# CHECK-NEXT: 1 1 0.25 subb $7, %dil
# CHECK-NEXT: 3 7 1.00 * * subb $7, (%rax)
@@ -1330,7 +1371,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: 80.00 - 428.00 288.50 209.00 209.00 158.00 184.00 423.50 66.00
+# CHECK-NEXT: 80.00 - 437.00 297.50 220.33 220.33 166.00 193.00 433.50 67.33
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1525,6 +1566,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq (%rax), %rdi
+# CHECK-NEXT: - - 0.75 0.75 1.00 1.00 - 0.75 0.75 - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.75 0.75 1.00 1.00 - 0.75 0.75 - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.75 0.75 1.00 1.00 - 0.75 0.75 - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.75 0.75 1.00 1.00 - 0.75 0.75 - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decw %di
@@ -1584,6 +1629,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - incq %rdi
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 incq (%rax)
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - lahf
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 1.00 0.50 0.50 - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 1.00 0.50 0.50 - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 1.00 0.50 0.50 - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 1.00 0.50 0.50 - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsbw %al, %di
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movzbw %al, %di
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movsbw (%rax), %di
@@ -1890,6 +1943,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - 1.00 - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - stc
+# CHECK-NEXT: - - 1.25 1.25 - - - 1.25 2.25 - std
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %al
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/SLM/resources-x86_32.s b/test/tools/llvm-mca/X86/SLM/resources-x86_32.s
new file mode 100644
index 000000000000..bc194ed6237b
--- /dev/null
+++ b/test/tools/llvm-mca/X86/SLM/resources-x86_32.s
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=slm -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 1.00 aaa
+# CHECK-NEXT: 1 100 1.00 aad
+# CHECK-NEXT: 1 100 1.00 aad $7
+# CHECK-NEXT: 1 100 1.00 aam
+# CHECK-NEXT: 1 100 1.00 aam $7
+# CHECK-NEXT: 1 100 1.00 aas
+# CHECK-NEXT: 1 100 1.00 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 1.00 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 1.00 daa
+# CHECK-NEXT: 1 100 1.00 das
+# CHECK-NEXT: 1 100 1.00 U into
+# CHECK-NEXT: 1 1 0.50 * leave
+# CHECK-NEXT: 1 1 0.50 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SLMDivider
+# CHECK-NEXT: [1] - SLMFPDivider
+# CHECK-NEXT: [2] - SLMFPMultiplier
+# CHECK-NEXT: [3] - SLM_FPC_RSV0
+# CHECK-NEXT: [4] - SLM_FPC_RSV1
+# CHECK-NEXT: [5] - SLM_IEC_RSV0
+# CHECK-NEXT: [6] - SLM_IEC_RSV1
+# CHECK-NEXT: [7] - SLM_MEC_RSV
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
+# CHECK-NEXT: - - - 11.00 - 1.00 1.00 -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
+# CHECK-NEXT: - - - 1.00 - - - - aaa
+# CHECK-NEXT: - - - 1.00 - - - - aad
+# CHECK-NEXT: - - - 1.00 - - - - aad $7
+# CHECK-NEXT: - - - 1.00 - - - - aam
+# CHECK-NEXT: - - - 1.00 - - - - aam $7
+# CHECK-NEXT: - - - 1.00 - - - - aas
+# CHECK-NEXT: - - - 1.00 - - - - bound %bx, (%eax)
+# CHECK-NEXT: - - - 1.00 - - - - bound %ebx, (%eax)
+# CHECK-NEXT: - - - 1.00 - - - - daa
+# CHECK-NEXT: - - - 1.00 - - - - das
+# CHECK-NEXT: - - - 1.00 - - - - into
+# CHECK-NEXT: - - - - - 0.50 0.50 - leave
+# CHECK-NEXT: - - - - - 0.50 0.50 - salc
diff --git a/test/tools/llvm-mca/X86/SLM/resources-x86_64.s b/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
index 0c50dd08bc23..c272cf69004f 100644
--- a/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.50 cmpq %rsi, %rdi
# CHECK-NEXT: 1 4 1.00 * cmpq %rsi, (%rax)
# CHECK-NEXT: 1 4 1.00 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 1.00 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 1.00 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 1.00 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 1.00 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.50 decb %dil
# CHECK-NEXT: 2 5 2.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.50 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.50 incq %rdi
# CHECK-NEXT: 2 5 2.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 1 100 1.00 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 1.00 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 1.00 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 1.00 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 1.00 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.50 movsbw %al, %di
# CHECK-NEXT: 1 1 0.50 movzbw %al, %di
# CHECK-NEXT: 1 4 1.00 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 1.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 2 4 2.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 2 4 2.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.50 U stc
+# CHECK-NEXT: 1 1 0.50 U std
+# CHECK-NEXT: 1 100 1.00 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 1 100 1.00 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: 2 5 2.00 * * subb $7, (%rax)
@@ -1328,7 +1369,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
-# CHECK-NEXT: 400.00 - - - - 544.00 386.00 502.00
+# CHECK-NEXT: 400.00 - - 16.00 - 545.00 387.00 502.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
@@ -1523,6 +1564,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - - - 0.50 0.50 - cmpq %rsi, %rdi
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 cmpq %rsi, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 cmpq (%rax), %rdi
+# CHECK-NEXT: - - - 1.00 - - - - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - 1.00 - - - - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - 1.00 - - - - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - 1.00 - - - - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - - - - 0.50 0.50 - decb %dil
# CHECK-NEXT: - - - - - 1.00 1.00 2.00 decb (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - decw %di
@@ -1582,6 +1627,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - - - 0.50 0.50 - incq %rdi
# CHECK-NEXT: - - - - - 1.00 1.00 2.00 incq (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - lahf
+# CHECK-NEXT: - - - 1.00 - - - - lodsb (%rsi), %al
+# CHECK-NEXT: - - - 1.00 - - - - lodsw (%rsi), %ax
+# CHECK-NEXT: - - - 1.00 - - - - lodsl (%rsi), %eax
+# CHECK-NEXT: - - - 1.00 - - - - lodsq (%rsi), %rax
+# CHECK-NEXT: - - - 1.00 - - - - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - - - - 0.50 0.50 - movsbw %al, %di
# CHECK-NEXT: - - - - - 0.50 0.50 - movzbw %al, %di
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movsbw (%rax), %di
@@ -1888,6 +1941,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - - - 1.00 - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - - - - 1.00 - 2.00 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - - - - 1.00 - 2.00 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - - - - 0.50 0.50 - stc
+# CHECK-NEXT: - - - - - 0.50 0.50 - std
+# CHECK-NEXT: - - - 1.00 - - - - stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - - 1.00 - - - - stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - - - - 0.50 0.50 - subb $7, %al
# CHECK-NEXT: - - - - - 0.50 0.50 - subb $7, %dil
# CHECK-NEXT: - - - - - 1.00 1.00 2.00 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s b/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s
new file mode 100644
index 000000000000..4441391fd9bb
--- /dev/null
+++ b/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.33 aaa
+# CHECK-NEXT: 1 100 0.33 aad
+# CHECK-NEXT: 1 100 0.33 aad $7
+# CHECK-NEXT: 1 100 0.33 aam
+# CHECK-NEXT: 1 100 0.33 aam $7
+# CHECK-NEXT: 1 100 0.33 aas
+# CHECK-NEXT: 1 100 0.33 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.33 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.33 daa
+# CHECK-NEXT: 1 100 0.33 das
+# CHECK-NEXT: 1 100 0.33 U into
+# CHECK-NEXT: 3 7 0.67 * leave
+# CHECK-NEXT: 1 1 0.33 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
+# CHECK-NEXT: - - 4.67 4.67 - 4.67 0.50 0.50
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aaa
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aad
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aad $7
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aam
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aam $7
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - aas
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - bound %bx, (%eax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - daa
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - das
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - into
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 leave
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - salc
diff --git a/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s b/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
index a9627e85b60f..cda2e7e6b5aa 100644
--- a/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,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: 1 1 0.33 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.33 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.33 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# 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: 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
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 2 2 0.67 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 5 8 1.00 * * shldq $7, %rsi, (%rax)
# 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: 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)
@@ -1328,7 +1369,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
-# CHECK-NEXT: 160.00 - 365.50 171.00 210.00 356.50 254.00 254.00
+# CHECK-NEXT: 160.00 - 376.17 181.67 218.00 367.17 266.00 266.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
@@ -1523,6 +1564,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 cmpq (%rax), %rdi
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decb %dil
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 decb (%rax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decw %di
@@ -1582,6 +1627,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - incq %rdi
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 incq (%rax)
# CHECK-NEXT: - - 0.50 - - 0.50 - - lahf
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.67 0.67 - 0.67 0.50 0.50 lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.67 0.67 1.00 0.67 1.00 1.00 movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - movsbw %al, %di
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - movzbw %al, %di
# CHECK-NEXT: - - - - - - 0.50 0.50 movsbw (%rax), %di
@@ -1888,6 +1941,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.83 0.33 - 0.83 - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.83 0.33 1.00 0.83 1.00 1.00 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.83 0.33 1.00 0.83 1.00 1.00 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - stc
+# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - std
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 0.50 0.50 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - subb $7, %al
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - subb $7, %dil
# CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s b/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s
new file mode 100644
index 000000000000..103cc3ced847
--- /dev/null
+++ b/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=skylake -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.25 aaa
+# CHECK-NEXT: 1 100 0.25 aad
+# CHECK-NEXT: 1 100 0.25 aad $7
+# CHECK-NEXT: 1 100 0.25 aam
+# CHECK-NEXT: 1 100 0.25 aam $7
+# CHECK-NEXT: 1 100 0.25 aas
+# CHECK-NEXT: 1 100 0.25 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.25 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.25 daa
+# CHECK-NEXT: 1 100 0.25 das
+# CHECK-NEXT: 1 100 0.25 U into
+# CHECK-NEXT: 3 7 0.50 * leave
+# CHECK-NEXT: 1 1 0.25 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SKLDivider
+# CHECK-NEXT: [1] - SKLFPDivider
+# CHECK-NEXT: [2] - SKLPort0
+# CHECK-NEXT: [3] - SKLPort1
+# CHECK-NEXT: [4] - SKLPort2
+# CHECK-NEXT: [5] - SKLPort3
+# CHECK-NEXT: [6] - SKLPort4
+# CHECK-NEXT: [7] - SKLPort5
+# CHECK-NEXT: [8] - SKLPort6
+# CHECK-NEXT: [9] - SKLPort7
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
+# CHECK-NEXT: - - 3.50 3.50 0.50 0.50 - 3.50 3.50 -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aaa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aas
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %bx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - daa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - das
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - into
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - leave
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - salc
diff --git a/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s b/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
index e21c4085aad2..5f88e2cf7dc8 100644
--- a/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 cmpq %rsi, %rdi
# CHECK-NEXT: 2 6 0.50 * cmpq %rsi, (%rax)
# CHECK-NEXT: 2 6 0.50 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 0.25 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.25 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.25 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 1 100 0.25 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 0.25 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 0.25 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 0.25 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 0.25 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 movsbw %al, %di
# CHECK-NEXT: 1 1 0.25 movzbw %al, %di
# CHECK-NEXT: 1 5 0.50 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 3 1.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 4 9 1.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 4 9 1.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.25 U stc
+# CHECK-NEXT: 6 6 1.50 U std
+# CHECK-NEXT: 3 2 1.00 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosq %rax, %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 subb $7, %al
# CHECK-NEXT: 1 1 0.25 subb $7, %dil
# CHECK-NEXT: 3 7 1.00 * * subb $7, (%rax)
@@ -1330,7 +1371,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: 60.00 - 444.50 248.50 218.00 218.00 167.00 197.00 430.00 69.00
+# CHECK-NEXT: 60.00 - 450.00 254.00 219.33 219.33 171.00 202.50 436.50 70.33
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1525,6 +1566,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq (%rax), %rdi
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decw %di
@@ -1584,6 +1629,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - incq %rdi
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 incq (%rax)
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - lahf
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsbw %al, %di
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movzbw %al, %di
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movsbw (%rax), %di
@@ -1890,6 +1943,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - 1.00 - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - stc
+# CHECK-NEXT: - - 1.25 1.25 - - - 1.25 2.25 - std
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %al
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s
new file mode 100644
index 000000000000..ebb503cdf379
--- /dev/null
+++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=skylake-avx512 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.25 aaa
+# CHECK-NEXT: 1 100 0.25 aad
+# CHECK-NEXT: 1 100 0.25 aad $7
+# CHECK-NEXT: 1 100 0.25 aam
+# CHECK-NEXT: 1 100 0.25 aam $7
+# CHECK-NEXT: 1 100 0.25 aas
+# CHECK-NEXT: 1 100 0.25 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.25 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.25 daa
+# CHECK-NEXT: 1 100 0.25 das
+# CHECK-NEXT: 1 100 0.25 U into
+# CHECK-NEXT: 3 7 0.50 * leave
+# CHECK-NEXT: 1 1 0.25 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SKXDivider
+# CHECK-NEXT: [1] - SKXFPDivider
+# CHECK-NEXT: [2] - SKXPort0
+# CHECK-NEXT: [3] - SKXPort1
+# CHECK-NEXT: [4] - SKXPort2
+# CHECK-NEXT: [5] - SKXPort3
+# CHECK-NEXT: [6] - SKXPort4
+# CHECK-NEXT: [7] - SKXPort5
+# CHECK-NEXT: [8] - SKXPort6
+# CHECK-NEXT: [9] - SKXPort7
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
+# CHECK-NEXT: - - 3.50 3.50 0.50 0.50 - 3.50 3.50 -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aaa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aad $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aam $7
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - aas
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %bx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - bound %ebx, (%eax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - daa
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - das
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - into
+# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - leave
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - salc
diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
index 7671bb0e21ea..6cd2ae1198e8 100644
--- a/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 cmpq %rsi, %rdi
# CHECK-NEXT: 2 6 0.50 * cmpq %rsi, (%rax)
# CHECK-NEXT: 2 6 0.50 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 0.25 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.25 decb %dil
# CHECK-NEXT: 3 7 1.00 * * decb (%rax)
# CHECK-NEXT: 1 1 0.25 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 incq %rdi
# CHECK-NEXT: 3 7 1.00 * * incq (%rax)
# CHECK-NEXT: 1 1 0.50 lahf
+# CHECK-NEXT: 1 100 0.25 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 0.25 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 0.25 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 0.25 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 0.25 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 movsbw %al, %di
# CHECK-NEXT: 1 1 0.25 movzbw %al, %di
# CHECK-NEXT: 1 5 0.50 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 3 1.00 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 4 9 1.00 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 4 9 1.00 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.25 U stc
+# CHECK-NEXT: 6 6 1.50 U std
+# CHECK-NEXT: 3 2 1.00 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 3 2 1.00 U stosq %rax, %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 subb $7, %al
# CHECK-NEXT: 1 1 0.25 subb $7, %dil
# CHECK-NEXT: 3 7 1.00 * * subb $7, (%rax)
@@ -1330,7 +1371,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: 60.00 - 444.75 248.75 218.00 218.00 167.00 197.25 430.25 69.00
+# CHECK-NEXT: 60.00 - 450.25 254.25 219.33 219.33 171.00 202.75 436.75 70.33
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1525,6 +1566,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpq %rsi, %rdi
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq %rsi, (%rax)
# CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - cmpq (%rax), %rdi
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decw %di
@@ -1584,6 +1629,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - incq %rdi
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 incq (%rax)
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - lahf
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsb (%rsi), %al
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsw (%rsi), %ax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsl (%rsi), %eax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - lodsq (%rsi), %rax
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movsbw %al, %di
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - movzbw %al, %di
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movsbw (%rax), %di
@@ -1890,6 +1943,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - - 1.00 - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shldq $7, %rsi, (%rax)
# CHECK-NEXT: - - 0.25 1.25 0.83 0.83 - 0.25 0.25 0.33 shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - stc
+# CHECK-NEXT: - - 1.25 1.25 - - - 1.25 2.25 - std
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 1.00 0.25 0.25 0.33 stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %al
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - subb $7, %dil
# CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 subb $7, (%rax)
diff --git a/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s b/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s
new file mode 100644
index 000000000000..85bd0dc9de4b
--- /dev/null
+++ b/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s
@@ -0,0 +1,82 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=znver1 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 100 0.25 aaa
+# CHECK-NEXT: 1 100 0.25 aad
+# CHECK-NEXT: 1 100 0.25 aad $7
+# CHECK-NEXT: 1 100 0.25 aam
+# CHECK-NEXT: 1 100 0.25 aam $7
+# CHECK-NEXT: 1 100 0.25 aas
+# CHECK-NEXT: 1 100 0.25 U bound %bx, (%eax)
+# CHECK-NEXT: 1 100 0.25 U bound %ebx, (%eax)
+# CHECK-NEXT: 1 100 0.25 daa
+# CHECK-NEXT: 1 100 0.25 das
+# CHECK-NEXT: 1 100 0.25 U into
+# CHECK-NEXT: 2 8 0.50 * leave
+# CHECK-NEXT: 1 1 0.25 U salc
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - ZnAGU0
+# CHECK-NEXT: [1] - ZnAGU1
+# CHECK-NEXT: [2] - ZnALU0
+# CHECK-NEXT: [3] - ZnALU1
+# CHECK-NEXT: [4] - ZnALU2
+# CHECK-NEXT: [5] - ZnALU3
+# CHECK-NEXT: [6] - ZnDivider
+# CHECK-NEXT: [7] - ZnFPU0
+# CHECK-NEXT: [8] - ZnFPU1
+# CHECK-NEXT: [9] - ZnFPU2
+# CHECK-NEXT: [10] - ZnFPU3
+# CHECK-NEXT: [11] - ZnMultiplier
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
+# CHECK-NEXT: 0.50 0.50 0.50 0.50 0.50 0.50 - - - - - -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
+# CHECK-NEXT: - - - - - - - - - - - - aaa
+# CHECK-NEXT: - - - - - - - - - - - - aad
+# CHECK-NEXT: - - - - - - - - - - - - aad $7
+# CHECK-NEXT: - - - - - - - - - - - - aam
+# CHECK-NEXT: - - - - - - - - - - - - aam $7
+# CHECK-NEXT: - - - - - - - - - - - - aas
+# CHECK-NEXT: - - - - - - - - - - - - bound %bx, (%eax)
+# CHECK-NEXT: - - - - - - - - - - - - bound %ebx, (%eax)
+# CHECK-NEXT: - - - - - - - - - - - - daa
+# CHECK-NEXT: - - - - - - - - - - - - das
+# CHECK-NEXT: - - - - - - - - - - - - into
+# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - leave
+# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - salc
diff --git a/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s b/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s
index 261328b15dc5..c2b6cf785601 100644
--- a/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s
+++ b/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s
@@ -217,6 +217,11 @@ cmpq %rsi, %rdi
cmpq %rsi, (%rax)
cmpq (%rax), %rdi
+cmpsb
+cmpsw
+cmpsl
+cmpsq
+
decb %dil
decb (%rax)
decw %di
@@ -285,6 +290,16 @@ incq (%rax)
lahf
+lodsb
+lodsw
+lodsl
+lodsq
+
+movsb
+movsw
+movsl
+movsq
+
movsbw %al, %di
movzbw %al, %di
movsbw (%rax), %di
@@ -622,6 +637,14 @@ shrdq $7, %rsi, %rdi
shldq $7, %rsi, (%rax)
shrdq $7, %rsi, (%rax)
+stc
+std
+
+stosb
+stosw
+stosl
+stosq
+
subb $7, %al
subb $7, %dil
subb $7, (%rax)
@@ -890,6 +913,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 cmpq %rsi, %rdi
# CHECK-NEXT: 2 5 0.50 * cmpq %rsi, (%rax)
# CHECK-NEXT: 2 5 0.50 * cmpq (%rax), %rdi
+# CHECK-NEXT: 1 100 0.25 U cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 1 0.25 decb %dil
# CHECK-NEXT: 2 5 0.50 * * decb (%rax)
# CHECK-NEXT: 1 1 0.25 decw %di
@@ -949,6 +976,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 incq %rdi
# CHECK-NEXT: 2 5 0.50 * * incq (%rax)
# CHECK-NEXT: 1 100 0.25 lahf
+# CHECK-NEXT: 1 100 0.25 U lodsb (%rsi), %al
+# CHECK-NEXT: 1 100 0.25 U lodsw (%rsi), %ax
+# CHECK-NEXT: 1 100 0.25 U lodsl (%rsi), %eax
+# CHECK-NEXT: 1 100 0.25 U lodsq (%rsi), %rax
+# CHECK-NEXT: 1 100 0.25 U movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 movsbw %al, %di
# CHECK-NEXT: 1 1 0.25 movzbw %al, %di
# CHECK-NEXT: 2 5 0.50 * movsbw (%rax), %di
@@ -1255,6 +1290,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 0.25 shrdq $7, %rsi, %rdi
# CHECK-NEXT: 2 5 0.50 * * shldq $7, %rsi, (%rax)
# CHECK-NEXT: 2 5 0.50 * * shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: 1 1 0.25 U stc
+# CHECK-NEXT: 1 1 0.25 U std
+# CHECK-NEXT: 1 100 0.25 U stosb %al, %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U stosw %ax, %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U stosl %eax, %es:(%rdi)
+# CHECK-NEXT: 1 100 0.25 U stosq %rax, %es:(%rdi)
# CHECK-NEXT: 1 1 0.25 subb $7, %al
# CHECK-NEXT: 1 1 0.25 subb $7, %dil
# CHECK-NEXT: 2 5 0.50 * * subb $7, (%rax)
@@ -1332,7 +1373,7 @@ xorq (%rax), %rdi
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: 147.50 147.50 131.00 165.00 147.00 131.00 392.00 - - - - 34.00
+# CHECK-NEXT: 147.50 147.50 131.50 165.50 147.50 131.50 392.00 - - - - 34.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -1527,6 +1568,10 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpq %rsi, %rdi
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpq %rsi, (%rax)
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpq (%rax), %rdi
+# CHECK-NEXT: - - - - - - - - - - - - cmpsb %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - - - - - - - - - - cmpsw %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - - - - - - - - - - cmpsl %es:(%rdi), (%rsi)
+# CHECK-NEXT: - - - - - - - - - - - - cmpsq %es:(%rdi), (%rsi)
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - decb %dil
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - decb (%rax)
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - decw %di
@@ -1586,6 +1631,14 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - incq %rdi
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - incq (%rax)
# CHECK-NEXT: - - - - - - - - - - - - lahf
+# CHECK-NEXT: - - - - - - - - - - - - lodsb (%rsi), %al
+# CHECK-NEXT: - - - - - - - - - - - - lodsw (%rsi), %ax
+# CHECK-NEXT: - - - - - - - - - - - - lodsl (%rsi), %eax
+# CHECK-NEXT: - - - - - - - - - - - - lodsq (%rsi), %rax
+# CHECK-NEXT: - - - - - - - - - - - - movsb (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - movsw (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - movsl (%rsi), %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - movsq (%rsi), %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - movsbw %al, %di
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - movzbw %al, %di
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - movsbw (%rax), %di
@@ -1892,6 +1945,12 @@ xorq (%rax), %rdi
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrdq $7, %rsi, %rdi
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shldq $7, %rsi, (%rax)
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrdq $7, %rsi, (%rax)
+# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - stc
+# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - std
+# CHECK-NEXT: - - - - - - - - - - - - stosb %al, %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - stosw %ax, %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - stosl %eax, %es:(%rdi)
+# CHECK-NEXT: - - - - - - - - - - - - stosq %rax, %es:(%rdi)
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - subb $7, %al
# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - subb $7, %dil
# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - subb $7, (%rax)