diff options
Diffstat (limited to 'test/tools/llvm-mca/X86')
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) |