[llvm] 1c00d09 - [VE] LVLGen sets VL before vector insts

Simon Moll via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 16 00:19:55 PST 2020


Author: Simon Moll
Date: 2020-11-16T09:19:14+01:00
New Revision: 1c00d096a608da1489cc4e3c1bba9ac5b4732af8

URL: https://github.com/llvm/llvm-project/commit/1c00d096a608da1489cc4e3c1bba9ac5b4732af8
DIFF: https://github.com/llvm/llvm-project/commit/1c00d096a608da1489cc4e3c1bba9ac5b4732af8.diff

LOG: [VE] LVLGen sets VL before vector insts

The VE backend represents vector instructions with an explicit 'i32'
vector length operand.  In the VE ISA, the vector length is always read
from the VL hardware register.  The LVLGen pass inserts 'lvl'
instructions as necessary to set VL to the right value before each
vector instruction.

Reviewed By: kaz7

Differential Revision: https://reviews.llvm.org/D91416

Added: 
    llvm/lib/Target/VE/LVLGen.cpp
    llvm/test/CodeGen/VE/VELIntrinsics/lvlgen.ll

Modified: 
    llvm/lib/Target/VE/CMakeLists.txt
    llvm/lib/Target/VE/VE.h
    llvm/lib/Target/VE/VETargetMachine.cpp
    llvm/test/CodeGen/VE/VELIntrinsics/vld.ll
    llvm/test/CodeGen/VE/VELIntrinsics/vst.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/VE/CMakeLists.txt b/llvm/lib/Target/VE/CMakeLists.txt
