[llvm] [AArch64] Fix register offset ld/st predicate (PR #225645)
Tomer Shafir via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 24 01:24:10 PDT 2026
https://github.com/tomershafir updated https://github.com/llvm/llvm-project/pull/225645
>From e7827186b68c518b65a6987426921a4cd0e0a896 Mon Sep 17 00:00:00 2001
From: tomershafir <tomer.shafir8 at gmail.com>
Date: Wed, 23 Sep 2026 23:35:35 +0300
Subject: [PATCH 1/2] [AArch64] Fix register offset ld/st predicate
The previous extension check was wrong - `CheckMemExtLSL` would always return false because it used stale memory extend type checker: `getMemExtendType`, passing a sign bit that is shifted and masked unsoundly. This patch accurately returns true for:
- W sized offset, which requires an extension by the ISA
- Shifted X sized offset
Note that UXTX and SXTX are effectively a no-op in this case so we effectively reject those.
I plan to remove stale `CheckMemExtLSL` in a followup.
---
.../Target/AArch64/AArch64SchedPredicates.td | 81 +--
.../AArch64/Apple/Cyclone-register-offset.s | 645 +++++++++++++++++-
.../AArch64/Apple/M1-basic-instructions.s | 122 ++--
.../AArch64/Apple/M1-register-offset.s | 644 +++++++++++++++++
.../AArch64/Neoverse/N3-basic-instructions.s | 10 +-
5 files changed, 1383 insertions(+), 119 deletions(-)
create mode 100644 llvm/test/tools/llvm-mca/AArch64/Apple/M1-register-offset.s
diff --git a/llvm/lib/Target/AArch64/AArch64SchedPredicates.td b/llvm/lib/Target/AArch64/AArch64SchedPredicates.td
index cbaaafccd164d..b2fc95a64846b 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedPredicates.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedPredicates.td
@@ -197,38 +197,41 @@ def IsStoreASIMDPostOp : CheckOpcode<[ST1Onev8b_POST, ST1Onev4h_POST, ST1One
def IsLoadStoreASIMDPostOp : CheckOpcode<!listconcat(IsLoadASIMDPostOp.ValidOpcodes,
IsStoreASIMDPostOp.ValidOpcodes)>;
-// Identify whether an instruction is a load
-// using the register offset addressing mode.
-def IsLoadRegOffsetOp : CheckOpcode<[PRFMroW, PRFMroX,
- LDRBBroW, LDRBBroX,
- LDRSBWroW, LDRSBWroX, LDRSBXroW, LDRSBXroX,
- LDRHHroW, LDRHHroX,
- LDRSHWroW, LDRSHWroX, LDRSHXroW, LDRSHXroX,
- LDRWroW, LDRWroX,
- LDRSWroW, LDRSWroX,
- LDRXroW, LDRXroX,
- LDRBroW, LDRBroX,
- LDRHroW, LDRHroX,
- LDRSroW, LDRSroX,
- LDRDroW, LDRDroX,
- LDRQroW, LDRQroX]>;
-
-// Identify whether an instruction is a store
-// using the register offset addressing mode.
-def IsStoreRegOffsetOp : CheckOpcode<[STRBBroW, STRBBroX,
- STRHHroW, STRHHroX,
- STRWroW, STRWroX,
- STRXroW, STRXroX,
- STRBroW, STRBroX,
- STRHroW, STRHroX,
- STRSroW, STRSroX,
- STRDroW, STRDroX,
- STRQroW, STRQroX]>;
-
-// Identify whether an instruction is a load or
-// store using the register offset addressing mode.
-def IsLoadStoreRegOffsetOp : CheckOpcode<!listconcat(IsLoadRegOffsetOp.ValidOpcodes,
- IsStoreRegOffsetOp.ValidOpcodes)>;
+// Identify whether an instruction is a load using the register offset
+// addressing mode.
+
+def IsLoadRegOffsetWOp : CheckOpcode<[PRFMroW,
+ LDRBBroW, LDRSBWroW, LDRSBXroW,
+ LDRHHroW, LDRSHWroW, LDRSHXroW,
+ LDRWroW, LDRSWroW, LDRXroW,
+ LDRBroW, LDRHroW, LDRSroW,
+ LDRDroW, LDRQroW]>;
+def IsLoadRegOffsetXOp : CheckOpcode<[PRFMroX,
+ LDRBBroX, LDRSBWroX, LDRSBXroX,
+ LDRHHroX, LDRSHWroX, LDRSHXroX,
+ LDRWroX, LDRSWroX, LDRXroX,
+ LDRBroX, LDRHroX, LDRSroX,
+ LDRDroX, LDRQroX]>;
+def IsLoadRegOffsetOp : CheckOpcode<!listconcat(IsLoadRegOffsetWOp.ValidOpcodes,
+ IsLoadRegOffsetXOp.ValidOpcodes)>;
+
+def IsStoreRegOffsetWOp : CheckOpcode<[STRBBroW, STRHHroW,
+ STRWroW, STRXroW,
+ STRBroW, STRHroW, STRSroW,
+ STRDroW, STRQroW]>;
+def IsStoreRegOffsetXOp : CheckOpcode<[STRBBroX, STRHHroX,
+ STRWroX, STRXroX,
+ STRBroX, STRHroX, STRSroX,
+ STRDroX, STRQroX]>;
+def IsStoreRegOffsetOp : CheckOpcode<!listconcat(IsStoreRegOffsetWOp.ValidOpcodes,
+ IsStoreRegOffsetXOp.ValidOpcodes)>;
+
+def IsLoadStoreRegOffsetWOp : CheckOpcode<!listconcat(IsLoadRegOffsetWOp.ValidOpcodes,
+ IsStoreRegOffsetWOp.ValidOpcodes)>;
+def IsLoadStoreRegOffsetXOp : CheckOpcode<!listconcat(IsLoadRegOffsetXOp.ValidOpcodes,
+ IsStoreRegOffsetXOp.ValidOpcodes)>;
+def IsLoadStoreRegOffsetOp : CheckOpcode<!listconcat(IsLoadStoreRegOffsetWOp.ValidOpcodes,
+ IsLoadStoreRegOffsetXOp.ValidOpcodes)>;
// Target predicates.
@@ -258,15 +261,17 @@ def RegShiftedFn : TIIPredicate<"hasShiftedReg",
MCReturnStatement<FalsePred>>>;
def RegShiftedPred : MCSchedPredicate<RegShiftedFn>;
-// Identify a load or store using the register offset addressing mode
-// with an extended or scaled register.
+// Identify a load or store using the register offset addressing mode where the
+// index requires extension or scaling. The W forms always extend Wm to 64 bits;
+// the X forms use uxtx/sxtx, which are no-ops, so only the scaling bit matters.
def ScaledIdxFn : TIIPredicate<"isScaledAddr",
MCOpcodeSwitchStatement<
[MCOpcodeSwitchCase<
- IsLoadStoreRegOffsetOp.ValidOpcodes,
- MCReturnStatement<
- CheckAny<[CheckNot<CheckMemExtLSL>,
- CheckMemScaled]>>>],
+ IsLoadStoreRegOffsetWOp.ValidOpcodes,
+ MCReturnStatement<TruePred>>,
+ MCOpcodeSwitchCase<
+ IsLoadStoreRegOffsetXOp.ValidOpcodes,
+ MCReturnStatement<CheckMemScaled>>],
MCReturnStatement<FalsePred>>>;
def ScaledIdxPred : MCSchedPredicate<ScaledIdxFn>;
diff --git a/llvm/test/tools/llvm-mca/AArch64/Apple/Cyclone-register-offset.s b/llvm/test/tools/llvm-mca/AArch64/Apple/Cyclone-register-offset.s
index 37ad0b2bba135..c8064ecf22f0a 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Apple/Cyclone-register-offset.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Apple/Cyclone-register-offset.s
@@ -1,19 +1,221 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
-# RUN: llvm-mca -march=aarch64 -mcpu=cyclone -resource-pressure=false < %s | FileCheck %s
+# RUN: llvm-mca -march=aarch64 -mcpu=cyclone -instruction-tables < %s | FileCheck %s
- ldr x7, [x1, #8]
- ldr x6, [x1, x2]
- ldr x4, [x1, x2, sxtx]
+ prfm pldl1keep, [x1, x2]
+ prfm pldl1keep, [x1, x2, lsl #3]
+ prfm pldl1keep, [x1, x2, sxtx]
+ prfm pldl1keep, [x1, x2, sxtx #3]
+ prfm pldl1keep, [x1, w2, uxtw]
+ prfm pldl1keep, [x1, w2, uxtw #3]
+ prfm pldl1keep, [x1, w2, sxtw]
+ prfm pldl1keep, [x1, w2, sxtw #3]
-# CHECK: Iterations: 100
-# CHECK-NEXT: Instructions: 300
-# CHECK-NEXT: Total Cycles: 157
-# CHECK-NEXT: Total uOps: 500
+ ldrb w0, [x1, x2]
+ ldrb w0, [x1, x2, lsl #0]
+ ldrb w0, [x1, x2, sxtx]
+ ldrb w0, [x1, x2, sxtx #0]
+ ldrb w0, [x1, w2, uxtw]
+ ldrb w0, [x1, w2, uxtw #0]
+ ldrb w0, [x1, w2, sxtw]
+ ldrb w0, [x1, w2, sxtw #0]
-# CHECK: Dispatch Width: 6
-# CHECK-NEXT: uOps Per Cycle: 3.18
-# CHECK-NEXT: IPC: 1.91
-# CHECK-NEXT: Block RThroughput: 1.5
+ ldrsb w0, [x1, x2]
+ ldrsb w0, [x1, x2, lsl #0]
+ ldrsb w0, [x1, x2, sxtx]
+ ldrsb w0, [x1, x2, sxtx #0]
+ ldrsb w0, [x1, w2, uxtw]
+ ldrsb w0, [x1, w2, uxtw #0]
+ ldrsb w0, [x1, w2, sxtw]
+ ldrsb w0, [x1, w2, sxtw #0]
+
+ ldrsb x0, [x1, x2]
+ ldrsb x0, [x1, x2, lsl #0]
+ ldrsb x0, [x1, x2, sxtx]
+ ldrsb x0, [x1, x2, sxtx #0]
+ ldrsb x0, [x1, w2, uxtw]
+ ldrsb x0, [x1, w2, uxtw #0]
+ ldrsb x0, [x1, w2, sxtw]
+ ldrsb x0, [x1, w2, sxtw #0]
+
+ ldrh w0, [x1, x2]
+ ldrh w0, [x1, x2, lsl #1]
+ ldrh w0, [x1, x2, sxtx]
+ ldrh w0, [x1, x2, sxtx #1]
+ ldrh w0, [x1, w2, uxtw]
+ ldrh w0, [x1, w2, uxtw #1]
+ ldrh w0, [x1, w2, sxtw]
+ ldrh w0, [x1, w2, sxtw #1]
+
+ ldrsh w0, [x1, x2]
+ ldrsh w0, [x1, x2, lsl #1]
+ ldrsh w0, [x1, x2, sxtx]
+ ldrsh w0, [x1, x2, sxtx #1]
+ ldrsh w0, [x1, w2, uxtw]
+ ldrsh w0, [x1, w2, uxtw #1]
+ ldrsh w0, [x1, w2, sxtw]
+ ldrsh w0, [x1, w2, sxtw #1]
+
+ ldrsh x0, [x1, x2]
+ ldrsh x0, [x1, x2, lsl #1]
+ ldrsh x0, [x1, x2, sxtx]
+ ldrsh x0, [x1, x2, sxtx #1]
+ ldrsh x0, [x1, w2, uxtw]
+ ldrsh x0, [x1, w2, uxtw #1]
+ ldrsh x0, [x1, w2, sxtw]
+ ldrsh x0, [x1, w2, sxtw #1]
+
+ ldr w0, [x1, x2]
+ ldr w0, [x1, x2, lsl #2]
+ ldr w0, [x1, x2, sxtx]
+ ldr w0, [x1, x2, sxtx #2]
+ ldr w0, [x1, w2, uxtw]
+ ldr w0, [x1, w2, uxtw #2]
+ ldr w0, [x1, w2, sxtw]
+ ldr w0, [x1, w2, sxtw #2]
+
+ ldrsw x0, [x1, x2]
+ ldrsw x0, [x1, x2, lsl #2]
+ ldrsw x0, [x1, x2, sxtx]
+ ldrsw x0, [x1, x2, sxtx #2]
+ ldrsw x0, [x1, w2, uxtw]
+ ldrsw x0, [x1, w2, uxtw #2]
+ ldrsw x0, [x1, w2, sxtw]
+ ldrsw x0, [x1, w2, sxtw #2]
+
+ ldr x0, [x1, x2]
+ ldr x0, [x1, x2, lsl #3]
+ ldr x0, [x1, x2, sxtx]
+ ldr x0, [x1, x2, sxtx #3]
+ ldr x0, [x1, w2, uxtw]
+ ldr x0, [x1, w2, uxtw #3]
+ ldr x0, [x1, w2, sxtw]
+ ldr x0, [x1, w2, sxtw #3]
+
+ ldr b0, [x1, x2]
+ ldr b0, [x1, x2, lsl #0]
+ ldr b0, [x1, x2, sxtx]
+ ldr b0, [x1, x2, sxtx #0]
+ ldr b0, [x1, w2, uxtw]
+ ldr b0, [x1, w2, uxtw #0]
+ ldr b0, [x1, w2, sxtw]
+ ldr b0, [x1, w2, sxtw #0]
+
+ ldr h0, [x1, x2]
+ ldr h0, [x1, x2, lsl #1]
+ ldr h0, [x1, x2, sxtx]
+ ldr h0, [x1, x2, sxtx #1]
+ ldr h0, [x1, w2, uxtw]
+ ldr h0, [x1, w2, uxtw #1]
+ ldr h0, [x1, w2, sxtw]
+ ldr h0, [x1, w2, sxtw #1]
+
+ ldr s0, [x1, x2]
+ ldr s0, [x1, x2, lsl #2]
+ ldr s0, [x1, x2, sxtx]
+ ldr s0, [x1, x2, sxtx #2]
+ ldr s0, [x1, w2, uxtw]
+ ldr s0, [x1, w2, uxtw #2]
+ ldr s0, [x1, w2, sxtw]
+ ldr s0, [x1, w2, sxtw #2]
+
+ ldr d0, [x1, x2]
+ ldr d0, [x1, x2, lsl #3]
+ ldr d0, [x1, x2, sxtx]
+ ldr d0, [x1, x2, sxtx #3]
+ ldr d0, [x1, w2, uxtw]
+ ldr d0, [x1, w2, uxtw #3]
+ ldr d0, [x1, w2, sxtw]
+ ldr d0, [x1, w2, sxtw #3]
+
+ ldr q0, [x1, x2]
+ ldr q0, [x1, x2, lsl #4]
+ ldr q0, [x1, x2, sxtx]
+ ldr q0, [x1, x2, sxtx #4]
+ ldr q0, [x1, w2, uxtw]
+ ldr q0, [x1, w2, uxtw #4]
+ ldr q0, [x1, w2, sxtw]
+ ldr q0, [x1, w2, sxtw #4]
+
+ strb w0, [x1, x2]
+ strb w0, [x1, x2, lsl #0]
+ strb w0, [x1, x2, sxtx]
+ strb w0, [x1, x2, sxtx #0]
+ strb w0, [x1, w2, uxtw]
+ strb w0, [x1, w2, uxtw #0]
+ strb w0, [x1, w2, sxtw]
+ strb w0, [x1, w2, sxtw #0]
+
+ strh w0, [x1, x2]
+ strh w0, [x1, x2, lsl #1]
+ strh w0, [x1, x2, sxtx]
+ strh w0, [x1, x2, sxtx #1]
+ strh w0, [x1, w2, uxtw]
+ strh w0, [x1, w2, uxtw #1]
+ strh w0, [x1, w2, sxtw]
+ strh w0, [x1, w2, sxtw #1]
+
+ str w0, [x1, x2]
+ str w0, [x1, x2, lsl #2]
+ str w0, [x1, x2, sxtx]
+ str w0, [x1, x2, sxtx #2]
+ str w0, [x1, w2, uxtw]
+ str w0, [x1, w2, uxtw #2]
+ str w0, [x1, w2, sxtw]
+ str w0, [x1, w2, sxtw #2]
+
+ str x0, [x1, x2]
+ str x0, [x1, x2, lsl #3]
+ str x0, [x1, x2, sxtx]
+ str x0, [x1, x2, sxtx #3]
+ str x0, [x1, w2, uxtw]
+ str x0, [x1, w2, uxtw #3]
+ str x0, [x1, w2, sxtw]
+ str x0, [x1, w2, sxtw #3]
+
+ str b0, [x1, x2]
+ str b0, [x1, x2, lsl #0]
+ str b0, [x1, x2, sxtx]
+ str b0, [x1, x2, sxtx #0]
+ str b0, [x1, w2, uxtw]
+ str b0, [x1, w2, uxtw #0]
+ str b0, [x1, w2, sxtw]
+ str b0, [x1, w2, sxtw #0]
+
+ str h0, [x1, x2]
+ str h0, [x1, x2, lsl #1]
+ str h0, [x1, x2, sxtx]
+ str h0, [x1, x2, sxtx #1]
+ str h0, [x1, w2, uxtw]
+ str h0, [x1, w2, uxtw #1]
+ str h0, [x1, w2, sxtw]
+ str h0, [x1, w2, sxtw #1]
+
+ str s0, [x1, x2]
+ str s0, [x1, x2, lsl #2]
+ str s0, [x1, x2, sxtx]
+ str s0, [x1, x2, sxtx #2]
+ str s0, [x1, w2, uxtw]
+ str s0, [x1, w2, uxtw #2]
+ str s0, [x1, w2, sxtw]
+ str s0, [x1, w2, sxtw #2]
+
+ str d0, [x1, x2]
+ str d0, [x1, x2, lsl #3]
+ str d0, [x1, x2, sxtx]
+ str d0, [x1, x2, sxtx #3]
+ str d0, [x1, w2, uxtw]
+ str d0, [x1, w2, uxtw #3]
+ str d0, [x1, w2, sxtw]
+ str d0, [x1, w2, sxtw #3]
+
+ str q0, [x1, x2]
+ str q0, [x1, x2, lsl #4]
+ str q0, [x1, x2, sxtx]
+ str q0, [x1, x2, sxtx #4]
+ str q0, [x1, w2, uxtw]
+ str q0, [x1, w2, uxtw #4]
+ str q0, [x1, w2, sxtw]
+ str q0, [x1, w2, sxtw #4]
# CHECK: Instruction Info:
# CHECK-NEXT: [1]: #uOps
@@ -24,6 +226,419 @@
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 4 0.50 * ldr x7, [x1, #8]
-# CHECK-NEXT: 2 5 0.50 * ldr x6, [x1, x2]
-# CHECK-NEXT: 2 5 0.50 * ldr x4, [x1, x2, sxtx]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, sxtx]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, sxtx #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, uxtw]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, uxtw #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, sxtw]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldrb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldr w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldr w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldrsw x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldrsw x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldr x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * ldr x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldr b0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldr b0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldr h0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldr h0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldr s0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldr s0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldr d0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * ldr d0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldr q0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, x2, lsl #4]
+# CHECK-NEXT: 1 4 0.50 * ldr q0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, sxtw #4]
+# CHECK-NEXT: 1 4 0.50 * strb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * strb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * strh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * strh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * str w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * str w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * str x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * str x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * str b0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * str b0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * str h0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * str h0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * str s0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * str s0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * str d0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * str d0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * str q0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, x2, lsl #4]
+# CHECK-NEXT: 1 4 0.50 * str q0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, sxtw #4]
+
+# CHECK: Resources:
+# CHECK-NEXT: [0.0] - CyUnitB
+# CHECK-NEXT: [0.1] - CyUnitB
+# CHECK-NEXT: [1] - CyUnitBR
+# CHECK-NEXT: [2.0] - CyUnitFloatDiv
+# CHECK-NEXT: [2.1] - CyUnitFloatDiv
+# CHECK-NEXT: [3.0] - CyUnitI
+# CHECK-NEXT: [3.1] - CyUnitI
+# CHECK-NEXT: [3.2] - CyUnitI
+# CHECK-NEXT: [3.3] - CyUnitI
+# CHECK-NEXT: [4] - CyUnitID
+# CHECK-NEXT: [5] - CyUnitIM
+# CHECK-NEXT: [6.0] - CyUnitIS
+# CHECK-NEXT: [6.1] - CyUnitIS
+# CHECK-NEXT: [7] - CyUnitIntDiv
+# CHECK-NEXT: [8.0] - CyUnitLS
+# CHECK-NEXT: [8.1] - CyUnitLS
+# CHECK-NEXT: [9.0] - CyUnitV
+# CHECK-NEXT: [9.1] - CyUnitV
+# CHECK-NEXT: [9.2] - CyUnitV
+# CHECK-NEXT: [10] - CyUnitVC
+# CHECK-NEXT: [11] - CyUnitVD
+# CHECK-NEXT: [12.0] - CyUnitVM
+# CHECK-NEXT: [12.1] - CyUnitVM
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1]
+# CHECK-NEXT: - - - - - 34.50 34.50 34.50 34.50 - - 69.00 69.00 - 96.00 96.00 - - - - - - -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1] Instructions:
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr b0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr s0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr d0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, lsl #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, sxtw #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str s0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str s0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str d0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str d0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, x2, lsl #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, sxtw #4]
diff --git a/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
index abbb2b04722a8..436cd37a468f7 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
@@ -1003,7 +1003,7 @@
# CHECK-NEXT: 1 4 0.50 * ldr w13, [x2, #4]
# CHECK-NEXT: 1 4 0.50 * ldrsw x2, [x5, #4]
# CHECK-NEXT: 1 4 0.50 * ldrsw x23, [sp, #16380]
-# CHECK-NEXT: 2 5 0.50 * ldrsw x21, [x25, x7]
+# CHECK-NEXT: 1 4 0.50 * ldrsw x21, [x25, x7]
# CHECK-NEXT: 1 4 0.50 * ldrh w2, [x4]
# CHECK-NEXT: 1 4 0.50 * ldrsh w23, [x6, #8190]
# CHECK-NEXT: 1 4 0.50 * ldrsh wzr, [sp, #2]
@@ -1013,7 +1013,7 @@
# CHECK-NEXT: 1 4 0.50 * ldrb w12, [x2]
# CHECK-NEXT: 1 4 0.50 * ldrsb w27, [sp, #4095]
# CHECK-NEXT: 1 4 0.50 * ldrsb xzr, [x15]
-# CHECK-NEXT: 2 5 0.50 * ldrsb x12, [x28, x27]
+# CHECK-NEXT: 1 4 0.50 * ldrsb x12, [x28, x27]
# CHECK-NEXT: 1 4 0.50 * str x30, [sp]
# CHECK-NEXT: 1 4 0.50 * str w20, [x4, #16380]
# CHECK-NEXT: 1 4 0.50 * str b5, [x11]
@@ -1029,21 +1029,21 @@
# CHECK-NEXT: 1 4 0.50 * ldr d3, [x10, #32760]
# CHECK-NEXT: 1 4 0.50 * str q12, [sp, #65520]
# CHECK-NEXT: 1 4 0.50 * ldr q14, [x6, #4624]
-# CHECK-NEXT: 2 5 0.50 * ldrb w3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * ldrb w9, [x27, x6]
-# CHECK-NEXT: 2 5 0.50 * ldrsb w10, [x30, x7]
-# CHECK-NEXT: 2 5 0.50 * ldrb w11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * strb w12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * ldrb w3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * ldrb w9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * ldrsb w10, [x30, x7]
+# CHECK-NEXT: 1 4 0.50 * ldrb w11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * strb w12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * strb w5, [x26, w7, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldrb w14, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldrsb w15, [x25, w7, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldrb w17, [x23, w9, sxtw]
# CHECK-NEXT: 2 5 0.50 * ldrsb x18, [x22, w10, sxtw]
-# CHECK-NEXT: 2 5 0.50 * ldrsh w3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * ldrsh w9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w9, [x27, x6]
# CHECK-NEXT: 2 5 0.50 * ldrh w10, [x30, x7, lsl #1]
-# CHECK-NEXT: 2 5 0.50 * strh w11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * ldrh w12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * strh w11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * ldrh w12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * ldrsh x13, [x27, x5, sxtx #1]
# CHECK-NEXT: 2 5 0.50 * ldrh w14, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldrh w15, [x25, w7, uxtw]
@@ -1052,14 +1052,14 @@
# CHECK-NEXT: 2 5 0.50 * ldrh w18, [x22, w10, sxtw]
# CHECK-NEXT: 2 5 0.50 * strh w19, [x21, wzr, sxtw #1]
# CHECK-NEXT: 2 5 0.50 * ldr b25, [x21, w8, uxtw]
-# CHECK-NEXT: 2 5 0.50 * ldr b8, [x30, x10]
-# CHECK-NEXT: 2 5 0.50 * str b14, [x13, x25]
+# CHECK-NEXT: 1 4 0.50 * ldr b8, [x30, x10]
+# CHECK-NEXT: 1 4 0.50 * str b14, [x13, x25]
# CHECK-NEXT: 2 5 0.50 * str b30, [x16, w26, uxtw]
-# CHECK-NEXT: 2 5 0.50 * ldr h3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * ldr h9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * ldr h3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * ldr h9, [x27, x6]
# CHECK-NEXT: 2 5 0.50 * ldr h10, [x30, x7, lsl #1]
-# CHECK-NEXT: 2 5 0.50 * str h11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * str h12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str h11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str h12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * str h13, [x27, x5, sxtx #1]
# CHECK-NEXT: 2 5 0.50 * ldr h14, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldr h15, [x25, w7, uxtw]
@@ -1070,12 +1070,12 @@
# CHECK-NEXT: 2 5 0.50 * ldr s12, [x30, w5, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldr d24, [x26, w7, uxtw]
# CHECK-NEXT: 2 5 0.50 * str s20, [x24, w10, uxtw]
-# CHECK-NEXT: 2 5 0.50 * str d5, [x26, x6]
-# CHECK-NEXT: 2 5 0.50 * ldr w3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * ldr s9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * str d5, [x26, x6]
+# CHECK-NEXT: 1 4 0.50 * ldr w3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * ldr s9, [x27, x6]
# CHECK-NEXT: 2 5 0.50 * ldr w10, [x30, x7, lsl #2]
-# CHECK-NEXT: 2 5 0.50 * ldr w11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * str s12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * ldr w11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str s12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * str w13, [x27, x5, sxtx #2]
# CHECK-NEXT: 2 5 0.50 * str w14, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldr w15, [x25, w7, uxtw]
@@ -1083,11 +1083,11 @@
# CHECK-NEXT: 2 5 0.50 * ldrsw x17, [x23, w9, sxtw]
# CHECK-NEXT: 2 5 0.50 * ldr w18, [x22, w10, sxtw]
# CHECK-NEXT: 2 5 0.50 * ldrsw x19, [x21, wzr, sxtw #2]
-# CHECK-NEXT: 2 5 0.50 * ldr x3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * str x9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * ldr x3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * str x9, [x27, x6]
# CHECK-NEXT: 2 5 0.50 * ldr d10, [x30, x7, lsl #3]
-# CHECK-NEXT: 2 5 0.50 * str x11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * ldr x12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str x11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * ldr x12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * ldr x13, [x27, x5, sxtx #3]
# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldr x15, [x25, w7, uxtw]
@@ -1096,11 +1096,11 @@
# CHECK-NEXT: 2 5 0.50 * ldr x17, [x23, w9, sxtw]
# CHECK-NEXT: 2 5 0.50 * ldr x18, [x22, w10, sxtw]
# CHECK-NEXT: 2 5 0.50 * str d19, [x21, wzr, sxtw #3]
-# CHECK-NEXT: 2 5 0.50 * ldr q3, [sp, x5]
-# CHECK-NEXT: 2 5 0.50 * ldr q9, [x27, x6]
+# CHECK-NEXT: 1 4 0.50 * ldr q3, [sp, x5]
+# CHECK-NEXT: 1 4 0.50 * ldr q9, [x27, x6]
# CHECK-NEXT: 2 5 0.50 * ldr q10, [x30, x7, lsl #4]
-# CHECK-NEXT: 2 5 0.50 * str q11, [x29, x3, sxtx]
-# CHECK-NEXT: 2 5 0.50 * str q12, [x28, xzr, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str q11, [x29, x3, sxtx]
+# CHECK-NEXT: 1 4 0.50 * str q12, [x28, xzr, sxtx]
# CHECK-NEXT: 2 5 0.50 * str q13, [x27, x5, sxtx #4]
# CHECK-NEXT: 2 5 0.50 * ldr q14, [x26, w6, uxtw]
# CHECK-NEXT: 2 5 0.50 * ldr q15, [x25, w7, uxtw]
@@ -1283,7 +1283,7 @@
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1]
-# CHECK-NEXT: 42.00 42.00 56.00 51.00 51.00 258.50 258.50 258.50 258.50 8.00 50.00 289.50 289.50 46.00 263.00 263.00 95.67 95.67 95.67 26.00 12.00 21.50 21.50
+# CHECK-NEXT: 42.00 42.00 56.00 51.00 51.00 251.00 251.00 251.00 251.00 8.00 50.00 274.50 274.50 46.00 263.00 263.00 95.67 95.67 95.67 26.00 12.00 21.50 21.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1] Instructions:
@@ -2275,7 +2275,7 @@
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w13, [x2, #4]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x2, [x5, #4]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x23, [sp, #16380]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x21, [x25, x7]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x21, [x25, x7]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w2, [x4]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w23, [x6, #8190]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh wzr, [sp, #2]
@@ -2285,7 +2285,7 @@
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w12, [x2]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w27, [sp, #4095]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb xzr, [x15]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x12, [x28, x27]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb x12, [x28, x27]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x30, [sp]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str w20, [x4, #16380]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b5, [x11]
@@ -2301,21 +2301,21 @@
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr d3, [x10, #32760]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q12, [sp, #65520]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q14, [x6, #4624]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w9, [x27, x6]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w10, [x30, x7]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w10, [x30, x7]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strb w12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w5, [x26, w7, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w15, [x25, w7, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w17, [x23, w9, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x18, [x22, w10, sxtw]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w9, [x27, x6]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w10, [x30, x7, lsl #1]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strh w11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x13, [x27, x5, sxtx #1]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w15, [x25, w7, uxtw]
@@ -2324,14 +2324,14 @@
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w18, [x22, w10, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w19, [x21, wzr, sxtw #1]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b25, [x21, w8, uxtw]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b8, [x30, x10]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b14, [x13, x25]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr b8, [x30, x10]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b14, [x13, x25]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b30, [x16, w26, uxtw]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h9, [x27, x6]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h10, [x30, x7, lsl #1]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h13, [x27, x5, sxtx #1]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h15, [x25, w7, uxtw]
@@ -2342,12 +2342,12 @@
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s12, [x30, w5, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d24, [x26, w7, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s20, [x24, w10, uxtw]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d5, [x26, x6]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str d5, [x26, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr s9, [x27, x6]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w10, [x30, x7, lsl #2]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str s12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w13, [x27, x5, sxtx #2]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w15, [x25, w7, uxtw]
@@ -2355,11 +2355,11 @@
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x17, [x23, w9, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w18, [x22, w10, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x19, [x21, wzr, sxtw #2]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x9, [x27, x6]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d10, [x30, x7, lsl #3]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x13, [x27, x5, sxtx #3]
# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x15, [x25, w7, uxtw]
@@ -2368,11 +2368,11 @@
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x17, [x23, w9, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x18, [x22, w10, sxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d19, [x21, wzr, sxtw #3]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q3, [sp, x5]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q9, [x27, x6]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q3, [sp, x5]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q9, [x27, x6]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q10, [x30, x7, lsl #4]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q13, [x27, x5, sxtx #4]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q15, [x25, w7, uxtw]
diff --git a/llvm/test/tools/llvm-mca/AArch64/Apple/M1-register-offset.s b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-register-offset.s
new file mode 100644
index 0000000000000..5fd565b210b2f
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-register-offset.s
@@ -0,0 +1,644 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=apple-m1 -instruction-tables < %s | FileCheck %s
+
+ prfm pldl1keep, [x1, x2]
+ prfm pldl1keep, [x1, x2, lsl #3]
+ prfm pldl1keep, [x1, x2, sxtx]
+ prfm pldl1keep, [x1, x2, sxtx #3]
+ prfm pldl1keep, [x1, w2, uxtw]
+ prfm pldl1keep, [x1, w2, uxtw #3]
+ prfm pldl1keep, [x1, w2, sxtw]
+ prfm pldl1keep, [x1, w2, sxtw #3]
+
+ ldrb w0, [x1, x2]
+ ldrb w0, [x1, x2, lsl #0]
+ ldrb w0, [x1, x2, sxtx]
+ ldrb w0, [x1, x2, sxtx #0]
+ ldrb w0, [x1, w2, uxtw]
+ ldrb w0, [x1, w2, uxtw #0]
+ ldrb w0, [x1, w2, sxtw]
+ ldrb w0, [x1, w2, sxtw #0]
+
+ ldrsb w0, [x1, x2]
+ ldrsb w0, [x1, x2, lsl #0]
+ ldrsb w0, [x1, x2, sxtx]
+ ldrsb w0, [x1, x2, sxtx #0]
+ ldrsb w0, [x1, w2, uxtw]
+ ldrsb w0, [x1, w2, uxtw #0]
+ ldrsb w0, [x1, w2, sxtw]
+ ldrsb w0, [x1, w2, sxtw #0]
+
+ ldrsb x0, [x1, x2]
+ ldrsb x0, [x1, x2, lsl #0]
+ ldrsb x0, [x1, x2, sxtx]
+ ldrsb x0, [x1, x2, sxtx #0]
+ ldrsb x0, [x1, w2, uxtw]
+ ldrsb x0, [x1, w2, uxtw #0]
+ ldrsb x0, [x1, w2, sxtw]
+ ldrsb x0, [x1, w2, sxtw #0]
+
+ ldrh w0, [x1, x2]
+ ldrh w0, [x1, x2, lsl #1]
+ ldrh w0, [x1, x2, sxtx]
+ ldrh w0, [x1, x2, sxtx #1]
+ ldrh w0, [x1, w2, uxtw]
+ ldrh w0, [x1, w2, uxtw #1]
+ ldrh w0, [x1, w2, sxtw]
+ ldrh w0, [x1, w2, sxtw #1]
+
+ ldrsh w0, [x1, x2]
+ ldrsh w0, [x1, x2, lsl #1]
+ ldrsh w0, [x1, x2, sxtx]
+ ldrsh w0, [x1, x2, sxtx #1]
+ ldrsh w0, [x1, w2, uxtw]
+ ldrsh w0, [x1, w2, uxtw #1]
+ ldrsh w0, [x1, w2, sxtw]
+ ldrsh w0, [x1, w2, sxtw #1]
+
+ ldrsh x0, [x1, x2]
+ ldrsh x0, [x1, x2, lsl #1]
+ ldrsh x0, [x1, x2, sxtx]
+ ldrsh x0, [x1, x2, sxtx #1]
+ ldrsh x0, [x1, w2, uxtw]
+ ldrsh x0, [x1, w2, uxtw #1]
+ ldrsh x0, [x1, w2, sxtw]
+ ldrsh x0, [x1, w2, sxtw #1]
+
+ ldr w0, [x1, x2]
+ ldr w0, [x1, x2, lsl #2]
+ ldr w0, [x1, x2, sxtx]
+ ldr w0, [x1, x2, sxtx #2]
+ ldr w0, [x1, w2, uxtw]
+ ldr w0, [x1, w2, uxtw #2]
+ ldr w0, [x1, w2, sxtw]
+ ldr w0, [x1, w2, sxtw #2]
+
+ ldrsw x0, [x1, x2]
+ ldrsw x0, [x1, x2, lsl #2]
+ ldrsw x0, [x1, x2, sxtx]
+ ldrsw x0, [x1, x2, sxtx #2]
+ ldrsw x0, [x1, w2, uxtw]
+ ldrsw x0, [x1, w2, uxtw #2]
+ ldrsw x0, [x1, w2, sxtw]
+ ldrsw x0, [x1, w2, sxtw #2]
+
+ ldr x0, [x1, x2]
+ ldr x0, [x1, x2, lsl #3]
+ ldr x0, [x1, x2, sxtx]
+ ldr x0, [x1, x2, sxtx #3]
+ ldr x0, [x1, w2, uxtw]
+ ldr x0, [x1, w2, uxtw #3]
+ ldr x0, [x1, w2, sxtw]
+ ldr x0, [x1, w2, sxtw #3]
+
+ ldr b0, [x1, x2]
+ ldr b0, [x1, x2, lsl #0]
+ ldr b0, [x1, x2, sxtx]
+ ldr b0, [x1, x2, sxtx #0]
+ ldr b0, [x1, w2, uxtw]
+ ldr b0, [x1, w2, uxtw #0]
+ ldr b0, [x1, w2, sxtw]
+ ldr b0, [x1, w2, sxtw #0]
+
+ ldr h0, [x1, x2]
+ ldr h0, [x1, x2, lsl #1]
+ ldr h0, [x1, x2, sxtx]
+ ldr h0, [x1, x2, sxtx #1]
+ ldr h0, [x1, w2, uxtw]
+ ldr h0, [x1, w2, uxtw #1]
+ ldr h0, [x1, w2, sxtw]
+ ldr h0, [x1, w2, sxtw #1]
+
+ ldr s0, [x1, x2]
+ ldr s0, [x1, x2, lsl #2]
+ ldr s0, [x1, x2, sxtx]
+ ldr s0, [x1, x2, sxtx #2]
+ ldr s0, [x1, w2, uxtw]
+ ldr s0, [x1, w2, uxtw #2]
+ ldr s0, [x1, w2, sxtw]
+ ldr s0, [x1, w2, sxtw #2]
+
+ ldr d0, [x1, x2]
+ ldr d0, [x1, x2, lsl #3]
+ ldr d0, [x1, x2, sxtx]
+ ldr d0, [x1, x2, sxtx #3]
+ ldr d0, [x1, w2, uxtw]
+ ldr d0, [x1, w2, uxtw #3]
+ ldr d0, [x1, w2, sxtw]
+ ldr d0, [x1, w2, sxtw #3]
+
+ ldr q0, [x1, x2]
+ ldr q0, [x1, x2, lsl #4]
+ ldr q0, [x1, x2, sxtx]
+ ldr q0, [x1, x2, sxtx #4]
+ ldr q0, [x1, w2, uxtw]
+ ldr q0, [x1, w2, uxtw #4]
+ ldr q0, [x1, w2, sxtw]
+ ldr q0, [x1, w2, sxtw #4]
+
+ strb w0, [x1, x2]
+ strb w0, [x1, x2, lsl #0]
+ strb w0, [x1, x2, sxtx]
+ strb w0, [x1, x2, sxtx #0]
+ strb w0, [x1, w2, uxtw]
+ strb w0, [x1, w2, uxtw #0]
+ strb w0, [x1, w2, sxtw]
+ strb w0, [x1, w2, sxtw #0]
+
+ strh w0, [x1, x2]
+ strh w0, [x1, x2, lsl #1]
+ strh w0, [x1, x2, sxtx]
+ strh w0, [x1, x2, sxtx #1]
+ strh w0, [x1, w2, uxtw]
+ strh w0, [x1, w2, uxtw #1]
+ strh w0, [x1, w2, sxtw]
+ strh w0, [x1, w2, sxtw #1]
+
+ str w0, [x1, x2]
+ str w0, [x1, x2, lsl #2]
+ str w0, [x1, x2, sxtx]
+ str w0, [x1, x2, sxtx #2]
+ str w0, [x1, w2, uxtw]
+ str w0, [x1, w2, uxtw #2]
+ str w0, [x1, w2, sxtw]
+ str w0, [x1, w2, sxtw #2]
+
+ str x0, [x1, x2]
+ str x0, [x1, x2, lsl #3]
+ str x0, [x1, x2, sxtx]
+ str x0, [x1, x2, sxtx #3]
+ str x0, [x1, w2, uxtw]
+ str x0, [x1, w2, uxtw #3]
+ str x0, [x1, w2, sxtw]
+ str x0, [x1, w2, sxtw #3]
+
+ str b0, [x1, x2]
+ str b0, [x1, x2, lsl #0]
+ str b0, [x1, x2, sxtx]
+ str b0, [x1, x2, sxtx #0]
+ str b0, [x1, w2, uxtw]
+ str b0, [x1, w2, uxtw #0]
+ str b0, [x1, w2, sxtw]
+ str b0, [x1, w2, sxtw #0]
+
+ str h0, [x1, x2]
+ str h0, [x1, x2, lsl #1]
+ str h0, [x1, x2, sxtx]
+ str h0, [x1, x2, sxtx #1]
+ str h0, [x1, w2, uxtw]
+ str h0, [x1, w2, uxtw #1]
+ str h0, [x1, w2, sxtw]
+ str h0, [x1, w2, sxtw #1]
+
+ str s0, [x1, x2]
+ str s0, [x1, x2, lsl #2]
+ str s0, [x1, x2, sxtx]
+ str s0, [x1, x2, sxtx #2]
+ str s0, [x1, w2, uxtw]
+ str s0, [x1, w2, uxtw #2]
+ str s0, [x1, w2, sxtw]
+ str s0, [x1, w2, sxtw #2]
+
+ str d0, [x1, x2]
+ str d0, [x1, x2, lsl #3]
+ str d0, [x1, x2, sxtx]
+ str d0, [x1, x2, sxtx #3]
+ str d0, [x1, w2, uxtw]
+ str d0, [x1, w2, uxtw #3]
+ str d0, [x1, w2, sxtw]
+ str d0, [x1, w2, sxtw #3]
+
+ str q0, [x1, x2]
+ str q0, [x1, x2, lsl #4]
+ str q0, [x1, x2, sxtx]
+ str q0, [x1, x2, sxtx #4]
+ str q0, [x1, w2, uxtw]
+ str q0, [x1, w2, uxtw #4]
+ str q0, [x1, w2, sxtw]
+ str q0, [x1, w2, sxtw #4]
+
+# 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 4 0.50 U prfm pldl1keep, [x1, x2]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, sxtx]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, x2, sxtx #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, uxtw]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, uxtw #3]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, sxtw]
+# CHECK-NEXT: 1 4 0.50 U prfm pldl1keep, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldrb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldrsb x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsb x0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldrh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldrsh x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsh x0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldr w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldr w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldrsw x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldrsw x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldrsw x0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldr x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * ldr x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldr b0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * ldr b0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * ldr h0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * ldr h0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * ldr s0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * ldr s0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * ldr d0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * ldr d0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * ldr q0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, x2, lsl #4]
+# CHECK-NEXT: 1 4 0.50 * ldr q0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * ldr q0, [x1, w2, sxtw #4]
+# CHECK-NEXT: 1 4 0.50 * strb w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * strb w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * strb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * strh w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * strh w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * strh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * str w0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * str w0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * str x0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * str x0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * str b0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, x2, lsl #0]
+# CHECK-NEXT: 1 4 0.50 * str b0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: 1 4 0.50 * str h0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, x2, lsl #1]
+# CHECK-NEXT: 1 4 0.50 * str h0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: 1 4 0.50 * str s0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, x2, lsl #2]
+# CHECK-NEXT: 1 4 0.50 * str s0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: 1 4 0.50 * str d0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, x2, lsl #3]
+# CHECK-NEXT: 1 4 0.50 * str d0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: 1 4 0.50 * str q0, [x1, x2]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, x2, lsl #4]
+# CHECK-NEXT: 1 4 0.50 * str q0, [x1, x2, sxtx]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, uxtw]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, sxtw]
+# CHECK-NEXT: 2 5 0.50 * str q0, [x1, w2, sxtw #4]
+
+# CHECK: Resources:
+# CHECK-NEXT: [0.0] - CyUnitB
+# CHECK-NEXT: [0.1] - CyUnitB
+# CHECK-NEXT: [1] - CyUnitBR
+# CHECK-NEXT: [2.0] - CyUnitFloatDiv
+# CHECK-NEXT: [2.1] - CyUnitFloatDiv
+# CHECK-NEXT: [3.0] - CyUnitI
+# CHECK-NEXT: [3.1] - CyUnitI
+# CHECK-NEXT: [3.2] - CyUnitI
+# CHECK-NEXT: [3.3] - CyUnitI
+# CHECK-NEXT: [4] - CyUnitID
+# CHECK-NEXT: [5] - CyUnitIM
+# CHECK-NEXT: [6.0] - CyUnitIS
+# CHECK-NEXT: [6.1] - CyUnitIS
+# CHECK-NEXT: [7] - CyUnitIntDiv
+# CHECK-NEXT: [8.0] - CyUnitLS
+# CHECK-NEXT: [8.1] - CyUnitLS
+# CHECK-NEXT: [9.0] - CyUnitV
+# CHECK-NEXT: [9.1] - CyUnitV
+# CHECK-NEXT: [9.2] - CyUnitV
+# CHECK-NEXT: [10] - CyUnitVC
+# CHECK-NEXT: [11] - CyUnitVD
+# CHECK-NEXT: [12.0] - CyUnitVM
+# CHECK-NEXT: [12.1] - CyUnitVM
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1]
+# CHECK-NEXT: - - - - - 34.50 34.50 34.50 34.50 - - 69.00 69.00 - 96.00 96.00 - - - - - - -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1] Instructions:
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - prfm pldl1keep, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsb x0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsh x0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldrsw x0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr b0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr s0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr d0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, lsl #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - ldr q0, [x1, w2, sxtw #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strb w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strb w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strb w0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strh w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - strh w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - strh w0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str w0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str w0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str w0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str x0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str x0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, x2, lsl #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str b0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, x2, sxtx #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, uxtw #0]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str b0, [x1, w2, sxtw #0]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, x2, lsl #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str h0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, x2, sxtx #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, uxtw #1]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str h0, [x1, w2, sxtw #1]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str s0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, x2, lsl #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str s0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, x2, sxtx #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, uxtw #2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str s0, [x1, w2, sxtw #2]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str d0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, x2, lsl #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str d0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, x2, sxtx #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, uxtw #3]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str d0, [x1, w2, sxtw #3]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q0, [x1, x2]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, x2, lsl #4]
+# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - - - - - - str q0, [x1, x2, sxtx]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, x2, sxtx #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, uxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, uxtw #4]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, sxtw]
+# CHECK-NEXT: - - - - - 0.25 0.25 0.25 0.25 - - 0.50 0.50 - 0.50 0.50 - - - - - - - str q0, [x1, w2, sxtw #4]
diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
index 9d50ab59d33fc..fc7671c130835 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
@@ -1094,8 +1094,8 @@
# CHECK-NEXT: 1 6 0.33 * ldr q3, [sp, x5]
# CHECK-NEXT: 1 6 0.33 * ldr q9, [x27, x6]
# CHECK-NEXT: 1 6 0.33 * ldr q10, [x30, x7, lsl #4]
-# CHECK-NEXT: 3 2 0.50 * str q11, [x29, x3, sxtx]
-# CHECK-NEXT: 3 2 0.50 * str q12, [x28, xzr, sxtx]
+# CHECK-NEXT: 2 2 0.50 * str q11, [x29, x3, sxtx]
+# CHECK-NEXT: 2 2 0.50 * str q12, [x28, xzr, sxtx]
# CHECK-NEXT: 3 2 0.50 * str q13, [x27, x5, sxtx #4]
# CHECK-NEXT: 1 6 0.33 * ldr q14, [x26, w6, uxtw]
# CHECK-NEXT: 1 6 0.33 * ldr q15, [x25, w7, uxtw]
@@ -1268,7 +1268,7 @@
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8]
-# CHECK-NEXT: 13.00 13.00 34.00 34.00 102.33 173.33 173.33 370.25 213.25 159.25 159.25 208.00 79.00
+# CHECK-NEXT: 13.00 13.00 34.00 34.00 102.33 173.33 173.33 369.75 212.75 158.75 158.75 208.00 79.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions:
@@ -2356,8 +2356,8 @@
# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ldr q3, [sp, x5]
# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ldr q9, [x27, x6]
# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ldr q10, [x30, x7, lsl #4]
-# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 str q11, [x29, x3, sxtx]
-# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 str q12, [x28, xzr, sxtx]
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 str q11, [x29, x3, sxtx]
+# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 str q12, [x28, xzr, sxtx]
# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 str q13, [x27, x5, sxtx #4]
# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ldr q14, [x26, w6, uxtw]
# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ldr q15, [x25, w7, uxtw]
>From 9adcbed7b2d1fec987fbd5c711e315f1c03289ca Mon Sep 17 00:00:00 2001
From: tomershafir <tomer.shafir8 at gmail.com>
Date: Thu, 24 Sep 2026 11:23:50 +0300
Subject: [PATCH 2/2] regen tests
---
.../AArch64/Apple/M1-basic-instructions.s | 20 +++++++++----------
.../AArch64/Neoverse/N3-basic-instructions.s | 20 +++++++++----------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
index 98d27167f31c1..b35c698034fe8 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Apple/M1-basic-instructions.s
@@ -819,15 +819,15 @@
# CHECK-NEXT: 2 8 1.00 * * U stlxp wzr, x6, x7, [x1]
# CHECK-NEXT: 2 4 0.50 * * U ldaxp w5, w18, [sp]
# CHECK-NEXT: 2 4 0.50 * * U ldaxp x6, x19, [x22]
-# CHECK-NEXT: 1 4 0.50 * stlrb w24, [sp]
-# CHECK-NEXT: 1 4 0.50 * stlrh w25, [x30]
-# CHECK-NEXT: 1 4 0.50 * stlr w26, [x29]
-# CHECK-NEXT: 1 4 0.50 * stlr x27, [x28]
-# CHECK-NEXT: 1 4 0.50 * ldarb w16, [x21]
-# CHECK-NEXT: 1 4 0.50 * ldarb w23, [sp]
-# CHECK-NEXT: 1 4 0.50 * ldarh w22, [x30]
-# CHECK-NEXT: 1 4 0.50 * ldar wzr, [x29]
-# CHECK-NEXT: 1 4 0.50 * ldar x21, [x28]
+# CHECK-NEXT: 1 4 0.50 * U stlrb w24, [sp]
+# CHECK-NEXT: 1 4 0.50 * U stlrh w25, [x30]
+# CHECK-NEXT: 1 4 0.50 * U stlr w26, [x29]
+# CHECK-NEXT: 1 4 0.50 * U stlr x27, [x28]
+# CHECK-NEXT: 1 4 0.50 * U ldarb w16, [x21]
+# CHECK-NEXT: 1 4 0.50 * U ldarb w23, [sp]
+# CHECK-NEXT: 1 4 0.50 * U ldarh w22, [x30]
+# CHECK-NEXT: 1 4 0.50 * U ldar wzr, [x29]
+# CHECK-NEXT: 1 4 0.50 * U ldar x21, [x28]
# CHECK-NEXT: 1 4 0.50 * sturb w9, [sp]
# CHECK-NEXT: 1 4 0.50 * sturh wzr, [x12, #255]
# CHECK-NEXT: 1 4 0.50 * stur w16, [x0, #-256]
@@ -1296,7 +1296,7 @@
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1]
-# CHECK-NEXT: 42.00 42.00 56.00 51.00 51.00 251.00 251.00 251.00 251.00 8.00 50.00 274.50 274.50 46.00 263.00 263.00 95.67 95.67 95.67 26.00 12.00 21.50 21.50
+# CHECK-NEXT: 42.00 42.00 56.00 51.00 51.00 257.50 257.50 257.50 257.50 8.00 50.00 287.50 287.50 46.00 263.00 263.00 95.67 95.67 95.67 26.00 12.00 21.50 21.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [1] [2.0] [2.1] [3.0] [3.1] [3.2] [3.3] [4] [5] [6.0] [6.1] [7] [8.0] [8.1] [9.0] [9.1] [9.2] [10] [11] [12.0] [12.1] Instructions:
diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
index 12597a211d3de..8ec5de5650026 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
@@ -814,15 +814,15 @@
# CHECK-NEXT: 3 5 0.67 * * U stlxp wzr, x6, x7, [x1]
# CHECK-NEXT: 1 4 0.33 * * U ldaxp w5, w18, [sp]
# CHECK-NEXT: 1 4 0.33 * * U ldaxp x6, x19, [x22]
-# CHECK-NEXT: 2 1 0.50 * stlrb w24, [sp]
-# CHECK-NEXT: 2 1 0.50 * stlrh w25, [x30]
-# CHECK-NEXT: 2 1 0.50 * stlr w26, [x29]
-# CHECK-NEXT: 2 1 0.50 * stlr x27, [x28]
-# CHECK-NEXT: 1 4 0.33 * ldarb w16, [x21]
-# CHECK-NEXT: 1 4 0.33 * ldarb w23, [sp]
-# CHECK-NEXT: 1 4 0.33 * ldarh w22, [x30]
-# CHECK-NEXT: 1 4 0.33 * ldar wzr, [x29]
-# CHECK-NEXT: 1 4 0.33 * ldar x21, [x28]
+# CHECK-NEXT: 2 1 0.50 * U stlrb w24, [sp]
+# CHECK-NEXT: 2 1 0.50 * U stlrh w25, [x30]
+# CHECK-NEXT: 2 1 0.50 * U stlr w26, [x29]
+# CHECK-NEXT: 2 1 0.50 * U stlr x27, [x28]
+# CHECK-NEXT: 1 4 0.33 * U ldarb w16, [x21]
+# CHECK-NEXT: 1 4 0.33 * U ldarb w23, [sp]
+# CHECK-NEXT: 1 4 0.33 * U ldarh w22, [x30]
+# CHECK-NEXT: 1 4 0.33 * U ldar wzr, [x29]
+# CHECK-NEXT: 1 4 0.33 * U ldar x21, [x28]
# CHECK-NEXT: 2 1 0.50 * sturb w9, [sp]
# CHECK-NEXT: 2 1 0.50 * sturh wzr, [x12, #255]
# CHECK-NEXT: 2 1 0.50 * stur w16, [x0, #-256]
@@ -1281,7 +1281,7 @@
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8]
-# CHECK-NEXT: 13.00 13.00 34.00 34.00 102.33 173.33 173.33 369.75 212.75 158.75 158.75 208.00 79.00
+# CHECK-NEXT: 13.00 13.00 34.00 34.00 102.33 173.33 173.33 376.25 219.25 158.75 158.75 208.00 79.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions:
More information about the llvm-commits
mailing list