mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[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
This commit is contained in:
parent
55b8c19420
commit
4b7f9fd6c6
@ -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
|
||||
|
132
lib/Target/VE/LVLGen.cpp
Normal file
132
lib/Target/VE/LVLGen.cpp
Normal file
@ -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;
|
||||
}
|
@ -29,6 +29,7 @@ class MachineInstr;
|
||||
|
||||
FunctionPass *createVEISelDag(VETargetMachine &TM);
|
||||
FunctionPass *createVEPromoteToI1Pass();
|
||||
FunctionPass *createLVLGenPass();
|
||||
|
||||
void LowerVEMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
|
||||
AsmPrinter &AP);
|
||||
|
@ -98,6 +98,7 @@ public:
|
||||
|
||||
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());
|
||||
}
|
||||
|
66
test/CodeGen/VE/VELIntrinsics/lvlgen.ll
Normal file
66
test/CodeGen/VE/VELIntrinsics/lvlgen.ll
Normal file
@ -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
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user