From 97a41801565bbd4da79b1de4826ab7e3d09f8a05 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 1 Aug 2018 14:25:33 +0000 Subject: [PATCH] [llvm-mca][x86] Add LEA instruction resource tests We already added these to btver2, now add them to other targets, even though none of their models treat them specially (yet). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338565 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-mca/X86/Atom/resources-lea.s | 431 ++++++++++++++++++++ test/tools/llvm-mca/X86/Broadwell/resources-lea.s | 439 ++++++++++++++++++++ test/tools/llvm-mca/X86/Generic/resources-lea.s | 437 ++++++++++++++++++++ test/tools/llvm-mca/X86/Haswell/resources-lea.s | 439 ++++++++++++++++++++ test/tools/llvm-mca/X86/SLM/resources-lea.s | 437 ++++++++++++++++++++ .../tools/llvm-mca/X86/SandyBridge/resources-lea.s | 437 ++++++++++++++++++++ .../llvm-mca/X86/SkylakeClient/resources-lea.s | 439 ++++++++++++++++++++ .../llvm-mca/X86/SkylakeServer/resources-lea.s | 439 ++++++++++++++++++++ test/tools/llvm-mca/X86/Znver1/resources-lea.s | 441 +++++++++++++++++++++ 9 files changed, 3939 insertions(+) create mode 100644 test/tools/llvm-mca/X86/Atom/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/Broadwell/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/Generic/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/Haswell/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/SLM/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/SandyBridge/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/SkylakeClient/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/SkylakeServer/resources-lea.s create mode 100644 test/tools/llvm-mca/X86/Znver1/resources-lea.s diff --git a/test/tools/llvm-mca/X86/Atom/resources-lea.s b/test/tools/llvm-mca/X86/Atom/resources-lea.s new file mode 100644 index 00000000000..19ac200d0d6 --- /dev/null +++ b/test/tools/llvm-mca/X86/Atom/resources-lea.s @@ -0,0 +1,431 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 1.00 leaw 0, %cx +# CHECK-NEXT: 1 1 1.00 leal 0, %ecx +# CHECK-NEXT: 1 1 1.00 leaq 0, %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16, %cx +# CHECK-NEXT: 1 1 1.00 leal -16, %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16, %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024, %cx +# CHECK-NEXT: 1 1 1.00 leal 1024, %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024, %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx,2), %rcx + +# CHECK: Resources: +# CHECK-NEXT: [0] - AtomPort0 +# CHECK-NEXT: [1] - AtomPort1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1] +# CHECK-NEXT: - 135.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] Instructions: +# CHECK-NEXT: - 1.00 leaw 0, %cx +# CHECK-NEXT: - 1.00 leal 0, %ecx +# CHECK-NEXT: - 1.00 leaq 0, %rcx +# CHECK-NEXT: - 1.00 leaw (%eax), %cx +# CHECK-NEXT: - 1.00 leal (%eax), %ecx +# CHECK-NEXT: - 1.00 leaq (%eax), %rcx +# CHECK-NEXT: - 1.00 leaw (%rax), %cx +# CHECK-NEXT: - 1.00 leal (%rax), %ecx +# CHECK-NEXT: - 1.00 leaq (%rax), %rcx +# CHECK-NEXT: - 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: - 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: - 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: - 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: - 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw (,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal (,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq (,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw (,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal (,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq (,%rbx,2), %rcx +# CHECK-NEXT: - 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - 1.00 leaw -16, %cx +# CHECK-NEXT: - 1.00 leal -16, %ecx +# CHECK-NEXT: - 1.00 leaq -16, %rcx +# CHECK-NEXT: - 1.00 leaw -16(%eax), %cx +# CHECK-NEXT: - 1.00 leal -16(%eax), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%eax), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%rax), %cx +# CHECK-NEXT: - 1.00 leal -16(%rax), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%rax), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: - 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: - 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: - 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: - 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - 1.00 leaw 1024, %cx +# CHECK-NEXT: - 1.00 leal 1024, %ecx +# CHECK-NEXT: - 1.00 leaq 1024, %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%eax), %cx +# CHECK-NEXT: - 1.00 leal 1024(%eax), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%eax), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%rax), %cx +# CHECK-NEXT: - 1.00 leal 1024(%rax), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%rax), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - 1.00 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - 1.00 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - 1.00 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - 1.00 leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/Broadwell/resources-lea.s b/test/tools/llvm-mca/X86/Broadwell/resources-lea.s new file mode 100644 index 00000000000..97fb81f49e8 --- /dev/null +++ b/test/tools/llvm-mca/X86/Broadwell/resources-lea.s @@ -0,0 +1,439 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - - 67.50 - - - 67.50 - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 0, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 0, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 0, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/Generic/resources-lea.s b/test/tools/llvm-mca/X86/Generic/resources-lea.s new file mode 100644 index 00000000000..455fbe0411e --- /dev/null +++ b/test/tools/llvm-mca/X86/Generic/resources-lea.s @@ -0,0 +1,437 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - 67.50 67.50 - - - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 0, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 0, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 0, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/Haswell/resources-lea.s b/test/tools/llvm-mca/X86/Haswell/resources-lea.s new file mode 100644 index 00000000000..92262f23987 --- /dev/null +++ b/test/tools/llvm-mca/X86/Haswell/resources-lea.s @@ -0,0 +1,439 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - - 67.50 - - - 67.50 - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 0, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 0, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 0, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/SLM/resources-lea.s b/test/tools/llvm-mca/X86/SLM/resources-lea.s new file mode 100644 index 00000000000..e8f32522cd5 --- /dev/null +++ b/test/tools/llvm-mca/X86/SLM/resources-lea.s @@ -0,0 +1,437 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 1.00 leaw 0, %cx +# CHECK-NEXT: 1 1 1.00 leal 0, %ecx +# CHECK-NEXT: 1 1 1.00 leaq 0, %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16, %cx +# CHECK-NEXT: 1 1 1.00 leal -16, %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16, %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024, %cx +# CHECK-NEXT: 1 1 1.00 leal 1024, %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024, %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 1.00 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 1.00 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 1.00 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - - - - - 135.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - leaw 0, %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 0, %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 0, %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%eax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%eax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%eax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%rax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%rax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%rax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16, %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16, %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16, %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%eax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%eax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%eax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%rax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%rax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%rax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024, %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024, %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024, %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%eax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%eax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%rax), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%rax), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - - - - 1.00 - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - - - - 1.00 - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - - - - 1.00 - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/SandyBridge/resources-lea.s b/test/tools/llvm-mca/X86/SandyBridge/resources-lea.s new file mode 100644 index 00000000000..a25eb8905a9 --- /dev/null +++ b/test/tools/llvm-mca/X86/SandyBridge/resources-lea.s @@ -0,0 +1,437 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - 67.50 67.50 - - - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 0, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 0, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 0, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024, %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024, %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024, %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.50 0.50 - - - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.50 0.50 - - - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/SkylakeClient/resources-lea.s b/test/tools/llvm-mca/X86/SkylakeClient/resources-lea.s new file mode 100644 index 00000000000..b6fc7122de8 --- /dev/null +++ b/test/tools/llvm-mca/X86/SkylakeClient/resources-lea.s @@ -0,0 +1,439 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - - 67.50 - - - 67.50 - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 0, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 0, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 0, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-lea.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-lea.s new file mode 100644 index 00000000000..a526564b6cd --- /dev/null +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-lea.s @@ -0,0 +1,439 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 leaw 0, %cx +# CHECK-NEXT: 1 1 0.50 leal 0, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16, %cx +# CHECK-NEXT: 1 1 0.50 leal -16, %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - - 67.50 - - - 67.50 - - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 0, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 0, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 0, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024, %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024, %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024, %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - leaq 1024(%rax,%rbx,2), %rcx diff --git a/test/tools/llvm-mca/X86/Znver1/resources-lea.s b/test/tools/llvm-mca/X86/Znver1/resources-lea.s new file mode 100644 index 00000000000..13ed96c3a2c --- /dev/null +++ b/test/tools/llvm-mca/X86/Znver1/resources-lea.s @@ -0,0 +1,441 @@ +# 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 + +lea 0(), %cx +lea 0(), %ecx +lea 0(), %rcx +lea (%eax), %cx +lea (%eax), %ecx +lea (%eax), %rcx +lea (%rax), %cx +lea (%rax), %ecx +lea (%rax), %rcx +lea (, %ebx), %cx +lea (, %ebx), %ecx +lea (, %ebx), %rcx +lea (, %rbx), %cx +lea (, %rbx), %ecx +lea (, %rbx), %rcx +lea (, %ebx, 1), %cx +lea (, %ebx, 1), %ecx +lea (, %ebx, 1), %rcx +lea (, %rbx, 1), %cx +lea (, %rbx, 1), %ecx +lea (, %rbx, 1), %rcx +lea (, %ebx, 2), %cx +lea (, %ebx, 2), %ecx +lea (, %ebx, 2), %rcx +lea (, %rbx, 2), %cx +lea (, %rbx, 2), %ecx +lea (, %rbx, 2), %rcx +lea (%eax, %ebx), %cx +lea (%eax, %ebx), %ecx +lea (%eax, %ebx), %rcx +lea (%rax, %rbx), %cx +lea (%rax, %rbx), %ecx +lea (%rax, %rbx), %rcx +lea (%eax, %ebx, 1), %cx +lea (%eax, %ebx, 1), %ecx +lea (%eax, %ebx, 1), %rcx +lea (%rax, %rbx, 1), %cx +lea (%rax, %rbx, 1), %ecx +lea (%rax, %rbx, 1), %rcx +lea (%eax, %ebx, 2), %cx +lea (%eax, %ebx, 2), %ecx +lea (%eax, %ebx, 2), %rcx +lea (%rax, %rbx, 2), %cx +lea (%rax, %rbx, 2), %ecx +lea (%rax, %rbx, 2), %rcx + +lea -16(), %cx +lea -16(), %ecx +lea -16(), %rcx +lea -16(%eax), %cx +lea -16(%eax), %ecx +lea -16(%eax), %rcx +lea -16(%rax), %cx +lea -16(%rax), %ecx +lea -16(%rax), %rcx +lea -16(, %ebx), %cx +lea -16(, %ebx), %ecx +lea -16(, %ebx), %rcx +lea -16(, %rbx), %cx +lea -16(, %rbx), %ecx +lea -16(, %rbx), %rcx +lea -16(, %ebx, 1), %cx +lea -16(, %ebx, 1), %ecx +lea -16(, %ebx, 1), %rcx +lea -16(, %rbx, 1), %cx +lea -16(, %rbx, 1), %ecx +lea -16(, %rbx, 1), %rcx +lea -16(, %ebx, 2), %cx +lea -16(, %ebx, 2), %ecx +lea -16(, %ebx, 2), %rcx +lea -16(, %rbx, 2), %cx +lea -16(, %rbx, 2), %ecx +lea -16(, %rbx, 2), %rcx +lea -16(%eax, %ebx), %cx +lea -16(%eax, %ebx), %ecx +lea -16(%eax, %ebx), %rcx +lea -16(%rax, %rbx), %cx +lea -16(%rax, %rbx), %ecx +lea -16(%rax, %rbx), %rcx +lea -16(%eax, %ebx, 1), %cx +lea -16(%eax, %ebx, 1), %ecx +lea -16(%eax, %ebx, 1), %rcx +lea -16(%rax, %rbx, 1), %cx +lea -16(%rax, %rbx, 1), %ecx +lea -16(%rax, %rbx, 1), %rcx +lea -16(%eax, %ebx, 2), %cx +lea -16(%eax, %ebx, 2), %ecx +lea -16(%eax, %ebx, 2), %rcx +lea -16(%rax, %rbx, 2), %cx +lea -16(%rax, %rbx, 2), %ecx +lea -16(%rax, %rbx, 2), %rcx + +lea 1024(), %cx +lea 1024(), %ecx +lea 1024(), %rcx +lea 1024(%eax), %cx +lea 1024(%eax), %ecx +lea 1024(%eax), %rcx +lea 1024(%rax), %cx +lea 1024(%rax), %ecx +lea 1024(%rax), %rcx +lea 1024(, %ebx), %cx +lea 1024(, %ebx), %ecx +lea 1024(, %ebx), %rcx +lea 1024(, %rbx), %cx +lea 1024(, %rbx), %ecx +lea 1024(, %rbx), %rcx +lea 1024(, %ebx, 1), %cx +lea 1024(, %ebx, 1), %ecx +lea 1024(, %ebx, 1), %rcx +lea 1024(, %rbx, 1), %cx +lea 1024(, %rbx, 1), %ecx +lea 1024(, %rbx, 1), %rcx +lea 1024(, %ebx, 2), %cx +lea 1024(, %ebx, 2), %ecx +lea 1024(, %ebx, 2), %rcx +lea 1024(, %rbx, 2), %cx +lea 1024(, %rbx, 2), %ecx +lea 1024(, %rbx, 2), %rcx +lea 1024(%eax, %ebx), %cx +lea 1024(%eax, %ebx), %ecx +lea 1024(%eax, %ebx), %rcx +lea 1024(%rax, %rbx), %cx +lea 1024(%rax, %rbx), %ecx +lea 1024(%rax, %rbx), %rcx +lea 1024(%eax, %ebx, 1), %cx +lea 1024(%eax, %ebx, 1), %ecx +lea 1024(%eax, %ebx, 1), %rcx +lea 1024(%rax, %rbx, 1), %cx +lea 1024(%rax, %rbx, 1), %ecx +lea 1024(%rax, %rbx, 1), %rcx +lea 1024(%eax, %ebx, 2), %cx +lea 1024(%eax, %ebx, 2), %ecx +lea 1024(%eax, %ebx, 2), %rcx +lea 1024(%rax, %rbx, 2), %cx +lea 1024(%rax, %rbx, 2), %ecx +lea 1024(%rax, %rbx, 2), %rcx + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.25 leaw 0, %cx +# CHECK-NEXT: 1 1 0.25 leal 0, %ecx +# CHECK-NEXT: 1 1 0.25 leaq 0, %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%eax), %cx +# CHECK-NEXT: 1 1 0.25 leal (%eax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%eax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%rax), %cx +# CHECK-NEXT: 1 1 0.25 leal (%rax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%rax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal (,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal (%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal (%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16, %cx +# CHECK-NEXT: 1 1 0.25 leal -16, %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16, %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%eax), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%eax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%eax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%rax), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%rax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%rax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024, %cx +# CHECK-NEXT: 1 1 0.25 leal 1024, %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024, %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%eax), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%eax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%eax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%rax), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%rax), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%rax), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: 1 1 0.25 leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: 1 1 0.25 leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: 1 1 0.25 leaq 1024(%rax,%rbx,2), %rcx + +# 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: - - 33.75 33.75 33.75 33.75 - - - - - - + +# 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 - - - - - - leaw 0, %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 0, %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 0, %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%eax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%eax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%eax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%rax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%rax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%rax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (,%rbx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw (%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal (%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq (%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16, %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16, %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16, %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%eax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%eax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%eax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%rax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%rax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%rax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw -16(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal -16(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq -16(%rax,%rbx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024, %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024, %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024, %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%eax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%eax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%eax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%rax), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%rax), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%rax), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(,%rbx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%eax,%ebx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%eax,%ebx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%eax,%ebx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%rax,%rbx), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%rax,%rbx), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%rax,%rbx), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%eax,%ebx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%eax,%ebx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%eax,%ebx,2), %rcx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaw 1024(%rax,%rbx,2), %cx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leal 1024(%rax,%rbx,2), %ecx +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - leaq 1024(%rax,%rbx,2), %rcx -- 2.11.4.GIT