diff options
8 files changed, 4386 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s new file mode 100644 index 00000000000..74559909fd7 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s @@ -0,0 +1,548 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=broadwell -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 3 3 0.75 rclb %dil +# CHECK-NEXT: 3 3 0.75 rcrb %dil +# CHECK-NEXT: 5 8 0.75 * rclb (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb (%rax) +# CHECK-NEXT: 3 3 0.75 rclb $7, %dil +# CHECK-NEXT: 3 3 0.75 rcrb $7, %dil +# CHECK-NEXT: 5 8 0.75 * rclb $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb $7, (%rax) +# CHECK-NEXT: 9 11 2.25 rclb %cl, %dil +# CHECK-NEXT: 10 14 2.50 rcrb %cl, %dil +# CHECK-NEXT: 10 15 2.00 * rclb %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrb %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclw %di +# CHECK-NEXT: 3 3 0.75 rcrw %di +# CHECK-NEXT: 5 8 0.75 * rclw (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw (%rax) +# CHECK-NEXT: 3 3 0.75 rclw $7, %di +# CHECK-NEXT: 3 3 0.75 rcrw $7, %di +# CHECK-NEXT: 5 8 0.75 * rclw $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclw %cl, %di +# CHECK-NEXT: 7 11 2.00 rcrw %cl, %di +# CHECK-NEXT: 10 15 2.00 * rclw %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrw %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rcll %edi +# CHECK-NEXT: 3 3 0.75 rcrl %edi +# CHECK-NEXT: 5 8 0.75 * rcll (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl (%rax) +# CHECK-NEXT: 3 3 0.75 rcll $7, %edi +# CHECK-NEXT: 3 3 0.75 rcrl $7, %edi +# CHECK-NEXT: 5 8 0.75 * rcll $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rcll %cl, %edi +# CHECK-NEXT: 7 11 2.00 rcrl %cl, %edi +# CHECK-NEXT: 10 15 2.00 * rcll %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrl %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclq %rdi +# CHECK-NEXT: 3 3 0.75 rcrq %rdi +# CHECK-NEXT: 5 8 0.75 * rclq (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq (%rax) +# CHECK-NEXT: 3 3 0.75 rclq $7, %rdi +# CHECK-NEXT: 3 3 0.75 rcrq $7, %rdi +# CHECK-NEXT: 5 8 0.75 * rclq $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclq %cl, %rdi +# CHECK-NEXT: 7 11 2.00 rcrq %cl, %rdi +# CHECK-NEXT: 10 15 2.00 * rclq %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrq %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolb %dil +# CHECK-NEXT: 2 2 1.00 rorb %dil +# CHECK-NEXT: 5 7 1.00 * * rolb (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb (%rax) +# CHECK-NEXT: 2 2 1.00 rolb $7, %dil +# CHECK-NEXT: 2 2 1.00 rorb $7, %dil +# CHECK-NEXT: 5 7 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolb %cl, %dil +# CHECK-NEXT: 3 3 1.00 rorb %cl, %dil +# CHECK-NEXT: 6 8 1.00 * * rolb %cl, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorb %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolw %di +# CHECK-NEXT: 2 2 1.00 rorw %di +# CHECK-NEXT: 5 7 1.00 * * rolw (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw (%rax) +# CHECK-NEXT: 2 2 1.00 rolw $7, %di +# CHECK-NEXT: 2 2 1.00 rorw $7, %di +# CHECK-NEXT: 5 7 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolw %cl, %di +# CHECK-NEXT: 3 3 1.00 rorw %cl, %di +# CHECK-NEXT: 6 8 1.00 * * rolw %cl, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorw %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 roll %edi +# CHECK-NEXT: 2 2 1.00 rorl %edi +# CHECK-NEXT: 5 7 1.00 * * roll (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl (%rax) +# CHECK-NEXT: 2 2 1.00 roll $7, %edi +# CHECK-NEXT: 2 2 1.00 rorl $7, %edi +# CHECK-NEXT: 5 7 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 3 3 1.00 roll %cl, %edi +# CHECK-NEXT: 3 3 1.00 rorl %cl, %edi +# CHECK-NEXT: 6 8 1.00 * * roll %cl, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorl %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolq %rdi +# CHECK-NEXT: 2 2 1.00 rorq %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq (%rax) +# CHECK-NEXT: 2 2 1.00 rolq $7, %rdi +# CHECK-NEXT: 2 2 1.00 rorq $7, %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 rorq %cl, %rdi +# CHECK-NEXT: 6 8 1.00 * * rolq %cl, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 4 6 1.00 * * sarb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 4 6 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarb %cl, %dil +# CHECK-NEXT: 3 3 1.00 shlb %cl, %dil +# CHECK-NEXT: 3 3 1.00 shrb %cl, %dil +# CHECK-NEXT: 6 8 1.00 * * sarb %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shlb %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 4 6 1.00 * * sarw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 4 6 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarw %cl, %di +# CHECK-NEXT: 3 3 1.00 shlw %cl, %di +# CHECK-NEXT: 3 3 1.00 shrw %cl, %di +# CHECK-NEXT: 6 8 1.00 * * sarw %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shlw %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 4 6 1.00 * * sarl (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 4 6 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarl %cl, %edi +# CHECK-NEXT: 3 3 1.00 shll %cl, %edi +# CHECK-NEXT: 3 3 1.00 shrl %cl, %edi +# CHECK-NEXT: 6 8 1.00 * * sarl %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shll %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 shlq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 shrq %cl, %rdi +# CHECK-NEXT: 6 8 1.00 * * sarq %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shlq %cl, (%rax) +# CHECK-NEXT: 6 8 1.00 * * shrq %cl, (%rax) + +# 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: - - 172.75 69.25 70.00 70.00 56.00 42.25 172.75 28.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb $7, (%rax) +# CHECK-NEXT: - - 2.75 2.25 - - - 1.25 2.75 - rclb %cl, %dil +# CHECK-NEXT: - - 2.50 3.50 - - - 1.50 2.50 - rcrb %cl, %dil +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclb %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrb %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw $7, %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw $7, %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rclw %cl, %di +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrw %cl, %di +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclw %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrw %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll $7, %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl $7, %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcll %cl, %edi +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrl %cl, %edi +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rcll %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrl %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rclq %cl, %rdi +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrq %cl, %rdi +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclq %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrq %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb $7, %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb $7, %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorb %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw $7, %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw $7, %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorw %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll $7, %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl $7, %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - roll %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 roll %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorl %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq $7, %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq $7, %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb $7, %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw $7, %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl $7, %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shll %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarl %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shll %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s new file mode 100644 index 00000000000..ee596e39ba7 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s @@ -0,0 +1,552 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 rclb %dil +# CHECK-NEXT: 1 1 0.50 rcrb %dil +# CHECK-NEXT: 2 4 1.00 * rclb (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrb (%rax) +# CHECK-NEXT: 1 1 0.50 rclb $7, %dil +# CHECK-NEXT: 1 1 0.50 rcrb $7, %dil +# CHECK-NEXT: 2 4 1.00 * rclb $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrb $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclb %cl, %dil +# CHECK-NEXT: 1 1 0.50 rcrb %cl, %dil +# CHECK-NEXT: 2 4 1.00 * rclb %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rclw %di +# CHECK-NEXT: 1 1 0.50 rcrw %di +# CHECK-NEXT: 2 4 1.00 * rclw (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrw (%rax) +# CHECK-NEXT: 1 1 0.50 rclw $7, %di +# CHECK-NEXT: 1 1 0.50 rcrw $7, %di +# CHECK-NEXT: 2 4 1.00 * rclw $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrw $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclw %cl, %di +# CHECK-NEXT: 1 1 0.50 rcrw %cl, %di +# CHECK-NEXT: 2 4 1.00 * rclw %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rcll %edi +# CHECK-NEXT: 1 1 0.50 rcrl %edi +# CHECK-NEXT: 2 4 1.00 * rcll (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrl (%rax) +# CHECK-NEXT: 1 1 0.50 rcll $7, %edi +# CHECK-NEXT: 1 1 0.50 rcrl $7, %edi +# CHECK-NEXT: 2 4 1.00 * rcll $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrl $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rcll %cl, %edi +# CHECK-NEXT: 1 1 0.50 rcrl %cl, %edi +# CHECK-NEXT: 2 4 1.00 * rcll %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rclq %rdi +# CHECK-NEXT: 1 1 0.50 rcrq %rdi +# CHECK-NEXT: 2 4 1.00 * rclq (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrq (%rax) +# CHECK-NEXT: 1 1 0.50 rclq $7, %rdi +# CHECK-NEXT: 1 1 0.50 rcrq $7, %rdi +# CHECK-NEXT: 2 4 1.00 * rclq $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrq $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclq %cl, %rdi +# CHECK-NEXT: 1 1 0.50 rcrq %cl, %rdi +# CHECK-NEXT: 2 4 1.00 * rclq %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * rcrq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rolb %dil +# CHECK-NEXT: 1 1 0.50 rorb %dil +# CHECK-NEXT: 2 4 1.00 * * rolb (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorb (%rax) +# CHECK-NEXT: 1 1 0.50 rolb $7, %dil +# CHECK-NEXT: 1 1 0.50 rorb $7, %dil +# CHECK-NEXT: 2 4 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rolb %cl, %dil +# CHECK-NEXT: 1 1 0.50 rorb %cl, %dil +# CHECK-NEXT: 2 4 1.00 * * rolb %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rolw %di +# CHECK-NEXT: 1 1 0.50 rorw %di +# CHECK-NEXT: 2 4 1.00 * * rolw (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorw (%rax) +# CHECK-NEXT: 1 1 0.50 rolw $7, %di +# CHECK-NEXT: 1 1 0.50 rorw $7, %di +# CHECK-NEXT: 2 4 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rolw %cl, %di +# CHECK-NEXT: 1 1 0.50 rorw %cl, %di +# CHECK-NEXT: 2 4 1.00 * * rolw %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 roll %edi +# CHECK-NEXT: 1 1 0.50 rorl %edi +# CHECK-NEXT: 2 4 1.00 * * roll (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorl (%rax) +# CHECK-NEXT: 1 1 0.50 roll $7, %edi +# CHECK-NEXT: 1 1 0.50 rorl $7, %edi +# CHECK-NEXT: 2 4 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 1 1 0.50 roll %cl, %edi +# CHECK-NEXT: 1 1 0.50 rorl %cl, %edi +# CHECK-NEXT: 2 4 1.00 * * roll %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rolq %rdi +# CHECK-NEXT: 1 1 0.50 rorq %rdi +# CHECK-NEXT: 2 4 1.00 * * rolq (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorq (%rax) +# CHECK-NEXT: 1 1 0.50 rolq $7, %rdi +# CHECK-NEXT: 1 1 0.50 rorq $7, %rdi +# CHECK-NEXT: 2 4 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rolq %cl, %rdi +# CHECK-NEXT: 1 1 0.50 rorq %cl, %rdi +# CHECK-NEXT: 2 4 1.00 * * rolq %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 2 4 1.00 * * sarb (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlb (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 2 4 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %cl, %dil +# CHECK-NEXT: 1 1 0.50 shlb %cl, %dil +# CHECK-NEXT: 1 1 0.50 shrb %cl, %dil +# CHECK-NEXT: 2 4 1.00 * * sarb %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlb %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 2 4 1.00 * * sarw (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlw (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 2 4 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %cl, %di +# CHECK-NEXT: 1 1 0.50 shlw %cl, %di +# CHECK-NEXT: 1 1 0.50 shrw %cl, %di +# CHECK-NEXT: 2 4 1.00 * * sarw %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlw %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 2 4 1.00 * * sarl (%rax) +# CHECK-NEXT: 2 4 1.00 * * shll (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 2 4 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %cl, %edi +# CHECK-NEXT: 1 1 0.50 shll %cl, %edi +# CHECK-NEXT: 1 1 0.50 shrl %cl, %edi +# CHECK-NEXT: 2 4 1.00 * * sarl %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shll %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 2 4 1.00 * * sarq (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlq (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 2 4 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %cl, %rdi +# CHECK-NEXT: 1 1 0.50 shlq %cl, %rdi +# CHECK-NEXT: 1 1 0.50 shrq %cl, %rdi +# CHECK-NEXT: 2 4 1.00 * * sarq %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shlq %cl, (%rax) +# CHECK-NEXT: 2 4 1.00 * * shrq %cl, (%rax) + +# 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: 84.00 84.00 - - - - - 84.00 - 84.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: 0.50 0.50 - - - - - - - - - - - - rclb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclw %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrw %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcll %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrl %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcll (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrl (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcll $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrl $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcll $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrl $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcll %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrl %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcll %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrl %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rclq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rcrq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rclq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rcrq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolw %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorw %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - roll %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorl %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - roll (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorl (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - roll $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorl $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - roll $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorl $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - roll %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorl %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - roll %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorl %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rolq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - rorq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rolq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - rorq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrb %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrb (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrb $7, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrb %cl, %dil +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrb %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarw %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlw %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrw %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrw (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrw $7, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrw %cl, %di +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrw %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarl %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shll %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrl %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarl (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shll (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrl (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarl $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shll $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrl $7, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarl $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shll $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrl $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarl %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shll %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrl %cl, %edi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarl %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shll %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrl %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrq %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrq (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrq $7, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - sarq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shlq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - shrq %cl, %rdi +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - sarq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shlq %cl, (%rax) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s new file mode 100644 index 00000000000..9b42fcce357 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s @@ -0,0 +1,548 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 3 3 0.75 rclb %dil +# CHECK-NEXT: 3 3 0.75 rcrb %dil +# CHECK-NEXT: 5 9 0.75 * rclb (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrb (%rax) +# CHECK-NEXT: 3 3 0.75 rclb $7, %dil +# CHECK-NEXT: 3 3 0.75 rcrb $7, %dil +# CHECK-NEXT: 5 9 0.75 * rclb $7, (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrb $7, (%rax) +# CHECK-NEXT: 9 11 2.25 rclb %cl, %dil +# CHECK-NEXT: 10 14 2.50 rcrb %cl, %dil +# CHECK-NEXT: 10 16 2.00 * rclb %cl, (%rax) +# CHECK-NEXT: 11 19 2.25 * rcrb %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclw %di +# CHECK-NEXT: 3 3 0.75 rcrw %di +# CHECK-NEXT: 5 9 0.75 * rclw (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrw (%rax) +# CHECK-NEXT: 3 3 0.75 rclw $7, %di +# CHECK-NEXT: 3 3 0.75 rcrw $7, %di +# CHECK-NEXT: 5 9 0.75 * rclw $7, (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrw $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclw %cl, %di +# CHECK-NEXT: 7 11 2.00 rcrw %cl, %di +# CHECK-NEXT: 10 16 2.00 * rclw %cl, (%rax) +# CHECK-NEXT: 11 19 2.25 * rcrw %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rcll %edi +# CHECK-NEXT: 3 3 0.75 rcrl %edi +# CHECK-NEXT: 5 9 0.75 * rcll (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrl (%rax) +# CHECK-NEXT: 3 3 0.75 rcll $7, %edi +# CHECK-NEXT: 3 3 0.75 rcrl $7, %edi +# CHECK-NEXT: 5 9 0.75 * rcll $7, (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrl $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rcll %cl, %edi +# CHECK-NEXT: 7 11 2.00 rcrl %cl, %edi +# CHECK-NEXT: 10 16 2.00 * rcll %cl, (%rax) +# CHECK-NEXT: 11 19 2.25 * rcrl %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclq %rdi +# CHECK-NEXT: 3 3 0.75 rcrq %rdi +# CHECK-NEXT: 5 9 0.75 * rclq (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrq (%rax) +# CHECK-NEXT: 3 3 0.75 rclq $7, %rdi +# CHECK-NEXT: 3 3 0.75 rcrq $7, %rdi +# CHECK-NEXT: 5 9 0.75 * rclq $7, (%rax) +# CHECK-NEXT: 5 9 0.75 * rcrq $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclq %cl, %rdi +# CHECK-NEXT: 7 11 2.00 rcrq %cl, %rdi +# CHECK-NEXT: 10 16 2.00 * rclq %cl, (%rax) +# CHECK-NEXT: 11 19 2.25 * rcrq %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolb %dil +# CHECK-NEXT: 2 2 1.00 rorb %dil +# CHECK-NEXT: 5 8 1.00 * * rolb (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorb (%rax) +# CHECK-NEXT: 2 2 1.00 rolb $7, %dil +# CHECK-NEXT: 2 2 1.00 rorb $7, %dil +# CHECK-NEXT: 5 8 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolb %cl, %dil +# CHECK-NEXT: 3 3 1.00 rorb %cl, %dil +# CHECK-NEXT: 6 9 1.00 * * rolb %cl, (%rax) +# CHECK-NEXT: 5 9 1.00 * * rorb %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolw %di +# CHECK-NEXT: 2 2 1.00 rorw %di +# CHECK-NEXT: 5 8 1.00 * * rolw (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorw (%rax) +# CHECK-NEXT: 2 2 1.00 rolw $7, %di +# CHECK-NEXT: 2 2 1.00 rorw $7, %di +# CHECK-NEXT: 5 8 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolw %cl, %di +# CHECK-NEXT: 3 3 1.00 rorw %cl, %di +# CHECK-NEXT: 6 9 1.00 * * rolw %cl, (%rax) +# CHECK-NEXT: 5 9 1.00 * * rorw %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 roll %edi +# CHECK-NEXT: 2 2 1.00 rorl %edi +# CHECK-NEXT: 5 8 1.00 * * roll (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorl (%rax) +# CHECK-NEXT: 2 2 1.00 roll $7, %edi +# CHECK-NEXT: 2 2 1.00 rorl $7, %edi +# CHECK-NEXT: 5 8 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 3 3 1.00 roll %cl, %edi +# CHECK-NEXT: 3 3 1.00 rorl %cl, %edi +# CHECK-NEXT: 6 9 1.00 * * roll %cl, (%rax) +# CHECK-NEXT: 5 9 1.00 * * rorl %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolq %rdi +# CHECK-NEXT: 2 2 1.00 rorq %rdi +# CHECK-NEXT: 5 8 1.00 * * rolq (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorq (%rax) +# CHECK-NEXT: 2 2 1.00 rolq $7, %rdi +# CHECK-NEXT: 2 2 1.00 rorq $7, %rdi +# CHECK-NEXT: 5 8 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 3 3 1.00 rolq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 rorq %cl, %rdi +# CHECK-NEXT: 6 9 1.00 * * rolq %cl, (%rax) +# CHECK-NEXT: 5 9 1.00 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 4 7 1.00 * * sarb (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlb (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 4 7 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarb %cl, %dil +# CHECK-NEXT: 3 3 1.00 shlb %cl, %dil +# CHECK-NEXT: 3 3 1.00 shrb %cl, %dil +# CHECK-NEXT: 6 9 1.00 * * sarb %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shlb %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 4 7 1.00 * * sarw (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlw (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 4 7 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarw %cl, %di +# CHECK-NEXT: 3 3 1.00 shlw %cl, %di +# CHECK-NEXT: 3 3 1.00 shrw %cl, %di +# CHECK-NEXT: 6 9 1.00 * * sarw %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shlw %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 4 7 1.00 * * sarl (%rax) +# CHECK-NEXT: 4 7 1.00 * * shll (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 4 7 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarl %cl, %edi +# CHECK-NEXT: 3 3 1.00 shll %cl, %edi +# CHECK-NEXT: 3 3 1.00 shrl %cl, %edi +# CHECK-NEXT: 6 9 1.00 * * sarl %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shll %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 4 7 1.00 * * sarq (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlq (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 4 7 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 3 3 1.00 sarq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 shlq %cl, %rdi +# CHECK-NEXT: 3 3 1.00 shrq %cl, %rdi +# CHECK-NEXT: 6 9 1.00 * * sarq %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shlq %cl, (%rax) +# CHECK-NEXT: 6 9 1.00 * * shrq %cl, (%rax) + +# 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: - - 172.75 69.25 70.00 70.00 56.00 42.25 172.75 28.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb $7, (%rax) +# CHECK-NEXT: - - 2.75 2.25 - - - 1.25 2.75 - rclb %cl, %dil +# CHECK-NEXT: - - 2.50 3.50 - - - 1.50 2.50 - rcrb %cl, %dil +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclb %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrb %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw $7, %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw $7, %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rclw %cl, %di +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrw %cl, %di +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclw %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrw %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll $7, %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl $7, %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcll %cl, %edi +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrl %cl, %edi +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rcll %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrl %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq $7, (%rax) +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rclq %cl, %rdi +# CHECK-NEXT: - - 1.75 2.75 - - - 0.75 1.75 - rcrq %cl, %rdi +# CHECK-NEXT: - - 2.50 2.00 0.83 0.83 - 1.00 2.50 0.33 rclq %cl, (%rax) +# CHECK-NEXT: - - 2.25 3.25 0.83 0.83 - 1.25 2.25 0.33 rcrq %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb $7, %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb $7, %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorb %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw $7, %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw $7, %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorw %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll $7, %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl $7, %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - roll %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 roll %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorl %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq $7, %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq $7, %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 - 0.25 1.25 0.33 rorq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb $7, %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrb %cl, %dil +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlb %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw $7, %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrw %cl, %di +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlw %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl $7, %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shll %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrl %cl, %edi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarl %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shll %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq $7, (%rax) +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrq %cl, %rdi +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlq %cl, (%rax) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s new file mode 100644 index 00000000000..40ead28d38c --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s @@ -0,0 +1,546 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=slm -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 1.00 rclb %dil +# CHECK-NEXT: 1 1 1.00 rcrb %dil +# CHECK-NEXT: 2 4 2.00 * rclb (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrb (%rax) +# CHECK-NEXT: 1 1 1.00 rclb $7, %dil +# CHECK-NEXT: 1 1 1.00 rcrb $7, %dil +# CHECK-NEXT: 2 4 2.00 * rclb $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrb $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rclb %cl, %dil +# CHECK-NEXT: 1 1 1.00 rcrb %cl, %dil +# CHECK-NEXT: 2 4 2.00 * rclb %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrb %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rclw %di +# CHECK-NEXT: 1 1 1.00 rcrw %di +# CHECK-NEXT: 2 4 2.00 * rclw (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrw (%rax) +# CHECK-NEXT: 1 1 1.00 rclw $7, %di +# CHECK-NEXT: 1 1 1.00 rcrw $7, %di +# CHECK-NEXT: 2 4 2.00 * rclw $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrw $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rclw %cl, %di +# CHECK-NEXT: 1 1 1.00 rcrw %cl, %di +# CHECK-NEXT: 2 4 2.00 * rclw %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrw %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rcll %edi +# CHECK-NEXT: 1 1 1.00 rcrl %edi +# CHECK-NEXT: 2 4 2.00 * rcll (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrl (%rax) +# CHECK-NEXT: 1 1 1.00 rcll $7, %edi +# CHECK-NEXT: 1 1 1.00 rcrl $7, %edi +# CHECK-NEXT: 2 4 2.00 * rcll $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrl $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rcll %cl, %edi +# CHECK-NEXT: 1 1 1.00 rcrl %cl, %edi +# CHECK-NEXT: 2 4 2.00 * rcll %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrl %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rclq %rdi +# CHECK-NEXT: 1 1 1.00 rcrq %rdi +# CHECK-NEXT: 2 4 2.00 * rclq (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrq (%rax) +# CHECK-NEXT: 1 1 1.00 rclq $7, %rdi +# CHECK-NEXT: 1 1 1.00 rcrq $7, %rdi +# CHECK-NEXT: 2 4 2.00 * rclq $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrq $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rclq %cl, %rdi +# CHECK-NEXT: 1 1 1.00 rcrq %cl, %rdi +# CHECK-NEXT: 2 4 2.00 * rclq %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * rcrq %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rolb %dil +# CHECK-NEXT: 1 1 1.00 rorb %dil +# CHECK-NEXT: 2 4 2.00 * * rolb (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorb (%rax) +# CHECK-NEXT: 1 1 1.00 rolb $7, %dil +# CHECK-NEXT: 1 1 1.00 rorb $7, %dil +# CHECK-NEXT: 2 4 2.00 * * rolb $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorb $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rolb %cl, %dil +# CHECK-NEXT: 1 1 1.00 rorb %cl, %dil +# CHECK-NEXT: 2 4 2.00 * * rolb %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorb %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rolw %di +# CHECK-NEXT: 1 1 1.00 rorw %di +# CHECK-NEXT: 2 4 2.00 * * rolw (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorw (%rax) +# CHECK-NEXT: 1 1 1.00 rolw $7, %di +# CHECK-NEXT: 1 1 1.00 rorw $7, %di +# CHECK-NEXT: 2 4 2.00 * * rolw $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorw $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rolw %cl, %di +# CHECK-NEXT: 1 1 1.00 rorw %cl, %di +# CHECK-NEXT: 2 4 2.00 * * rolw %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorw %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 roll %edi +# CHECK-NEXT: 1 1 1.00 rorl %edi +# CHECK-NEXT: 2 4 2.00 * * roll (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorl (%rax) +# CHECK-NEXT: 1 1 1.00 roll $7, %edi +# CHECK-NEXT: 1 1 1.00 rorl $7, %edi +# CHECK-NEXT: 2 4 2.00 * * roll $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorl $7, (%rax) +# CHECK-NEXT: 1 1 1.00 roll %cl, %edi +# CHECK-NEXT: 1 1 1.00 rorl %cl, %edi +# CHECK-NEXT: 2 4 2.00 * * roll %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorl %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 rolq %rdi +# CHECK-NEXT: 1 1 1.00 rorq %rdi +# CHECK-NEXT: 2 4 2.00 * * rolq (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorq (%rax) +# CHECK-NEXT: 1 1 1.00 rolq $7, %rdi +# CHECK-NEXT: 1 1 1.00 rorq $7, %rdi +# CHECK-NEXT: 2 4 2.00 * * rolq $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorq $7, (%rax) +# CHECK-NEXT: 1 1 1.00 rolq %cl, %rdi +# CHECK-NEXT: 1 1 1.00 rorq %cl, %rdi +# CHECK-NEXT: 2 4 2.00 * * rolq %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 sarb %dil +# CHECK-NEXT: 1 1 1.00 shlb %dil +# CHECK-NEXT: 1 1 1.00 shrb %dil +# CHECK-NEXT: 2 4 2.00 * * sarb (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlb (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 1.00 sarb $7, %dil +# CHECK-NEXT: 1 1 1.00 shlb $7, %dil +# CHECK-NEXT: 1 1 1.00 shrb $7, %dil +# CHECK-NEXT: 2 4 2.00 * * sarb $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlb $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrb $7, (%rax) +# CHECK-NEXT: 1 1 1.00 sarb %cl, %dil +# CHECK-NEXT: 1 1 1.00 shlb %cl, %dil +# CHECK-NEXT: 1 1 1.00 shrb %cl, %dil +# CHECK-NEXT: 2 4 2.00 * * sarb %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlb %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 sarw %di +# CHECK-NEXT: 1 1 1.00 shlw %di +# CHECK-NEXT: 1 1 1.00 shrw %di +# CHECK-NEXT: 2 4 2.00 * * sarw (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlw (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 1.00 sarw $7, %di +# CHECK-NEXT: 1 1 1.00 shlw $7, %di +# CHECK-NEXT: 1 1 1.00 shrw $7, %di +# CHECK-NEXT: 2 4 2.00 * * sarw $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlw $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrw $7, (%rax) +# CHECK-NEXT: 1 1 1.00 sarw %cl, %di +# CHECK-NEXT: 1 1 1.00 shlw %cl, %di +# CHECK-NEXT: 1 1 1.00 shrw %cl, %di +# CHECK-NEXT: 2 4 2.00 * * sarw %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlw %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 sarl %edi +# CHECK-NEXT: 1 1 1.00 shll %edi +# CHECK-NEXT: 1 1 1.00 shrl %edi +# CHECK-NEXT: 2 4 2.00 * * sarl (%rax) +# CHECK-NEXT: 2 4 2.00 * * shll (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 1.00 sarl $7, %edi +# CHECK-NEXT: 1 1 1.00 shll $7, %edi +# CHECK-NEXT: 1 1 1.00 shrl $7, %edi +# CHECK-NEXT: 2 4 2.00 * * sarl $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shll $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrl $7, (%rax) +# CHECK-NEXT: 1 1 1.00 sarl %cl, %edi +# CHECK-NEXT: 1 1 1.00 shll %cl, %edi +# CHECK-NEXT: 1 1 1.00 shrl %cl, %edi +# CHECK-NEXT: 2 4 2.00 * * sarl %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shll %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 1.00 sarq %rdi +# CHECK-NEXT: 1 1 1.00 shlq %rdi +# CHECK-NEXT: 1 1 1.00 shrq %rdi +# CHECK-NEXT: 2 4 2.00 * * sarq (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlq (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 1.00 sarq $7, %rdi +# CHECK-NEXT: 1 1 1.00 shlq $7, %rdi +# CHECK-NEXT: 1 1 1.00 shrq $7, %rdi +# CHECK-NEXT: 2 4 2.00 * * sarq $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlq $7, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrq $7, (%rax) +# CHECK-NEXT: 1 1 1.00 sarq %cl, %rdi +# CHECK-NEXT: 1 1 1.00 shlq %cl, %rdi +# CHECK-NEXT: 1 1 1.00 shrq %cl, %rdi +# CHECK-NEXT: 2 4 2.00 * * sarq %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shlq %cl, (%rax) +# CHECK-NEXT: 2 4 2.00 * * shrq %cl, (%rax) + +# 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: - - - - - 168.00 - 168.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: +# CHECK-NEXT: - - - - - 1.00 - - rclb %dil +# CHECK-NEXT: - - - - - 1.00 - - rcrb %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclb (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrb (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - - rcrb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - - rcrb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclw %di +# CHECK-NEXT: - - - - - 1.00 - - rcrw %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclw (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrw (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclw $7, %di +# CHECK-NEXT: - - - - - 1.00 - - rcrw $7, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - - rcrw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rcll %edi +# CHECK-NEXT: - - - - - 1.00 - - rcrl %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcll (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrl (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rcll $7, %edi +# CHECK-NEXT: - - - - - 1.00 - - rcrl $7, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcll $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrl $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rcll %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - - rcrl %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcll %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrl %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclq %rdi +# CHECK-NEXT: - - - - - 1.00 - - rcrq %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclq (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrq (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - - rcrq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rclq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - - rcrq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rclq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rcrq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolb %dil +# CHECK-NEXT: - - - - - 1.00 - - rorb %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolb (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorb (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - - rorb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - - rorb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolw %di +# CHECK-NEXT: - - - - - 1.00 - - rorw %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolw (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorw (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolw $7, %di +# CHECK-NEXT: - - - - - 1.00 - - rorw $7, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - - rorw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - roll %edi +# CHECK-NEXT: - - - - - 1.00 - - rorl %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 roll (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorl (%rax) +# CHECK-NEXT: - - - - - 1.00 - - roll $7, %edi +# CHECK-NEXT: - - - - - 1.00 - - rorl $7, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 roll $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorl $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - roll %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - - rorl %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 roll %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorl %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolq %rdi +# CHECK-NEXT: - - - - - 1.00 - - rorq %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolq (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorq (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - - rorq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - rolq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - - rorq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 rolq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 rorq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarb %dil +# CHECK-NEXT: - - - - - 1.00 - - shlb %dil +# CHECK-NEXT: - - - - - 1.00 - - shrb %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarb (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlb (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrb (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - - shlb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - - shrb $7, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrb $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - - shlb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - - shrb %cl, %dil +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrb %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarw %di +# CHECK-NEXT: - - - - - 1.00 - - shlw %di +# CHECK-NEXT: - - - - - 1.00 - - shrw %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarw (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlw (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrw (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarw $7, %di +# CHECK-NEXT: - - - - - 1.00 - - shlw $7, %di +# CHECK-NEXT: - - - - - 1.00 - - shrw $7, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrw $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - - shlw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - - shrw %cl, %di +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrw %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarl %edi +# CHECK-NEXT: - - - - - 1.00 - - shll %edi +# CHECK-NEXT: - - - - - 1.00 - - shrl %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarl (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shll (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrl (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarl $7, %edi +# CHECK-NEXT: - - - - - 1.00 - - shll $7, %edi +# CHECK-NEXT: - - - - - 1.00 - - shrl $7, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarl $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shll $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrl $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarl %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - - shll %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - - shrl %cl, %edi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarl %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shll %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrl %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarq %rdi +# CHECK-NEXT: - - - - - 1.00 - - shlq %rdi +# CHECK-NEXT: - - - - - 1.00 - - shrq %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarq (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlq (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrq (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - - shlq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - - shrq $7, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrq $7, (%rax) +# CHECK-NEXT: - - - - - 1.00 - - sarq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - - shlq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - - shrq %cl, %rdi +# CHECK-NEXT: - - - - - 1.00 - 2.00 sarq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shlq %cl, (%rax) +# CHECK-NEXT: - - - - - 1.00 - 2.00 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s new file mode 100644 index 00000000000..17b206ee6f7 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s @@ -0,0 +1,546 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 rclb %dil +# CHECK-NEXT: 1 1 0.50 rcrb %dil +# CHECK-NEXT: 3 6 1.00 * rclb (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrb (%rax) +# CHECK-NEXT: 1 1 0.50 rclb $7, %dil +# CHECK-NEXT: 1 1 0.50 rcrb $7, %dil +# CHECK-NEXT: 3 6 1.00 * rclb $7, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrb $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclb %cl, %dil +# CHECK-NEXT: 1 1 0.50 rcrb %cl, %dil +# CHECK-NEXT: 3 6 1.00 * rclb %cl, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rclw %di +# CHECK-NEXT: 1 1 0.50 rcrw %di +# CHECK-NEXT: 3 6 1.00 * rclw (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrw (%rax) +# CHECK-NEXT: 1 1 0.50 rclw $7, %di +# CHECK-NEXT: 1 1 0.50 rcrw $7, %di +# CHECK-NEXT: 3 6 1.00 * rclw $7, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrw $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclw %cl, %di +# CHECK-NEXT: 1 1 0.50 rcrw %cl, %di +# CHECK-NEXT: 3 6 1.00 * rclw %cl, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rcll %edi +# CHECK-NEXT: 1 1 0.50 rcrl %edi +# CHECK-NEXT: 3 6 1.00 * rcll (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrl (%rax) +# CHECK-NEXT: 1 1 0.50 rcll $7, %edi +# CHECK-NEXT: 1 1 0.50 rcrl $7, %edi +# CHECK-NEXT: 3 6 1.00 * rcll $7, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrl $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rcll %cl, %edi +# CHECK-NEXT: 1 1 0.50 rcrl %cl, %edi +# CHECK-NEXT: 3 6 1.00 * rcll %cl, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 rclq %rdi +# CHECK-NEXT: 1 1 0.50 rcrq %rdi +# CHECK-NEXT: 3 6 1.00 * rclq (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrq (%rax) +# CHECK-NEXT: 1 1 0.50 rclq $7, %rdi +# CHECK-NEXT: 1 1 0.50 rcrq $7, %rdi +# CHECK-NEXT: 3 6 1.00 * rclq $7, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrq $7, (%rax) +# CHECK-NEXT: 1 1 0.50 rclq %cl, %rdi +# CHECK-NEXT: 1 1 0.50 rcrq %cl, %rdi +# CHECK-NEXT: 3 6 1.00 * rclq %cl, (%rax) +# CHECK-NEXT: 3 6 1.00 * rcrq %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolb %dil +# CHECK-NEXT: 2 2 1.00 rorb %dil +# CHECK-NEXT: 5 8 1.00 * * rolb (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorb (%rax) +# CHECK-NEXT: 2 2 1.00 rolb $7, %dil +# CHECK-NEXT: 2 2 1.00 rorb $7, %dil +# CHECK-NEXT: 5 8 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolb %cl, %dil +# CHECK-NEXT: 3 3 1.50 rorb %cl, %dil +# CHECK-NEXT: 6 9 1.50 * * rolb %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * rorb %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolw %di +# CHECK-NEXT: 2 2 1.00 rorw %di +# CHECK-NEXT: 5 8 1.00 * * rolw (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorw (%rax) +# CHECK-NEXT: 2 2 1.00 rolw $7, %di +# CHECK-NEXT: 2 2 1.00 rorw $7, %di +# CHECK-NEXT: 5 8 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolw %cl, %di +# CHECK-NEXT: 3 3 1.50 rorw %cl, %di +# CHECK-NEXT: 6 9 1.50 * * rolw %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * rorw %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 roll %edi +# CHECK-NEXT: 2 2 1.00 rorl %edi +# CHECK-NEXT: 5 8 1.00 * * roll (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorl (%rax) +# CHECK-NEXT: 2 2 1.00 roll $7, %edi +# CHECK-NEXT: 2 2 1.00 rorl $7, %edi +# CHECK-NEXT: 5 8 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 roll %cl, %edi +# CHECK-NEXT: 3 3 1.50 rorl %cl, %edi +# CHECK-NEXT: 6 9 1.50 * * roll %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * rorl %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolq %rdi +# CHECK-NEXT: 2 2 1.00 rorq %rdi +# CHECK-NEXT: 5 8 1.00 * * rolq (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorq (%rax) +# CHECK-NEXT: 2 2 1.00 rolq $7, %rdi +# CHECK-NEXT: 2 2 1.00 rorq $7, %rdi +# CHECK-NEXT: 5 8 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 5 8 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 rorq %cl, %rdi +# CHECK-NEXT: 6 9 1.50 * * rolq %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 4 7 1.00 * * sarb (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlb (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 4 7 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shlb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shrb %cl, %dil +# CHECK-NEXT: 6 9 1.50 * * sarb %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shlb %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 4 7 1.00 * * sarw (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlw (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 4 7 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarw %cl, %di +# CHECK-NEXT: 3 3 1.50 shlw %cl, %di +# CHECK-NEXT: 3 3 1.50 shrw %cl, %di +# CHECK-NEXT: 6 9 1.50 * * sarw %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shlw %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 4 7 1.00 * * sarl (%rax) +# CHECK-NEXT: 4 7 1.00 * * shll (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 4 7 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarl %cl, %edi +# CHECK-NEXT: 3 3 1.50 shll %cl, %edi +# CHECK-NEXT: 3 3 1.50 shrl %cl, %edi +# CHECK-NEXT: 6 9 1.50 * * sarl %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shll %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 4 7 1.00 * * sarq (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlq (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 4 7 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 4 7 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shlq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shrq %cl, %rdi +# CHECK-NEXT: 6 9 1.50 * * sarq %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shlq %cl, (%rax) +# CHECK-NEXT: 6 9 1.50 * * shrq %cl, (%rax) + +# 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: - - 140.00 - 84.00 140.00 84.00 84.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclb %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrb %dil +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclb (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrb (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclb $7, %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrb $7, %dil +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrb $7, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclb %cl, %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrb %cl, %dil +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclw %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrw %di +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclw (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrw (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclw $7, %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrw $7, %di +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrw $7, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclw %cl, %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrw %cl, %di +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcll %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrl %edi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcll (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrl (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcll $7, %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrl $7, %edi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrl $7, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcll %cl, %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrl %cl, %edi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcll %cl, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclq %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrq %rdi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclq (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrq (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclq $7, %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrq $7, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - rclq %cl, %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - rcrq %cl, %rdi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rclq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 rcrq %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolb %dil +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorb %dil +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolb (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorb (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolb $7, %dil +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorb $7, %dil +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolb $7, (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - rolb %cl, %dil +# CHECK-NEXT: - - 1.50 - - 1.50 - - rorb %cl, %dil +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rolb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rorb %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolw %di +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorw %di +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolw (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorw (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolw $7, %di +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorw $7, %di +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolw $7, (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - rolw %cl, %di +# CHECK-NEXT: - - 1.50 - - 1.50 - - rorw %cl, %di +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rolw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rorw %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - roll %edi +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorl %edi +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 roll (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorl (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - roll $7, %edi +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorl $7, %edi +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 roll $7, (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - roll %cl, %edi +# CHECK-NEXT: - - 1.50 - - 1.50 - - rorl %cl, %edi +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 roll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rorl %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolq %rdi +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorq %rdi +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolq (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorq (%rax) +# CHECK-NEXT: - - 1.00 - - 1.00 - - rolq $7, %rdi +# CHECK-NEXT: - - 1.00 - - 1.00 - - rorq $7, %rdi +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rolq $7, (%rax) +# CHECK-NEXT: - - 1.00 - 1.00 1.00 1.00 1.00 rorq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - rolq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - 1.50 - - rorq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rolq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 rorq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarb %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlb %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrb %dil +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarb (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlb (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrb (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarb $7, %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlb $7, %dil +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrb $7, %dil +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - sarb %cl, %dil +# CHECK-NEXT: - - 1.50 - - 1.50 - - shlb %cl, %dil +# CHECK-NEXT: - - 1.50 - - 1.50 - - shrb %cl, %dil +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 sarb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shlb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarw %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlw %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrw %di +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarw (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlw (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrw (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarw $7, %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlw $7, %di +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrw $7, %di +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - sarw %cl, %di +# CHECK-NEXT: - - 1.50 - - 1.50 - - shlw %cl, %di +# CHECK-NEXT: - - 1.50 - - 1.50 - - shrw %cl, %di +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 sarw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shlw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarl %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shll %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrl %edi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarl (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shll (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrl (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarl $7, %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shll $7, %edi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrl $7, %edi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarl $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - sarl %cl, %edi +# CHECK-NEXT: - - 1.50 - - 1.50 - - shll %cl, %edi +# CHECK-NEXT: - - 1.50 - - 1.50 - - shrl %cl, %edi +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 sarl %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarq %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlq %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrq %rdi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarq (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlq (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrq (%rax) +# CHECK-NEXT: - - 0.50 - - 0.50 - - sarq $7, %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shlq $7, %rdi +# CHECK-NEXT: - - 0.50 - - 0.50 - - shrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 sarq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shlq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 1.00 0.50 1.00 1.00 shrq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - 1.50 - - sarq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - 1.50 - - shlq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - 1.50 - - shrq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 sarq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shlq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 1.00 1.50 1.00 1.00 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s new file mode 100644 index 00000000000..bda06beca7b --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s @@ -0,0 +1,548 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 3 3 0.75 rclb %dil +# CHECK-NEXT: 3 3 0.75 rcrb %dil +# CHECK-NEXT: 5 8 0.75 * rclb (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb (%rax) +# CHECK-NEXT: 3 3 0.75 rclb $7, %dil +# CHECK-NEXT: 3 3 0.75 rcrb $7, %dil +# CHECK-NEXT: 5 8 0.75 * rclb $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb $7, (%rax) +# CHECK-NEXT: 9 11 2.50 rclb %cl, %dil +# CHECK-NEXT: 10 14 2.50 rcrb %cl, %dil +# CHECK-NEXT: 10 15 2.50 * rclb %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrb %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclw %di +# CHECK-NEXT: 3 3 0.75 rcrw %di +# CHECK-NEXT: 5 8 0.75 * rclw (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw (%rax) +# CHECK-NEXT: 3 3 0.75 rclw $7, %di +# CHECK-NEXT: 3 3 0.75 rcrw $7, %di +# CHECK-NEXT: 5 8 0.75 * rclw $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclw %cl, %di +# CHECK-NEXT: 7 11 2.00 rcrw %cl, %di +# CHECK-NEXT: 10 15 2.50 * rclw %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrw %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rcll %edi +# CHECK-NEXT: 3 3 0.75 rcrl %edi +# CHECK-NEXT: 5 8 0.75 * rcll (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl (%rax) +# CHECK-NEXT: 3 3 0.75 rcll $7, %edi +# CHECK-NEXT: 3 3 0.75 rcrl $7, %edi +# CHECK-NEXT: 5 8 0.75 * rcll $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rcll %cl, %edi +# CHECK-NEXT: 7 11 2.00 rcrl %cl, %edi +# CHECK-NEXT: 10 15 2.50 * rcll %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrl %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclq %rdi +# CHECK-NEXT: 3 3 0.75 rcrq %rdi +# CHECK-NEXT: 5 8 0.75 * rclq (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq (%rax) +# CHECK-NEXT: 3 3 0.75 rclq $7, %rdi +# CHECK-NEXT: 3 3 0.75 rcrq $7, %rdi +# CHECK-NEXT: 5 8 0.75 * rclq $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclq %cl, %rdi +# CHECK-NEXT: 7 11 2.00 rcrq %cl, %rdi +# CHECK-NEXT: 10 15 2.50 * rclq %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrq %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolb %dil +# CHECK-NEXT: 2 2 1.00 rorb %dil +# CHECK-NEXT: 5 7 1.00 * * rolb (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb (%rax) +# CHECK-NEXT: 2 2 1.00 rolb $7, %dil +# CHECK-NEXT: 2 2 1.00 rorb $7, %dil +# CHECK-NEXT: 5 7 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolb %cl, %dil +# CHECK-NEXT: 3 3 1.50 rorb %cl, %dil +# CHECK-NEXT: 6 8 1.50 * * rolb %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorb %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolw %di +# CHECK-NEXT: 2 2 1.00 rorw %di +# CHECK-NEXT: 5 7 1.00 * * rolw (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw (%rax) +# CHECK-NEXT: 2 2 1.00 rolw $7, %di +# CHECK-NEXT: 2 2 1.00 rorw $7, %di +# CHECK-NEXT: 5 7 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolw %cl, %di +# CHECK-NEXT: 3 3 1.50 rorw %cl, %di +# CHECK-NEXT: 6 8 1.50 * * rolw %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorw %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 roll %edi +# CHECK-NEXT: 2 2 1.00 rorl %edi +# CHECK-NEXT: 5 7 1.00 * * roll (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl (%rax) +# CHECK-NEXT: 2 2 1.00 roll $7, %edi +# CHECK-NEXT: 2 2 1.00 rorl $7, %edi +# CHECK-NEXT: 5 7 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 roll %cl, %edi +# CHECK-NEXT: 3 3 1.50 rorl %cl, %edi +# CHECK-NEXT: 6 8 1.50 * * roll %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorl %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolq %rdi +# CHECK-NEXT: 2 2 1.00 rorq %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq (%rax) +# CHECK-NEXT: 2 2 1.00 rolq $7, %rdi +# CHECK-NEXT: 2 2 1.00 rorq $7, %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 rorq %cl, %rdi +# CHECK-NEXT: 6 8 1.50 * * rolq %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 4 6 1.00 * * sarb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 4 6 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shlb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shrb %cl, %dil +# CHECK-NEXT: 6 8 1.50 * * sarb %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlb %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 4 6 1.00 * * sarw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 4 6 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarw %cl, %di +# CHECK-NEXT: 3 3 1.50 shlw %cl, %di +# CHECK-NEXT: 3 3 1.50 shrw %cl, %di +# CHECK-NEXT: 6 8 1.50 * * sarw %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlw %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 4 6 1.00 * * sarl (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 4 6 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarl %cl, %edi +# CHECK-NEXT: 3 3 1.50 shll %cl, %edi +# CHECK-NEXT: 3 3 1.50 shrl %cl, %edi +# CHECK-NEXT: 6 8 1.50 * * sarl %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shll %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shlq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shrq %cl, %rdi +# CHECK-NEXT: 6 8 1.50 * * sarq %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlq %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrq %cl, (%rax) + +# 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: - - 186.75 55.25 70.00 70.00 56.00 28.25 186.75 28.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb $7, (%rax) +# CHECK-NEXT: - - 3.00 2.00 - - - 1.00 3.00 - rclb %cl, %dil +# CHECK-NEXT: - - 2.75 3.25 - - - 1.25 2.75 - rcrb %cl, %dil +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclb %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrb %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw $7, %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw $7, %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rclw %cl, %di +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrw %cl, %di +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclw %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrw %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll $7, %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl $7, %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcll %cl, %edi +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrl %cl, %edi +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rcll %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrl %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rclq %cl, %rdi +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrq %cl, %rdi +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclq %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrq %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb $7, %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb $7, %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorb %cl, %dil +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorb %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw $7, %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw $7, %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorw %cl, %di +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorw %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll $7, %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl $7, %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - roll %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorl %cl, %edi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 roll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorl %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq $7, %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq $7, %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb $7, %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrb %cl, %dil +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw $7, %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrw %cl, %di +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl $7, %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarl %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shll %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrl %cl, %edi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarl %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s new file mode 100644 index 00000000000..2f181705bb3 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s @@ -0,0 +1,548 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake-avx512 -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 3 3 0.75 rclb %dil +# CHECK-NEXT: 3 3 0.75 rcrb %dil +# CHECK-NEXT: 5 8 0.75 * rclb (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb (%rax) +# CHECK-NEXT: 3 3 0.75 rclb $7, %dil +# CHECK-NEXT: 3 3 0.75 rcrb $7, %dil +# CHECK-NEXT: 5 8 0.75 * rclb $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrb $7, (%rax) +# CHECK-NEXT: 9 11 2.50 rclb %cl, %dil +# CHECK-NEXT: 10 14 2.50 rcrb %cl, %dil +# CHECK-NEXT: 10 15 2.50 * rclb %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrb %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclw %di +# CHECK-NEXT: 3 3 0.75 rcrw %di +# CHECK-NEXT: 5 8 0.75 * rclw (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw (%rax) +# CHECK-NEXT: 3 3 0.75 rclw $7, %di +# CHECK-NEXT: 3 3 0.75 rcrw $7, %di +# CHECK-NEXT: 5 8 0.75 * rclw $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrw $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclw %cl, %di +# CHECK-NEXT: 7 11 2.00 rcrw %cl, %di +# CHECK-NEXT: 10 15 2.50 * rclw %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrw %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rcll %edi +# CHECK-NEXT: 3 3 0.75 rcrl %edi +# CHECK-NEXT: 5 8 0.75 * rcll (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl (%rax) +# CHECK-NEXT: 3 3 0.75 rcll $7, %edi +# CHECK-NEXT: 3 3 0.75 rcrl $7, %edi +# CHECK-NEXT: 5 8 0.75 * rcll $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrl $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rcll %cl, %edi +# CHECK-NEXT: 7 11 2.00 rcrl %cl, %edi +# CHECK-NEXT: 10 15 2.50 * rcll %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrl %cl, (%rax) +# CHECK-NEXT: 3 3 0.75 rclq %rdi +# CHECK-NEXT: 3 3 0.75 rcrq %rdi +# CHECK-NEXT: 5 8 0.75 * rclq (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq (%rax) +# CHECK-NEXT: 3 3 0.75 rclq $7, %rdi +# CHECK-NEXT: 3 3 0.75 rcrq $7, %rdi +# CHECK-NEXT: 5 8 0.75 * rclq $7, (%rax) +# CHECK-NEXT: 5 8 0.75 * rcrq $7, (%rax) +# CHECK-NEXT: 7 11 2.00 rclq %cl, %rdi +# CHECK-NEXT: 7 11 2.00 rcrq %cl, %rdi +# CHECK-NEXT: 10 15 2.50 * rclq %cl, (%rax) +# CHECK-NEXT: 11 18 2.25 * rcrq %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolb %dil +# CHECK-NEXT: 2 2 1.00 rorb %dil +# CHECK-NEXT: 5 7 1.00 * * rolb (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb (%rax) +# CHECK-NEXT: 2 2 1.00 rolb $7, %dil +# CHECK-NEXT: 2 2 1.00 rorb $7, %dil +# CHECK-NEXT: 5 7 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolb %cl, %dil +# CHECK-NEXT: 3 3 1.50 rorb %cl, %dil +# CHECK-NEXT: 6 8 1.50 * * rolb %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorb %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolw %di +# CHECK-NEXT: 2 2 1.00 rorw %di +# CHECK-NEXT: 5 7 1.00 * * rolw (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw (%rax) +# CHECK-NEXT: 2 2 1.00 rolw $7, %di +# CHECK-NEXT: 2 2 1.00 rorw $7, %di +# CHECK-NEXT: 5 7 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolw %cl, %di +# CHECK-NEXT: 3 3 1.50 rorw %cl, %di +# CHECK-NEXT: 6 8 1.50 * * rolw %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorw %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 roll %edi +# CHECK-NEXT: 2 2 1.00 rorl %edi +# CHECK-NEXT: 5 7 1.00 * * roll (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl (%rax) +# CHECK-NEXT: 2 2 1.00 roll $7, %edi +# CHECK-NEXT: 2 2 1.00 rorl $7, %edi +# CHECK-NEXT: 5 7 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 roll %cl, %edi +# CHECK-NEXT: 3 3 1.50 rorl %cl, %edi +# CHECK-NEXT: 6 8 1.50 * * roll %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorl %cl, (%rax) +# CHECK-NEXT: 2 2 1.00 rolq %rdi +# CHECK-NEXT: 2 2 1.00 rorq %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq (%rax) +# CHECK-NEXT: 2 2 1.00 rolq $7, %rdi +# CHECK-NEXT: 2 2 1.00 rorq $7, %rdi +# CHECK-NEXT: 5 7 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 5 7 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 rolq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 rorq %cl, %rdi +# CHECK-NEXT: 6 8 1.50 * * rolq %cl, (%rax) +# CHECK-NEXT: 5 8 1.50 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarb %dil +# CHECK-NEXT: 1 1 0.50 shlb %dil +# CHECK-NEXT: 1 1 0.50 shrb %dil +# CHECK-NEXT: 4 6 1.00 * * sarb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.50 sarb $7, %dil +# CHECK-NEXT: 1 1 0.50 shlb $7, %dil +# CHECK-NEXT: 1 1 0.50 shrb $7, %dil +# CHECK-NEXT: 4 6 1.00 * * sarb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlb $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrb $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shlb %cl, %dil +# CHECK-NEXT: 3 3 1.50 shrb %cl, %dil +# CHECK-NEXT: 6 8 1.50 * * sarb %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlb %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarw %di +# CHECK-NEXT: 1 1 0.50 shlw %di +# CHECK-NEXT: 1 1 0.50 shrw %di +# CHECK-NEXT: 4 6 1.00 * * sarw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.50 sarw $7, %di +# CHECK-NEXT: 1 1 0.50 shlw $7, %di +# CHECK-NEXT: 1 1 0.50 shrw $7, %di +# CHECK-NEXT: 4 6 1.00 * * sarw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlw $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrw $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarw %cl, %di +# CHECK-NEXT: 3 3 1.50 shlw %cl, %di +# CHECK-NEXT: 3 3 1.50 shrw %cl, %di +# CHECK-NEXT: 6 8 1.50 * * sarw %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlw %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarl %edi +# CHECK-NEXT: 1 1 0.50 shll %edi +# CHECK-NEXT: 1 1 0.50 shrl %edi +# CHECK-NEXT: 4 6 1.00 * * sarl (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.50 sarl $7, %edi +# CHECK-NEXT: 1 1 0.50 shll $7, %edi +# CHECK-NEXT: 1 1 0.50 shrl $7, %edi +# CHECK-NEXT: 4 6 1.00 * * sarl $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shll $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrl $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarl %cl, %edi +# CHECK-NEXT: 3 3 1.50 shll %cl, %edi +# CHECK-NEXT: 3 3 1.50 shrl %cl, %edi +# CHECK-NEXT: 6 8 1.50 * * sarl %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shll %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.50 sarq %rdi +# CHECK-NEXT: 1 1 0.50 shlq %rdi +# CHECK-NEXT: 1 1 0.50 shrq %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.50 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.50 shrq $7, %rdi +# CHECK-NEXT: 4 6 1.00 * * sarq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shlq $7, (%rax) +# CHECK-NEXT: 4 6 1.00 * * shrq $7, (%rax) +# CHECK-NEXT: 3 3 1.50 sarq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shlq %cl, %rdi +# CHECK-NEXT: 3 3 1.50 shrq %cl, %rdi +# CHECK-NEXT: 6 8 1.50 * * sarq %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shlq %cl, (%rax) +# CHECK-NEXT: 6 8 1.50 * * shrq %cl, (%rax) + +# 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: - - 186.75 55.25 70.00 70.00 56.00 28.25 186.75 28.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrb $7, %dil +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclb $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrb $7, (%rax) +# CHECK-NEXT: - - 3.00 2.00 - - - 1.00 3.00 - rclb %cl, %dil +# CHECK-NEXT: - - 2.75 3.25 - - - 1.25 2.75 - rcrb %cl, %dil +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclb %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrb %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclw $7, %di +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrw $7, %di +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclw $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrw $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rclw %cl, %di +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrw %cl, %di +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclw %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrw %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcll $7, %edi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrl $7, %edi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcll $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrl $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcll %cl, %edi +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrl %cl, %edi +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rcll %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrl %cl, (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq (%rax) +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rclq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 1.00 - rcrq $7, %rdi +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rclq $7, (%rax) +# CHECK-NEXT: - - 1.00 0.50 0.83 0.83 - 0.50 1.00 0.33 rcrq $7, (%rax) +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rclq %cl, %rdi +# CHECK-NEXT: - - 2.00 2.50 - - - 0.50 2.00 - rcrq %cl, %rdi +# CHECK-NEXT: - - 2.75 1.75 0.83 0.83 - 0.75 2.75 0.33 rclq %cl, (%rax) +# CHECK-NEXT: - - 2.50 3.00 0.83 0.83 - 1.00 2.50 0.33 rcrq %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolb $7, %dil +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorb $7, %dil +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorb %cl, %dil +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorb %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw $7, %di +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorw $7, %di +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorw %cl, %di +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorw %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll $7, %edi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorl $7, %edi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - roll %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorl %cl, %edi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 roll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorl %cl, (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq (%rax) +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq $7, %rdi +# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rorq $7, %rdi +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq $7, (%rax) +# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 rolq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 - - 1.50 0.33 rorq %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlb $7, %dil +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrb $7, %dil +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlb %cl, %dil +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrb %cl, %dil +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlb %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrb %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlw $7, %di +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrw $7, %di +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlw %cl, %di +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrw %cl, %di +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlw %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrw %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarl $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shll $7, %edi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrl $7, %edi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarl %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shll %cl, %edi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrl %cl, %edi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarl %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shll %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrl %cl, (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq (%rax) +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sarq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shlq $7, %rdi +# CHECK-NEXT: - - 0.50 - - - - - 0.50 - shrq $7, %rdi +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq $7, (%rax) +# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq $7, (%rax) +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlq %cl, %rdi +# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrq %cl, %rdi +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 sarq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shlq %cl, (%rax) +# CHECK-NEXT: - - 1.50 - 0.83 0.83 1.00 - 1.50 0.33 shrq %cl, (%rax) + diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s new file mode 100644 index 00000000000..75691a1c75f --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s @@ -0,0 +1,550 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver1 -instruction-tables < %s | FileCheck %s + +rclb %dil +rcrb %dil +rclb (%rax) +rcrb (%rax) +rclb $7, %dil +rcrb $7, %dil +rclb $7, (%rax) +rcrb $7, (%rax) +rclb %cl, %dil +rcrb %cl, %dil +rclb %cl, (%rax) +rcrb %cl, (%rax) + +rclw %di +rcrw %di +rclw (%rax) +rcrw (%rax) +rclw $7, %di +rcrw $7, %di +rclw $7, (%rax) +rcrw $7, (%rax) +rclw %cl, %di +rcrw %cl, %di +rclw %cl, (%rax) +rcrw %cl, (%rax) + +rcll %edi +rcrl %edi +rcll (%rax) +rcrl (%rax) +rcll $7, %edi +rcrl $7, %edi +rcll $7, (%rax) +rcrl $7, (%rax) +rcll %cl, %edi +rcrl %cl, %edi +rcll %cl, (%rax) +rcrl %cl, (%rax) + +rclq %rdi +rcrq %rdi +rclq (%rax) +rcrq (%rax) +rclq $7, %rdi +rcrq $7, %rdi +rclq $7, (%rax) +rcrq $7, (%rax) +rclq %cl, %rdi +rcrq %cl, %rdi +rclq %cl, (%rax) +rcrq %cl, (%rax) + +rolb %dil +rorb %dil +rolb (%rax) +rorb (%rax) +rolb $7, %dil +rorb $7, %dil +rolb $7, (%rax) +rorb $7, (%rax) +rolb %cl, %dil +rorb %cl, %dil +rolb %cl, (%rax) +rorb %cl, (%rax) + +rolw %di +rorw %di +rolw (%rax) +rorw (%rax) +rolw $7, %di +rorw $7, %di +rolw $7, (%rax) +rorw $7, (%rax) +rolw %cl, %di +rorw %cl, %di +rolw %cl, (%rax) +rorw %cl, (%rax) + +roll %edi +rorl %edi +roll (%rax) +rorl (%rax) +roll $7, %edi +rorl $7, %edi +roll $7, (%rax) +rorl $7, (%rax) +roll %cl, %edi +rorl %cl, %edi +roll %cl, (%rax) +rorl %cl, (%rax) + +rolq %rdi +rorq %rdi +rolq (%rax) +rorq (%rax) +rolq $7, %rdi +rorq $7, %rdi +rolq $7, (%rax) +rorq $7, (%rax) +rolq %cl, %rdi +rorq %cl, %rdi +rolq %cl, (%rax) +rorq %cl, (%rax) + +sarb %dil +shlb %dil +shrb %dil +sarb (%rax) +shlb (%rax) +shrb (%rax) +sarb $7, %dil +shlb $7, %dil +shrb $7, %dil +sarb $7, (%rax) +shlb $7, (%rax) +shrb $7, (%rax) +sarb %cl, %dil +shlb %cl, %dil +shrb %cl, %dil +sarb %cl, (%rax) +shlb %cl, (%rax) +shrb %cl, (%rax) + +sarw %di +shlw %di +shrw %di +sarw (%rax) +shlw (%rax) +shrw (%rax) +sarw $7, %di +shlw $7, %di +shrw $7, %di +sarw $7, (%rax) +shlw $7, (%rax) +shrw $7, (%rax) +sarw %cl, %di +shlw %cl, %di +shrw %cl, %di +sarw %cl, (%rax) +shlw %cl, (%rax) +shrw %cl, (%rax) + +sarl %edi +shll %edi +shrl %edi +sarl (%rax) +shll (%rax) +shrl (%rax) +sarl $7, %edi +shll $7, %edi +shrl $7, %edi +sarl $7, (%rax) +shll $7, (%rax) +shrl $7, (%rax) +sarl %cl, %edi +shll %cl, %edi +shrl %cl, %edi +sarl %cl, (%rax) +shll %cl, (%rax) +shrl %cl, (%rax) + +sarq %rdi +shlq %rdi +shrq %rdi +sarq (%rax) +shlq (%rax) +shrq (%rax) +sarq $7, %rdi +shlq $7, %rdi +shrq $7, %rdi +sarq $7, (%rax) +shlq $7, (%rax) +shrq $7, (%rax) +sarq %cl, %rdi +shlq %cl, %rdi +shrq %cl, %rdi +sarq %cl, (%rax) +shlq %cl, (%rax) +shrq %cl, (%rax) + +# 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 + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.25 rclb %dil +# CHECK-NEXT: 1 1 0.25 rcrb %dil +# CHECK-NEXT: 1 100 - * rclb (%rax) +# CHECK-NEXT: 1 100 - * rcrb (%rax) +# CHECK-NEXT: 1 1 0.25 rclb $7, %dil +# CHECK-NEXT: 1 1 0.25 rcrb $7, %dil +# CHECK-NEXT: 1 100 - * rclb $7, (%rax) +# CHECK-NEXT: 1 100 - * rcrb $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rclb %cl, %dil +# CHECK-NEXT: 1 1 0.25 rcrb %cl, %dil +# CHECK-NEXT: 1 100 - * rclb %cl, (%rax) +# CHECK-NEXT: 1 100 - * rcrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rclw %di +# CHECK-NEXT: 1 1 0.25 rcrw %di +# CHECK-NEXT: 1 100 - * rclw (%rax) +# CHECK-NEXT: 1 100 - * rcrw (%rax) +# CHECK-NEXT: 1 1 0.25 rclw $7, %di +# CHECK-NEXT: 1 1 0.25 rcrw $7, %di +# CHECK-NEXT: 1 100 - * rclw $7, (%rax) +# CHECK-NEXT: 1 100 - * rcrw $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rclw %cl, %di +# CHECK-NEXT: 1 1 0.25 rcrw %cl, %di +# CHECK-NEXT: 1 100 - * rclw %cl, (%rax) +# CHECK-NEXT: 1 100 - * rcrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rcll %edi +# CHECK-NEXT: 1 1 0.25 rcrl %edi +# CHECK-NEXT: 1 100 - * rcll (%rax) +# CHECK-NEXT: 1 100 - * rcrl (%rax) +# CHECK-NEXT: 1 1 0.25 rcll $7, %edi +# CHECK-NEXT: 1 1 0.25 rcrl $7, %edi +# CHECK-NEXT: 1 100 - * rcll $7, (%rax) +# CHECK-NEXT: 1 100 - * rcrl $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rcll %cl, %edi +# CHECK-NEXT: 1 1 0.25 rcrl %cl, %edi +# CHECK-NEXT: 1 100 - * rcll %cl, (%rax) +# CHECK-NEXT: 1 100 - * rcrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rclq %rdi +# CHECK-NEXT: 1 1 0.25 rcrq %rdi +# CHECK-NEXT: 1 100 - * rclq (%rax) +# CHECK-NEXT: 1 100 - * rcrq (%rax) +# CHECK-NEXT: 1 1 0.25 rclq $7, %rdi +# CHECK-NEXT: 1 1 0.25 rcrq $7, %rdi +# CHECK-NEXT: 1 100 - * rclq $7, (%rax) +# CHECK-NEXT: 1 100 - * rcrq $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rclq %cl, %rdi +# CHECK-NEXT: 1 1 0.25 rcrq %cl, %rdi +# CHECK-NEXT: 1 100 - * rclq %cl, (%rax) +# CHECK-NEXT: 1 100 - * rcrq %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rolb %dil +# CHECK-NEXT: 1 1 0.25 rorb %dil +# CHECK-NEXT: 3 5 1.00 * * rolb (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorb (%rax) +# CHECK-NEXT: 1 1 0.25 rolb $7, %dil +# CHECK-NEXT: 1 1 0.25 rorb $7, %dil +# CHECK-NEXT: 3 5 1.00 * * rolb $7, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorb $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rolb %cl, %dil +# CHECK-NEXT: 1 1 0.25 rorb %cl, %dil +# CHECK-NEXT: 3 5 1.00 * * rolb %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorb %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rolw %di +# CHECK-NEXT: 1 1 0.25 rorw %di +# CHECK-NEXT: 3 5 1.00 * * rolw (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorw (%rax) +# CHECK-NEXT: 1 1 0.25 rolw $7, %di +# CHECK-NEXT: 1 1 0.25 rorw $7, %di +# CHECK-NEXT: 3 5 1.00 * * rolw $7, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorw $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rolw %cl, %di +# CHECK-NEXT: 1 1 0.25 rorw %cl, %di +# CHECK-NEXT: 3 5 1.00 * * rolw %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorw %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 roll %edi +# CHECK-NEXT: 1 1 0.25 rorl %edi +# CHECK-NEXT: 3 5 1.00 * * roll (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorl (%rax) +# CHECK-NEXT: 1 1 0.25 roll $7, %edi +# CHECK-NEXT: 1 1 0.25 rorl $7, %edi +# CHECK-NEXT: 3 5 1.00 * * roll $7, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorl $7, (%rax) +# CHECK-NEXT: 1 1 0.25 roll %cl, %edi +# CHECK-NEXT: 1 1 0.25 rorl %cl, %edi +# CHECK-NEXT: 3 5 1.00 * * roll %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorl %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 rolq %rdi +# CHECK-NEXT: 1 1 0.25 rorq %rdi +# CHECK-NEXT: 3 5 1.00 * * rolq (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorq (%rax) +# CHECK-NEXT: 1 1 0.25 rolq $7, %rdi +# CHECK-NEXT: 1 1 0.25 rorq $7, %rdi +# CHECK-NEXT: 3 5 1.00 * * rolq $7, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorq $7, (%rax) +# CHECK-NEXT: 1 1 0.25 rolq %cl, %rdi +# CHECK-NEXT: 1 1 0.25 rorq %cl, %rdi +# CHECK-NEXT: 3 5 1.00 * * rolq %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * rorq %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 sarb %dil +# CHECK-NEXT: 1 1 0.25 shlb %dil +# CHECK-NEXT: 1 1 0.25 shrb %dil +# CHECK-NEXT: 2 5 0.50 * * sarb (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlb (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrb (%rax) +# CHECK-NEXT: 1 1 0.25 sarb $7, %dil +# CHECK-NEXT: 1 1 0.25 shlb $7, %dil +# CHECK-NEXT: 1 1 0.25 shrb $7, %dil +# CHECK-NEXT: 2 5 0.50 * * sarb $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlb $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrb $7, (%rax) +# CHECK-NEXT: 1 1 0.25 sarb %cl, %dil +# CHECK-NEXT: 1 1 0.25 shlb %cl, %dil +# CHECK-NEXT: 1 1 0.25 shrb %cl, %dil +# CHECK-NEXT: 3 5 1.00 * * sarb %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shlb %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shrb %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 sarw %di +# CHECK-NEXT: 1 1 0.25 shlw %di +# CHECK-NEXT: 1 1 0.25 shrw %di +# CHECK-NEXT: 2 5 0.50 * * sarw (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlw (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrw (%rax) +# CHECK-NEXT: 1 1 0.25 sarw $7, %di +# CHECK-NEXT: 1 1 0.25 shlw $7, %di +# CHECK-NEXT: 1 1 0.25 shrw $7, %di +# CHECK-NEXT: 2 5 0.50 * * sarw $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlw $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrw $7, (%rax) +# CHECK-NEXT: 1 1 0.25 sarw %cl, %di +# CHECK-NEXT: 1 1 0.25 shlw %cl, %di +# CHECK-NEXT: 1 1 0.25 shrw %cl, %di +# CHECK-NEXT: 3 5 1.00 * * sarw %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shlw %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shrw %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 sarl %edi +# CHECK-NEXT: 1 1 0.25 shll %edi +# CHECK-NEXT: 1 1 0.25 shrl %edi +# CHECK-NEXT: 2 5 0.50 * * sarl (%rax) +# CHECK-NEXT: 2 5 0.50 * * shll (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrl (%rax) +# CHECK-NEXT: 1 1 0.25 sarl $7, %edi +# CHECK-NEXT: 1 1 0.25 shll $7, %edi +# CHECK-NEXT: 1 1 0.25 shrl $7, %edi +# CHECK-NEXT: 2 5 0.50 * * sarl $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shll $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrl $7, (%rax) +# CHECK-NEXT: 1 1 0.25 sarl %cl, %edi +# CHECK-NEXT: 1 1 0.25 shll %cl, %edi +# CHECK-NEXT: 1 1 0.25 shrl %cl, %edi +# CHECK-NEXT: 3 5 1.00 * * sarl %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shll %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shrl %cl, (%rax) +# CHECK-NEXT: 1 1 0.25 sarq %rdi +# CHECK-NEXT: 1 1 0.25 shlq %rdi +# CHECK-NEXT: 1 1 0.25 shrq %rdi +# CHECK-NEXT: 2 5 0.50 * * sarq (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlq (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrq (%rax) +# CHECK-NEXT: 1 1 0.25 sarq $7, %rdi +# CHECK-NEXT: 1 1 0.25 shlq $7, %rdi +# CHECK-NEXT: 1 1 0.25 shrq $7, %rdi +# CHECK-NEXT: 2 5 0.50 * * sarq $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shlq $7, (%rax) +# CHECK-NEXT: 2 5 0.50 * * shrq $7, (%rax) +# CHECK-NEXT: 1 1 0.25 sarq %cl, %rdi +# CHECK-NEXT: 1 1 0.25 shlq %cl, %rdi +# CHECK-NEXT: 1 1 0.25 shrq %cl, %rdi +# CHECK-NEXT: 3 5 1.00 * * sarq %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shlq %cl, (%rax) +# CHECK-NEXT: 3 5 1.00 * * shrq %cl, (%rax) + +# 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: 48.00 48.00 36.00 36.00 36.00 36.00 - - - - - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclb %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrb %dil +# CHECK-NEXT: - - - - - - - - - - - - rclb (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrb (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclb $7, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrb $7, %dil +# CHECK-NEXT: - - - - - - - - - - - - rclb $7, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrb $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclb %cl, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrb %cl, %dil +# CHECK-NEXT: - - - - - - - - - - - - rclb %cl, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrb %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclw %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrw %di +# CHECK-NEXT: - - - - - - - - - - - - rclw (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrw (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclw $7, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrw $7, %di +# CHECK-NEXT: - - - - - - - - - - - - rclw $7, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrw $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclw %cl, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrw %cl, %di +# CHECK-NEXT: - - - - - - - - - - - - rclw %cl, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrw %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcll %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrl %edi +# CHECK-NEXT: - - - - - - - - - - - - rcll (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrl (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcll $7, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrl $7, %edi +# CHECK-NEXT: - - - - - - - - - - - - rcll $7, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrl $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcll %cl, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrl %cl, %edi +# CHECK-NEXT: - - - - - - - - - - - - rcll %cl, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrl %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclq %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrq %rdi +# CHECK-NEXT: - - - - - - - - - - - - rclq (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrq (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclq $7, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrq $7, %rdi +# CHECK-NEXT: - - - - - - - - - - - - rclq $7, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrq $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rclq %cl, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rcrq %cl, %rdi +# CHECK-NEXT: - - - - - - - - - - - - rclq %cl, (%rax) +# CHECK-NEXT: - - - - - - - - - - - - rcrq %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolb %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorb %dil +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolb (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorb (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolb $7, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorb $7, %dil +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolb $7, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorb $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolb %cl, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorb %cl, %dil +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolb %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorb %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolw %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorw %di +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolw (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorw (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolw $7, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorw $7, %di +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolw $7, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorw $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolw %cl, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorw %cl, %di +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolw %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorw %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - roll %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorl %edi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - roll (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorl (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - roll $7, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorl $7, %edi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - roll $7, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorl $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - roll %cl, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorl %cl, %edi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - roll %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorl %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolq %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorq %rdi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolq (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorq (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolq $7, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorq $7, %rdi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolq $7, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorq $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rolq %cl, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - rorq %cl, %rdi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rolq %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - rorq %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarb %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlb %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrb %dil +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarb (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlb (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrb (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarb $7, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlb $7, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrb $7, %dil +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlb $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrb $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarb %cl, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlb %cl, %dil +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrb %cl, %dil +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - sarb %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shlb %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shrb %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarw %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlw %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrw %di +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarw (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlw (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrw (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarw $7, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlw $7, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrw $7, %di +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlw $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrw $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarw %cl, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlw %cl, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrw %cl, %di +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - sarw %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shlw %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shrw %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarl %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shll %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrl %edi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarl (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shll (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrl (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarl $7, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shll $7, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrl $7, %edi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarl $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shll $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrl $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarl %cl, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shll %cl, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrl %cl, %edi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - sarl %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shll %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shrl %cl, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarq %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlq %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrq %rdi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarq (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlq (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrq (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarq $7, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlq $7, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrq $7, %rdi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - sarq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shlq $7, (%rax) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - shrq $7, (%rax) +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - sarq %cl, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shlq %cl, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - shrq %cl, %rdi +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - sarq %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shlq %cl, (%rax) +# CHECK-NEXT: 1.00 1.00 0.25 0.25 0.25 0.25 - - - - - - shrq %cl, (%rax) + |