index dec4a6b1d8b1..9615f21f7143 100644
--- a/llvm/lib/Target/VE/CMakeLists.txt
+++ b/llvm/lib/Target/VE/CMakeLists.txt
@@ -14,6 +14,7 @@ tablegen(LLVM VEGenCallingConv.inc -gen-callingconv)
 add_public_tablegen_target(VECommonTableGen)
 
 add_llvm_target(VECodeGen
+  LVLGen.cpp
   VEAsmPrinter.cpp
   VEFrameLowering.cpp
   VEISelDAGToDAG.cpp

diff  --git a/llvm/lib/Target/VE/LVLGen.cpp b/llvm/lib/Target/VE/LVLGen.cpp
new file mode 100644
index 000000000000..08b350a581dc
--- /dev/null
+++ b/llvm/lib/Target/VE/LVLGen.cpp
@@ -0,0 +1,132 @@
+//===-- LVLGen.cpp - LVL instruction generator ----------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "VE.h"
+#include "VESubtarget.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
+#include "llvm/Target/TargetMachine.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "lvl-gen"
+
+namespace {
+struct LVLGen : public MachineFunctionPass {
+  const TargetInstrInfo *TII;
+  const TargetRegisterInfo *TRI;
+
+  static char ID;
+  LVLGen() : MachineFunctionPass(ID) {}
+  bool runOnMachineBasicBlock(MachineBasicBlock &MBB);
+  bool runOnMachineFunction(MachineFunction &F) override;
+
+  unsigned getVL(const MachineInstr &MI);
+  int getVLIndex(unsigned Opcode);
+};
+char LVLGen::ID = 0;
+
+} // end of anonymous namespace
+
+FunctionPass *llvm::createLVLGenPass() { return new LVLGen; }
+
+int LVLGen::getVLIndex(unsigned Opcode) {
+  const MCInstrDesc &MCID = TII->get(Opcode);
+
+  // If an instruction has VLIndex information, return it.
+  if (HAS_VLINDEX(MCID.TSFlags))
+    return GET_VLINDEX(MCID.TSFlags);
+
+  return -1;
+}
+
+// returns a register holding a vector length. NoRegister is returned when
+// this MI does not have a vector length.
+unsigned LVLGen::getVL(const MachineInstr &MI) {
+  int Index = getVLIndex(MI.getOpcode());
+  if (Index >= 0)
+    return MI.getOperand(Index).getReg();
+
+  return VE::NoRegister;
+}
+
+bool LVLGen::runOnMachineBasicBlock(MachineBasicBlock &MBB) {
+#define RegName(no)                                                            \
+  (MBB.getParent()->getSubtarget<VESubtarget>().getRegisterInfo()->getName(no))
+
+  bool Changed = false;
+  bool HasRegForVL = false;
+  unsigned RegForVL;
+
+  for (MachineBasicBlock::iterator I = MBB.begin(); I != MBB.end();) {
+    MachineBasicBlock::iterator MI = I;
+
+    unsigned Reg = getVL(*MI);
+    if (Reg != VE::NoRegister) {
+      LLVM_DEBUG(dbgs() << "Vector instruction found: ");
+      LLVM_DEBUG(MI->dump());
+      LLVM_DEBUG(dbgs() << "Vector length is " << RegName(Reg) << ". ");
+      LLVM_DEBUG(dbgs() << "Current VL is "
+                        << (HasRegForVL ? RegName(RegForVL) : "unknown")
+                        << ". ");
+
+      if (!HasRegForVL || RegForVL != Reg) {
+        LLVM_DEBUG(dbgs() << "Generate a LVL instruction to load "
+                          << RegName(Reg) << ".\n");
+        BuildMI(MBB, I, MI->getDebugLoc(), TII->get(VE::LVLr)).addReg(Reg);
+        HasRegForVL = true;
+        RegForVL = Reg;
+        Changed = true;
+      } else {
+        LLVM_DEBUG(dbgs() << "Reuse current VL.\n");
+      }
+    } else if (HasRegForVL) {
+      // Old VL is overwritten, so disable HasRegForVL.
+      if (MI->findRegisterDefOperandIdx(RegForVL, false, false, TRI) != -1) {
+        LLVM_DEBUG(dbgs() << RegName(RegForVL) << " is killed: ");
+        LLVM_DEBUG(MI->dump());
+        HasRegForVL = false;
+      }
+    }
+    if (HasRegForVL) {
+      // The latest VL is killed, so disable HasRegForVL.
+      if (MI->killsRegister(RegForVL, TRI)) {
+        LLVM_DEBUG(dbgs() << RegName(RegForVL) << " is killed: ");
+        LLVM_DEBUG(MI->dump());
+        HasRegForVL = false;
+      }
+    }
+
+    ++I;
+  }
+  return Changed;
+}
+
+bool LVLGen::runOnMachineFunction(MachineFunction &F) {
+  LLVM_DEBUG(dbgs() << "********** Begin LVLGen **********\n");
+  LLVM_DEBUG(dbgs() << "********** Function: " << F.getName() << '\n');
+  LLVM_DEBUG(F.dump());
+
+  bool Changed = false;
+
+  const VESubtarget &Subtarget = F.getSubtarget<VESubtarget>();
+  TII = Subtarget.getInstrInfo();
+  TRI = Subtarget.getRegisterInfo();
+
+  for (MachineFunction::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
+    Changed |= runOnMachineBasicBlock(*FI);
+
+  if (Changed) {
+    LLVM_DEBUG(dbgs() << "\n");
+    LLVM_DEBUG(F.dump());
+  }
+  LLVM_DEBUG(dbgs() << "********** End LVLGen **********\n");
+  return Changed;
+}

diff  --git a/llvm/lib/Target/VE/VE.h b/llvm/lib/Target/VE/VE.h
index 91086916999f..a404f7ced70a 100644
--- a/llvm/lib/Target/VE/VE.h
+++ b/llvm/lib/Target/VE/VE.h
@@ -29,6 +29,7 @@ class MachineInstr;
 
 FunctionPass *createVEISelDag(VETargetMachine &TM);
 FunctionPass *createVEPromoteToI1Pass();
+FunctionPass *createLVLGenPass();
 
 void LowerVEMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
                                  AsmPrinter &AP);

diff  --git a/llvm/lib/Target/VE/VETargetMachine.cpp b/llvm/lib/Target/VE/VETargetMachine.cpp
index 89f1b4d872fa..12c4f4628811 100644
--- a/llvm/lib/Target/VE/VETargetMachine.cpp
+++ b/llvm/lib/Target/VE/VETargetMachine.cpp
@@ -98,6 +98,7 @@ class VEPassConfig : public TargetPassConfig {
 
   void addIRPasses() override;
   bool addInstSelector() override;
+  void addPreEmitPass() override;
 };
 } // namespace
 
