[llvm] [AArch64][SME] Add multi-vector store/load opcodes to getMemOpInfo (PR #201073)

Benjamin Maxwell via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 2 02:17:42 PDT 2026


https://github.com/MacDue created https://github.com/llvm/llvm-project/pull/201073

Follow-up to #200238

>From bf006857ee61fb225a3cc31fc0e82d957622b9ff Mon Sep 17 00:00:00 2001
From: Benjamin Maxwell <benjamin.maxwell at arm.com>
Date: Mon, 1 Jun 2026 09:20:36 +0000
Subject: [PATCH] [AArch64][SME] Add multi-vector store/load opcodes to
 getMemOpInfo

Follow-up to #200238
---
 llvm/lib/Target/AArch64/AArch64InstrInfo.cpp  | 112 +++
 .../CodeGen/AArch64/sve-ldst-multi-vec.mir    | 667 ++++++++++++++++++
 2 files changed, 779 insertions(+)

diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
index ac7af4ed14119..63cdaa9c44850 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -3190,6 +3190,62 @@ unsigned AArch64InstrInfo::getLoadStoreImmIdx(unsigned Opc) {
   case AArch64::LD1H_4Z_IMM_PSEUDO:
   case AArch64::LD1W_4Z_IMM_PSEUDO:
   case AArch64::LD1D_4Z_IMM_PSEUDO:
+  case AArch64::ST1B_2Z_IMM:
+  case AArch64::ST1B_2Z_STRIDED_IMM:
+  case AArch64::ST1H_2Z_IMM:
+  case AArch64::ST1H_2Z_STRIDED_IMM:
+  case AArch64::ST1W_2Z_IMM:
+  case AArch64::ST1W_2Z_STRIDED_IMM:
+  case AArch64::ST1D_2Z_IMM:
+  case AArch64::ST1D_2Z_STRIDED_IMM:
+  case AArch64::LDNT1B_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1B_2Z_IMM:
+  case AArch64::LDNT1B_2Z_STRIDED_IMM:
+  case AArch64::LDNT1H_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1H_2Z_IMM:
+  case AArch64::LDNT1H_2Z_STRIDED_IMM:
+  case AArch64::LDNT1W_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1W_2Z_IMM:
+  case AArch64::LDNT1W_2Z_STRIDED_IMM:
+  case AArch64::LDNT1D_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1D_2Z_IMM:
+  case AArch64::LDNT1D_2Z_STRIDED_IMM:
+  case AArch64::STNT1B_2Z_IMM:
+  case AArch64::STNT1B_2Z_STRIDED_IMM:
+  case AArch64::STNT1H_2Z_IMM:
+  case AArch64::STNT1H_2Z_STRIDED_IMM:
+  case AArch64::STNT1W_2Z_IMM:
+  case AArch64::STNT1W_2Z_STRIDED_IMM:
+  case AArch64::STNT1D_2Z_IMM:
+  case AArch64::STNT1D_2Z_STRIDED_IMM:
+  case AArch64::ST1B_4Z_IMM:
+  case AArch64::ST1B_4Z_STRIDED_IMM:
+  case AArch64::ST1H_4Z_IMM:
+  case AArch64::ST1H_4Z_STRIDED_IMM:
+  case AArch64::ST1W_4Z_IMM:
+  case AArch64::ST1W_4Z_STRIDED_IMM:
+  case AArch64::ST1D_4Z_IMM:
+  case AArch64::ST1D_4Z_STRIDED_IMM:
+  case AArch64::LDNT1B_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1B_4Z_IMM:
+  case AArch64::LDNT1B_4Z_STRIDED_IMM:
+  case AArch64::LDNT1H_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1H_4Z_IMM:
+  case AArch64::LDNT1H_4Z_STRIDED_IMM:
+  case AArch64::LDNT1W_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1W_4Z_IMM:
+  case AArch64::LDNT1W_4Z_STRIDED_IMM:
+  case AArch64::LDNT1D_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1D_4Z_IMM:
+  case AArch64::LDNT1D_4Z_STRIDED_IMM:
+  case AArch64::STNT1B_4Z_IMM:
+  case AArch64::STNT1B_4Z_STRIDED_IMM:
+  case AArch64::STNT1H_4Z_IMM:
+  case AArch64::STNT1H_4Z_STRIDED_IMM:
+  case AArch64::STNT1W_4Z_IMM:
+  case AArch64::STNT1W_4Z_STRIDED_IMM:
+  case AArch64::STNT1D_4Z_IMM:
+  case AArch64::STNT1D_4Z_STRIDED_IMM:
     return 3;
   case AArch64::LDPDpost:
   case AArch64::LDPDpre:
@@ -4892,6 +4948,34 @@ bool AArch64InstrInfo::getMemOpInfo(unsigned Opcode, TypeSize &Scale,
   case AArch64::LD1H_2Z_IMM_PSEUDO:
   case AArch64::LD1W_2Z_IMM_PSEUDO:
   case AArch64::LD1D_2Z_IMM_PSEUDO:
+  case AArch64::ST1B_2Z_IMM:
+  case AArch64::ST1B_2Z_STRIDED_IMM:
+  case AArch64::ST1H_2Z_IMM:
+  case AArch64::ST1H_2Z_STRIDED_IMM:
+  case AArch64::ST1W_2Z_IMM:
+  case AArch64::ST1W_2Z_STRIDED_IMM:
+  case AArch64::ST1D_2Z_IMM:
+  case AArch64::ST1D_2Z_STRIDED_IMM:
+  case AArch64::LDNT1B_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1B_2Z_IMM:
+  case AArch64::LDNT1B_2Z_STRIDED_IMM:
+  case AArch64::LDNT1H_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1H_2Z_IMM:
+  case AArch64::LDNT1H_2Z_STRIDED_IMM:
+  case AArch64::LDNT1W_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1W_2Z_IMM:
+  case AArch64::LDNT1W_2Z_STRIDED_IMM:
+  case AArch64::LDNT1D_2Z_IMM_PSEUDO:
+  case AArch64::LDNT1D_2Z_IMM:
+  case AArch64::LDNT1D_2Z_STRIDED_IMM:
+  case AArch64::STNT1B_2Z_IMM:
+  case AArch64::STNT1B_2Z_STRIDED_IMM:
+  case AArch64::STNT1H_2Z_IMM:
+  case AArch64::STNT1H_2Z_STRIDED_IMM:
+  case AArch64::STNT1W_2Z_IMM:
+  case AArch64::STNT1W_2Z_STRIDED_IMM:
+  case AArch64::STNT1D_2Z_IMM:
+  case AArch64::STNT1D_2Z_STRIDED_IMM:
     Scale = TypeSize::getScalable(32);
     Width = TypeSize::getScalable(16 * 2);
     MinOffset = -8;
@@ -4930,6 +5014,34 @@ bool AArch64InstrInfo::getMemOpInfo(unsigned Opcode, TypeSize &Scale,
   case AArch64::LD1H_4Z_IMM_PSEUDO:
   case AArch64::LD1W_4Z_IMM_PSEUDO:
   case AArch64::LD1D_4Z_IMM_PSEUDO:
+  case AArch64::ST1B_4Z_IMM:
+  case AArch64::ST1B_4Z_STRIDED_IMM:
+  case AArch64::ST1H_4Z_IMM:
+  case AArch64::ST1H_4Z_STRIDED_IMM:
+  case AArch64::ST1W_4Z_IMM:
+  case AArch64::ST1W_4Z_STRIDED_IMM:
+  case AArch64::ST1D_4Z_IMM:
+  case AArch64::ST1D_4Z_STRIDED_IMM:
+  case AArch64::LDNT1B_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1B_4Z_IMM:
+  case AArch64::LDNT1B_4Z_STRIDED_IMM:
+  case AArch64::LDNT1H_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1H_4Z_IMM:
+  case AArch64::LDNT1H_4Z_STRIDED_IMM:
+  case AArch64::LDNT1W_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1W_4Z_IMM:
+  case AArch64::LDNT1W_4Z_STRIDED_IMM:
+  case AArch64::LDNT1D_4Z_IMM_PSEUDO:
+  case AArch64::LDNT1D_4Z_IMM:
+  case AArch64::LDNT1D_4Z_STRIDED_IMM:
+  case AArch64::STNT1B_4Z_IMM:
+  case AArch64::STNT1B_4Z_STRIDED_IMM:
+  case AArch64::STNT1H_4Z_IMM:
+  case AArch64::STNT1H_4Z_STRIDED_IMM:
+  case AArch64::STNT1W_4Z_IMM:
+  case AArch64::STNT1W_4Z_STRIDED_IMM:
+  case AArch64::STNT1D_4Z_IMM:
+  case AArch64::STNT1D_4Z_STRIDED_IMM:
     Scale = TypeSize::getScalable(64);
     Width = TypeSize::getScalable(16 * 4);
     MinOffset = -8;
diff --git a/llvm/test/CodeGen/AArch64/sve-ldst-multi-vec.mir b/llvm/test/CodeGen/AArch64/sve-ldst-multi-vec.mir
index a33dc8d2d1261..1213914f80baa 100644
--- a/llvm/test/CodeGen/AArch64/sve-ldst-multi-vec.mir
+++ b/llvm/test/CodeGen/AArch64/sve-ldst-multi-vec.mir
@@ -27,6 +27,46 @@ body:             |
     ; CHECK-NEXT: $z16_z24 = LD1W_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
     ; CHECK-NEXT: $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, $sp, -8
     ; CHECK-NEXT: $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, $sp, 7
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1H_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
@@ -35,6 +75,46 @@ body:             |
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1W_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, $sp, -8
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
+    ; CHECK-NEXT: STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, -8
+    ; CHECK-NEXT: STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, $sp, 7
     ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg
     ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 1, implicit $vg
     ; CHECK-NEXT: early-clobber $sp, $fp = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.1)
@@ -51,6 +131,46 @@ body:             |
     ; CHECK-OFFSET-NEXT: ld1w	{ z16.s, z24.s }, pn8/z, [sp, #14, mul vl]
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z24.d }, pn8/z, [sp, #-16, mul vl]
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z24.d }, pn8/z, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z17.b }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z17.b }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z17.h }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z17.h }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z17.s }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z17.s }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z17.d }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z17.d }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z24.b }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z24.b }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z24.h }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z24.h }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z24.s }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z24.s }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z24.d }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z24.d }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z24.b }, pn8/z, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z24.b }, pn8/z, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z24.h }, pn8/z, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z24.h }, pn8/z, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z24.s }, pn8/z, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z24.s }, pn8/z, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z24.d }, pn8/z, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z24.d }, pn8/z, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z17.b }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z17.b }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z17.h }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z17.h }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z17.s }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z17.s }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z17.d }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z17.d }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z24.b }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z24.b }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z24.h }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z24.h }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z24.s }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z24.s }, pn8, [sp, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z24.d }, pn8, [sp, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z24.d }, pn8, [sp, #14, mul vl]
     ; CHECK-OFFSET-NEXT: ld1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [sp, #-32, mul vl]
     ; CHECK-OFFSET-NEXT: ld1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [sp, #28, mul vl]
     ; CHECK-OFFSET-NEXT: ld1h	{ z16.h, z20.h, z24.h, z28.h }, pn8/z, [sp, #-32, mul vl]
@@ -59,11 +179,52 @@ body:             |
     ; CHECK-OFFSET-NEXT: ld1w	{ z16.s, z20.s, z24.s, z28.s }, pn8/z, [sp, #28, mul vl]
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [sp, #-32, mul vl]
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b - z19.b }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b - z19.b }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h - z19.h }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h - z19.h }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s - z19.s }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s - z19.s }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d - z19.d }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d - z19.d }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8/z, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8/z, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8/z, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8/z, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b - z19.b }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b - z19.b }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h - z19.h }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h - z19.h }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s - z19.s }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s - z19.s }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d - z19.d }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d - z19.d }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [sp, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [sp, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [sp, #28, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	sp, sp, #31
     ; CHECK-OFFSET-NEXT: addvl	sp, sp, #1
     ; CHECK-OFFSET-NEXT: ldr	x29, [sp], #16
     ; CHECK-OFFSET-NEXT: ret
 
+    ; 2x loads
     $z16_z24 = LD1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
     $z16_z24 = LD1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
     $z16_z24 = LD1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
@@ -73,6 +234,53 @@ body:             |
     $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
     $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
 
+    ; 2x stores
+    ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+
+    ; 2x non-temporal loads
+    $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+
+    ; 2x non-temporal stores
+    STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -8
+    STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 7
+    STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+    STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -8
+    STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 7
+
+    ; 4x loads
     $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
     $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
     $z16_z20_z24_z28 = LD1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
@@ -82,6 +290,51 @@ body:             |
     $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
     $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
 
+    ; 4x stores
+    ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+
+    ; 4x non-temporal loads
+    $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+    $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -8
+    $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 7
+
+    ; 4x non-temporal stores
+    STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -8
+    STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 7
+    STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
+    STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -8
+    STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 7
 
     RET_ReallyLR
 ...
@@ -115,6 +368,86 @@ body:             |
     ; CHECK-NEXT: $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
     ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
     ; CHECK-NEXT: $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -2, implicit $vg
+    ; CHECK-NEXT: STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 2, implicit $vg
+    ; CHECK-NEXT: STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, killed $x8, 7
     ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
     ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
@@ -131,6 +464,86 @@ body:             |
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
     ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
     ; CHECK-NEXT: $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, -4, implicit $vg
+    ; CHECK-NEXT: STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, -8
+    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 4, implicit $vg
+    ; CHECK-NEXT: STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, killed $x8, 7
     ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg
     ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 1, implicit $vg
     ; CHECK-NEXT: early-clobber $sp, $fp = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.1)
@@ -155,6 +568,86 @@ body:             |
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z24.d }, pn8/z, [x8, #-16, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z24.d }, pn8/z, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z17.b }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z17.b }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z17.h }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z17.h }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z17.s }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z17.s }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z17.d }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z17.d }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z24.b }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z24.b }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z24.h }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z24.h }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z24.s }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z24.s }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z24.d }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z24.d }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z24.b }, pn8/z, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z24.b }, pn8/z, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z24.h }, pn8/z, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z24.h }, pn8/z, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z24.s }, pn8/z, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z24.s }, pn8/z, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z24.d }, pn8/z, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z24.d }, pn8/z, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z17.b }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z17.b }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z17.h }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z17.h }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z17.s }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z17.s }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z17.d }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z17.d }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z24.b }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z24.b }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z24.h }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z24.h }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z24.s }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z24.s }, pn8, [x8, #14, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-2
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z24.d }, pn8, [x8, #-16, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #2
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z24.d }, pn8, [x8, #14, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
     ; CHECK-OFFSET-NEXT: ld1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [x8, #-32, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
@@ -171,11 +664,92 @@ body:             |
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [x8, #-32, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
     ; CHECK-OFFSET-NEXT: ld1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b - z19.b }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b - z19.b }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h - z19.h }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h - z19.h }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s - z19.s }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s - z19.s }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d - z19.d }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d - z19.d }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: st1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: ldnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8/z, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8/z, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: ldnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8/z, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8/z, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: ldnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8/z, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: ldnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8/z, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b - z19.b }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b - z19.b }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h - z19.h }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h - z19.h }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s - z19.s }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s - z19.s }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d - z19.d }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d - z19.d }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1b	{ z16.b, z20.b, z24.b, z28.b }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1h	{ z16.h, z20.h, z24.h, z28.h }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1w	{ z16.s, z20.s, z24.s, z28.s }, pn8, [x8, #28, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #-4
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [x8, #-32, mul vl]
+    ; CHECK-OFFSET-NEXT: addvl	x8, sp, #4
+    ; CHECK-OFFSET-NEXT: stnt1d	{ z16.d, z20.d, z24.d, z28.d }, pn8, [x8, #28, mul vl]
     ; CHECK-OFFSET-NEXT: addvl	sp, sp, #31
     ; CHECK-OFFSET-NEXT: addvl	sp, sp, #1
     ; CHECK-OFFSET-NEXT: ldr	x29, [sp], #16
     ; CHECK-OFFSET-NEXT: ret
 
+    ; 2x loads
     $z16_z24 = LD1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
     $z16_z24 = LD1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
     $z16_z24 = LD1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
@@ -185,6 +759,53 @@ body:             |
     $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
     $z16_z24 = LD1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
 
+    ; 2x stores
+    ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    ST1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    ST1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    ST1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    ST1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    ST1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    ST1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    ST1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    ST1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+
+    ; 2x non-temporal loads
+    $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z24 = LDNT1B_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z24 = LDNT1H_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z24 = LDNT1W_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z24 = LDNT1D_2Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+
+    ; 2x non-temporal stores
+    STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    STNT1B_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    STNT1H_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    STNT1W_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, -9
+    STNT1D_2Z_IMM renamable $z16_z17, renamable $pn8, %stack.0, 8
+    STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    STNT1B_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    STNT1H_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    STNT1W_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+    STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, -9
+    STNT1D_2Z_STRIDED_IMM renamable $z16_z24, renamable $pn8, %stack.0, 8
+
+    ; 4x loads
     $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
     $z16_z20_z24_z28 = LD1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
     $z16_z20_z24_z28 = LD1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
@@ -194,5 +815,51 @@ body:             |
     $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
     $z16_z20_z24_z28 = LD1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
 
+    ; 4x stores
+    ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    ST1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    ST1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    ST1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    ST1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    ST1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    ST1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    ST1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    ST1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+
+    ; 4x non-temporal loads
+    $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z20_z24_z28 = LDNT1B_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z20_z24_z28 = LDNT1H_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z20_z24_z28 = LDNT1W_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+    $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, -9
+    $z16_z20_z24_z28 = LDNT1D_4Z_IMM_PSEUDO renamable $pn8, %stack.0, 8
+
+    ; 4x non-temporal stores
+    STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    STNT1B_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    STNT1H_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    STNT1W_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, -9
+    STNT1D_4Z_IMM renamable $z16_z17_z18_z19, renamable $pn8, %stack.0, 8
+    STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    STNT1B_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    STNT1H_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    STNT1W_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+    STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, -9
+    STNT1D_4Z_STRIDED_IMM renamable $z16_z20_z24_z28, renamable $pn8, %stack.0, 8
+
     RET_ReallyLR
 ...



More information about the llvm-commits mailing list