@@ -115,3 +116,8 @@ bool VEPassConfig::addInstSelector() {
   addPass(createVEISelDag(getVETargetMachine()));
   return false;
 }
+
+void VEPassConfig::addPreEmitPass() {
+  // LVLGen should be called after scheduling and register allocation
+  addPass(createLVLGenPass());
+}

diff  --git a/llvm/test/CodeGen/VE/VELIntrinsics/lvlgen.ll b/llvm/test/CodeGen/VE/VELIntrinsics/lvlgen.ll
new file mode 100644
index 000000000000..23141aa93792
--- /dev/null
+++ b/llvm/test/CodeGen/VE/VELIntrinsics/lvlgen.ll
@@ -0,0 +1,66 @@
+; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
+
+; Test for correct placement of 'lvl' instructions
+
+; Function Attrs: nounwind readonly
+declare <256 x double> @llvm.ve.vl.vld.vssl(i64, i8*, i32)
+declare void @llvm.ve.vl.vst.vssl(<256 x double>, i64, i8*, i32)
+
+; Check that the backend can handle constant VL as well as parametric VL
+; sources.
+
+; Function Attrs: nounwind
+define void @switching_vl(i32 %evl, i32 %evl2, i8* %P, i8* %Q) {
+; CHECK-LABEL: switching_vl:
+; CHECK:       .LBB{{[0-9]+}}_2:
+; CHECK-NEXT:    lea %s4, 256
+; CHECK-NEXT:    lvl %s4
+; CHECK-NEXT:    vld %v0, 8, %s2
+; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
+; CHECK-NEXT:    lvl %s0
+; CHECK-NEXT:    vst %v0, 16, %s3
+; CHECK-NEXT:    lea %s4, 128
+; CHECK-NEXT:    lvl %s4
+; CHECK-NEXT:    vld %v0, 16, %s2
+; CHECK-NEXT:    adds.w.sx %s1, %s1, (0)1
+; CHECK-NEXT:    lvl %s1
+; CHECK-NEXT:    vst %v0, 16, %s3
+; CHECK-NEXT:    lvl %s4
+; CHECK-NEXT:    vld %v0, 8, %s2
+; CHECK-NEXT:    lvl %s0
+; CHECK-NEXT:    vst %v0, 16, %s3
+; CHECK-NEXT:    or %s11, 0, %s9
+  %l0 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 8, i8* %P, i32 256)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l0, i64 16, i8* %Q, i32 %evl)
+  %l1 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 16, i8* %P, i32 128)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l1, i64 16, i8* %Q, i32 %evl2)
+  %l2 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 8, i8* %P, i32 128)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l2, i64 16, i8* %Q, i32 %evl)
+  ret void
+}
+
+; Check that no redundant 'lvl' is inserted when vector length does not change
+; in a basic block.
+
+
+; Function Attrs: nounwind
+define void @stable_vl(i32 %evl, i8* %P, i8* %Q) {
+; CHECK-LABEL: stable_vl:
+; CHECK:       .LBB{{[0-9]+}}_2:
+; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
+; CHECK-NEXT:    lvl %s0
+; CHECK-NEXT:    vld %v0, 8, %s1
+; CHECK-NEXT:    vst %v0, 16, %s2
+; CHECK-NEXT:    vld %v0, 16, %s1
+; CHECK-NEXT:    vst %v0, 16, %s2
+; CHECK-NEXT:    vld %v0, 8, %s1
+; CHECK-NEXT:    vst %v0, 16, %s2
+; CHECK-NEXT:    or %s11, 0, %s9
+  %l0 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 8, i8* %P, i32 %evl)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l0, i64 16, i8* %Q, i32 %evl)
+  %l1 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 16, i8* %P, i32 %evl)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l1, i64 16, i8* %Q, i32 %evl)
+  %l2 = tail call <256 x double> @llvm.ve.vl.vld.vssl(i64 8, i8* %P, i32 %evl)
+  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %l2, i64 16, i8* %Q, i32 %evl)
+  ret void
+}

diff  --git a/llvm/test/CodeGen/VE/VELIntrinsics/vld.ll b/llvm/test/CodeGen/VE/VELIntrinsics/vld.ll
index c57ec4338038..60099e37969e 100644
--- a/llvm/test/CodeGen/VE/VELIntrinsics/vld.ll
+++ b/llvm/test/CodeGen/VE/VELIntrinsics/vld.ll
@@ -10,6 +10,7 @@ define void @vld_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vld_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -28,6 +29,7 @@ define void @vld_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vld_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vld %v0, %s1, %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -48,6 +50,7 @@ define void @vld_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vld_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -63,6 +66,7 @@ define void @vld_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vld_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, 8, %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -80,6 +84,7 @@ define void @vldnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -98,6 +103,7 @@ define void @vldnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vld.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vld.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -118,6 +124,7 @@ define void @vldnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -133,6 +140,7 @@ define void @vldnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld.nc %v0, 8, %s1
 ; CHECK-NEXT:    vld.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -150,6 +158,7 @@ define void @vldu_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldu_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -168,6 +177,7 @@ define void @vldu_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldu_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldu %v0, %s1, %s2
 ; CHECK-NEXT:    vldu %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -188,6 +198,7 @@ define void @vldu_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldu_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldu %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -203,6 +214,7 @@ define void @vldu_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldu_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu %v0, 8, %s1
 ; CHECK-NEXT:    vldu %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -220,6 +232,7 @@ define void @vldunc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldunc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -238,6 +251,7 @@ define void @vldunc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldunc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldu.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldu.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -258,6 +272,7 @@ define void @vldunc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldunc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldu.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -273,6 +288,7 @@ define void @vldunc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldunc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldu.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -290,6 +306,7 @@ define void @vldlsx_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldlsx_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.sx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -308,6 +325,7 @@ define void @vldlsx_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldlsx_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl.sx %v0, %s1, %s2
 ; CHECK-NEXT:    vldl.sx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -328,6 +346,7 @@ define void @vldlsx_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldlsx_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl.sx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -343,6 +362,7 @@ define void @vldlsx_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldlsx_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.sx %v0, 8, %s1
 ; CHECK-NEXT:    vldl.sx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -360,6 +380,7 @@ define void @vldlsxnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldlsxnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.sx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -378,6 +399,7 @@ define void @vldlsxnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldlsxnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl.sx.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldl.sx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -398,6 +420,7 @@ define void @vldlsxnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldlsxnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl.sx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -413,6 +436,7 @@ define void @vldlsxnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldlsxnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.sx.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldl.sx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -430,6 +454,7 @@ define void @vldlzx_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldlzx_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.zx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -448,6 +473,7 @@ define void @vldlzx_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldlzx_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl.zx %v0, %s1, %s2
 ; CHECK-NEXT:    vldl.zx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -468,6 +494,7 @@ define void @vldlzx_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldlzx_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl.zx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -483,6 +510,7 @@ define void @vldlzx_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldlzx_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.zx %v0, 8, %s1
 ; CHECK-NEXT:    vldl.zx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -500,6 +528,7 @@ define void @vldlzxnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldlzxnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.zx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -518,6 +547,7 @@ define void @vldlzxnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldlzxnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl.zx.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldl.zx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -538,6 +568,7 @@ define void @vldlzxnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldlzxnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl.zx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -553,6 +584,7 @@ define void @vldlzxnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldlzxnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl.zx.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldl.zx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -570,6 +602,7 @@ define void @vld2d_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vld2d_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld2d %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -588,6 +621,7 @@ define void @vld2d_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vld2d_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vld2d %v0, %s1, %s2
 ; CHECK-NEXT:    vld2d %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -608,6 +642,7 @@ define void @vld2d_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vld2d_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld2d %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -623,6 +658,7 @@ define void @vld2d_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vld2d_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld2d %v0, 8, %s1
 ; CHECK-NEXT:    vld2d %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -640,6 +676,7 @@ define void @vld2dnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vld2dnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -658,6 +695,7 @@ define void @vld2dnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vld2dnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vld2d.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vld2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -678,6 +716,7 @@ define void @vld2dnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vld2dnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -693,6 +732,7 @@ define void @vld2dnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vld2dnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld2d.nc %v0, 8, %s1
 ; CHECK-NEXT:    vld2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -710,6 +750,7 @@ define void @vldu2d_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldu2d_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu2d %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -728,6 +769,7 @@ define void @vldu2d_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldu2d_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldu2d %v0, %s1, %s2
 ; CHECK-NEXT:    vldu2d %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -748,6 +790,7 @@ define void @vldu2d_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldu2d_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldu2d %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -763,6 +806,7 @@ define void @vldu2d_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldu2d_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu2d %v0, 8, %s1
 ; CHECK-NEXT:    vldu2d %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -780,6 +824,7 @@ define void @vldu2dnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldu2dnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -798,6 +843,7 @@ define void @vldu2dnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldu2dnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldu2d.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldu2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -818,6 +864,7 @@ define void @vldu2dnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldu2dnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldu2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -833,6 +880,7 @@ define void @vldu2dnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldu2dnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldu2d.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldu2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -850,6 +898,7 @@ define void @vldl2dsx_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldl2dsx_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.sx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -868,6 +917,7 @@ define void @vldl2dsx_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldl2dsx_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl2d.sx %v0, %s1, %s2
 ; CHECK-NEXT:    vldl2d.sx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -888,6 +938,7 @@ define void @vldl2dsx_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldl2dsx_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl2d.sx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -903,6 +954,7 @@ define void @vldl2dsx_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldl2dsx_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.sx %v0, 8, %s1
 ; CHECK-NEXT:    vldl2d.sx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -920,6 +972,7 @@ define void @vldl2dsxnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldl2dsxnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -938,6 +991,7 @@ define void @vldl2dsxnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldl2dsxnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -958,6 +1012,7 @@ define void @vldl2dsxnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldl2dsxnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -973,6 +1028,7 @@ define void @vldl2dsxnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldl2dsxnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldl2d.sx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -990,6 +1046,7 @@ define void @vldl2dzx_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldl2dzx_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.zx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -1008,6 +1065,7 @@ define void @vldl2dzx_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldl2dzx_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl2d.zx %v0, %s1, %s2
 ; CHECK-NEXT:    vldl2d.zx %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -1028,6 +1086,7 @@ define void @vldl2dzx_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldl2dzx_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl2d.zx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -1043,6 +1102,7 @@ define void @vldl2dzx_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldl2dzx_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.zx %v0, 8, %s1
 ; CHECK-NEXT:    vldl2d.zx %v0, 8, %s0
 ; CHECK-NEXT:    #APP
@@ -1060,6 +1120,7 @@ define void @vldl2dzxnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vldl2dzxnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, %s1, %s0
@@ -1078,6 +1139,7 @@ define void @vldl2dzxnc_vssvl(i8* %0, i64 %1, i8* %2) {
 ; CHECK-LABEL: vldl2dzxnc_vssvl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s3, 256
+; CHECK-NEXT:    lvl %s3
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, %s1, %s2
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, %s1, %s0
 ; CHECK-NEXT:    #APP
@@ -1098,6 +1160,7 @@ define void @vldl2dzxnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vldl2dzxnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP
 ; CHECK-NEXT:    vst %v0, 8, %s0
@@ -1113,6 +1176,7 @@ define void @vldl2dzxnc_vssvl_imm(i8* %0, i8* %1) {
 ; CHECK-LABEL: vldl2dzxnc_vssvl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, 8, %s1
 ; CHECK-NEXT:    vldl2d.zx.nc %v0, 8, %s0
 ; CHECK-NEXT:    #APP

diff  --git a/llvm/test/CodeGen/VE/VELIntrinsics/vst.ll b/llvm/test/CodeGen/VE/VELIntrinsics/vst.ll
index ae895ac86653..6ac2894ca7a3 100644
--- a/llvm/test/CodeGen/VE/VELIntrinsics/vst.ll
+++ b/llvm/test/CodeGen/VE/VELIntrinsics/vst.ll
@@ -10,6 +10,7 @@ define void @vst_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -29,6 +30,7 @@ define void @vst_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -45,6 +47,7 @@ define void @vst_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vst_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -58,6 +61,7 @@ define void @vst_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vst_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -71,6 +75,7 @@ define void @vstnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -87,6 +92,7 @@ define void @vstnc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstnc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -103,6 +109,7 @@ define void @vstnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -116,6 +123,7 @@ define void @vstnc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstnc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -129,6 +137,7 @@ define void @vstot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -145,6 +154,7 @@ define void @vstot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -161,6 +171,7 @@ define void @vstot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -174,6 +185,7 @@ define void @vstot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -187,6 +199,7 @@ define void @vstncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -203,6 +216,7 @@ define void @vstncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -219,6 +233,7 @@ define void @vstncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -232,6 +247,7 @@ define void @vstncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -245,6 +261,7 @@ define void @vstu_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -261,6 +278,7 @@ define void @vstu_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -277,6 +295,7 @@ define void @vstu_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstu_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -290,6 +309,7 @@ define void @vstu_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstu_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -303,6 +323,7 @@ define void @vstunc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstunc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -319,6 +340,7 @@ define void @vstunc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstunc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -335,6 +357,7 @@ define void @vstunc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstunc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -348,6 +371,7 @@ define void @vstunc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstunc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -361,6 +385,7 @@ define void @vstuot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstuot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -377,6 +402,7 @@ define void @vstuot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstuot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -393,6 +419,7 @@ define void @vstuot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstuot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -406,6 +433,7 @@ define void @vstuot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstuot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -419,6 +447,7 @@ define void @vstuncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstuncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -435,6 +464,7 @@ define void @vstuncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstuncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -451,6 +481,7 @@ define void @vstuncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstuncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -464,6 +495,7 @@ define void @vstuncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstuncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -477,6 +509,7 @@ define void @vstl_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -493,6 +526,7 @@ define void @vstl_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -509,6 +543,7 @@ define void @vstl_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstl_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -522,6 +557,7 @@ define void @vstl_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstl_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -535,6 +571,7 @@ define void @vstlnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -551,6 +588,7 @@ define void @vstlnc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlnc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -567,6 +605,7 @@ define void @vstlnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstlnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -580,6 +619,7 @@ define void @vstlnc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstlnc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -593,6 +633,7 @@ define void @vstlot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -609,6 +650,7 @@ define void @vstlot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -625,6 +667,7 @@ define void @vstlot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstlot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -638,6 +681,7 @@ define void @vstlot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstlot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -651,6 +695,7 @@ define void @vstlncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -667,6 +712,7 @@ define void @vstlncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstlncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -683,6 +729,7 @@ define void @vstlncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstlncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -696,6 +743,7 @@ define void @vstlncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstlncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -709,6 +757,7 @@ define void @vst2d_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2d_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -725,6 +774,7 @@ define void @vst2d_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2d_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -741,6 +791,7 @@ define void @vst2d_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vst2d_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -754,6 +805,7 @@ define void @vst2d_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vst2d_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -767,6 +819,7 @@ define void @vst2dnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -783,6 +836,7 @@ define void @vst2dnc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dnc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -799,6 +853,7 @@ define void @vst2dnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vst2dnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -812,6 +867,7 @@ define void @vst2dnc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vst2dnc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -825,6 +881,7 @@ define void @vst2dot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -841,6 +898,7 @@ define void @vst2dot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -857,6 +915,7 @@ define void @vst2dot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vst2dot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -870,6 +929,7 @@ define void @vst2dot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vst2dot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -883,6 +943,7 @@ define void @vst2dncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -899,6 +960,7 @@ define void @vst2dncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vst2dncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vst2d.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -915,6 +977,7 @@ define void @vst2dncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vst2dncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -928,6 +991,7 @@ define void @vst2dncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vst2dncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vst2d.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -941,6 +1005,7 @@ define void @vstu2d_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2d_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -957,6 +1022,7 @@ define void @vstu2d_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2d_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -973,6 +1039,7 @@ define void @vstu2d_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstu2d_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -986,6 +1053,7 @@ define void @vstu2d_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstu2d_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -999,6 +1067,7 @@ define void @vstu2dnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1015,6 +1084,7 @@ define void @vstu2dnc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dnc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1031,6 +1101,7 @@ define void @vstu2dnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1044,6 +1115,7 @@ define void @vstu2dnc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dnc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1057,6 +1129,7 @@ define void @vstu2dot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1073,6 +1146,7 @@ define void @vstu2dot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1089,6 +1163,7 @@ define void @vstu2dot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1102,6 +1177,7 @@ define void @vstu2dot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1115,6 +1191,7 @@ define void @vstu2dncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1131,6 +1208,7 @@ define void @vstu2dncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstu2dncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstu2d.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1147,6 +1225,7 @@ define void @vstu2dncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1160,6 +1239,7 @@ define void @vstu2dncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstu2dncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstu2d.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1173,6 +1253,7 @@ define void @vstl2d_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2d_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1189,6 +1270,7 @@ define void @vstl2d_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2d_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1205,6 +1287,7 @@ define void @vstl2d_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstl2d_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1218,6 +1301,7 @@ define void @vstl2d_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstl2d_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1231,6 +1315,7 @@ define void @vstl2dnc_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dnc_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.nc %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1247,6 +1332,7 @@ define void @vstl2dnc_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dnc_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.nc %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1263,6 +1349,7 @@ define void @vstl2dnc_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dnc_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.nc %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1276,6 +1363,7 @@ define void @vstl2dnc_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dnc_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.nc %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1289,6 +1377,7 @@ define void @vstl2dot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1305,6 +1394,7 @@ define void @vstl2dot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1321,6 +1411,7 @@ define void @vstl2dot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1334,6 +1425,7 @@ define void @vstl2dot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1347,6 +1439,7 @@ define void @vstl2dncot_vssl(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dncot_vssl:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.nc.ot %v0, %s1, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1363,6 +1456,7 @@ define void @vstl2dncot_vssml(i8* %0, i64 %1) {
 ; CHECK-LABEL: vstl2dncot_vssml:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s2, 256
+; CHECK-NEXT:    lvl %s2
 ; CHECK-NEXT:    vld %v0, %s1, %s0
 ; CHECK-NEXT:    vstl2d.nc.ot %v0, %s1, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1379,6 +1473,7 @@ define void @vstl2dncot_vssl_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dncot_vssl_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.nc.ot %v0, 8, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -1392,6 +1487,7 @@ define void @vstl2dncot_vssml_imm(i8* %0) {
 ; CHECK-LABEL: vstl2dncot_vssml_imm:
 ; CHECK:       .LBB{{[0-9]+}}_2:
 ; CHECK-NEXT:    lea %s1, 256
+; CHECK-NEXT:    lvl %s1
 ; CHECK-NEXT:    vld %v0, 8, %s0
 ; CHECK-NEXT:    vstl2d.nc.ot %v0, 8, %s0, %vm0
 ; CHECK-NEXT:    or %s11, 0, %s9


        


More information about the llvm-commits mailing list