summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Support/Host.cpp24
-rw-r--r--llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp124
-rw-r--r--llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp82
-rw-r--r--llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp89
-rw-r--r--llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h5
-rw-r--r--llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp14
-rw-r--r--llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp40
-rw-r--r--llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h3
-rw-r--r--llvm/lib/Target/SystemZ/SystemZ.td1
-rw-r--r--llvm/lib/Target/SystemZ/SystemZInstrFormats.td824
-rw-r--r--llvm/lib/Target/SystemZ/SystemZInstrVector.td751
-rw-r--r--llvm/lib/Target/SystemZ/SystemZOperands.td74
-rw-r--r--llvm/lib/Target/SystemZ/SystemZProcessors.td12
-rw-r--r--llvm/lib/Target/SystemZ/SystemZRegisterInfo.td143
-rw-r--r--llvm/lib/Target/SystemZ/SystemZSubtarget.cpp1
-rw-r--r--llvm/lib/Target/SystemZ/SystemZSubtarget.h4
-rw-r--r--llvm/test/MC/Disassembler/SystemZ/insns-z13-bad.txt39
-rw-r--r--llvm/test/MC/Disassembler/SystemZ/insns-z13.txt3315
-rw-r--r--llvm/test/MC/SystemZ/insn-bad-z13.s1201
-rw-r--r--llvm/test/MC/SystemZ/insn-bad-zEC12.s1494
-rw-r--r--llvm/test/MC/SystemZ/insn-good-z13.s5039
-rw-r--r--llvm/test/MC/SystemZ/tokens.s20
22 files changed, 13182 insertions, 117 deletions
diff --git a/llvm/lib/Support/Host.cpp b/llvm/lib/Support/Host.cpp
index 726961a2321..1bd1fe2bea0 100644
--- a/llvm/lib/Support/Host.cpp
+++ b/llvm/lib/Support/Host.cpp
@@ -682,6 +682,28 @@ StringRef sys::getHostCPUName() {
StringRef Str(buffer, CPUInfoSize);
SmallVector<StringRef, 32> Lines;
Str.split(Lines, "\n");
+
+ // Look for the CPU features.
+ SmallVector<StringRef, 32> CPUFeatures;
+ for (unsigned I = 0, E = Lines.size(); I != E; ++I)
+ if (Lines[I].startswith("features")) {
+ size_t Pos = Lines[I].find(":");
+ if (Pos != StringRef::npos) {
+ Lines[I].drop_front(Pos + 1).split(CPUFeatures, " ");
+ break;
+ }
+ }
+
+ // We need to check for the presence of vector support independently of
+ // the machine type, since we may only use the vector register set when
+ // supported by the kernel (and hypervisor).
+ bool HaveVectorSupport = false;
+ for (unsigned I = 0, E = CPUFeatures.size(); I != E; ++I) {
+ if (CPUFeatures[I] == "vx")
+ HaveVectorSupport = true;
+ }
+
+ // Now check the processor machine type.
for (unsigned I = 0, E = Lines.size(); I != E; ++I) {
if (Lines[I].startswith("processor ")) {
size_t Pos = Lines[I].find("machine = ");
@@ -689,6 +711,8 @@ StringRef sys::getHostCPUName() {
Pos += sizeof("machine = ") - 1;
unsigned int Id;
if (!Lines[I].drop_front(Pos).getAsInteger(10, Id)) {
+ if (Id >= 2964 && HaveVectorSupport)
+ return "z13";
if (Id >= 2827)
return "zEC12";
if (Id >= 2817)
diff --git a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
index ec6a57388bc..0d003596be2 100644
--- a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
+++ b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
@@ -39,13 +39,17 @@ enum RegisterKind {
ADDR64Reg,
FP32Reg,
FP64Reg,
- FP128Reg
+ FP128Reg,
+ VR32Reg,
+ VR64Reg,
+ VR128Reg
};
enum MemoryKind {
BDMem,
BDXMem,
- BDLMem
+ BDLMem,
+ BDVMem
};
class SystemZOperand : public MCParsedAsmOperand {
@@ -89,10 +93,10 @@ private:
// the base register has (ADDR32Reg or ADDR64Reg). Length is the operand
// length for D(L,B)-style operands, otherwise it is null.
struct MemOp {
- unsigned Base : 8;
- unsigned Index : 8;
- unsigned MemKind : 8;
- unsigned RegKind : 8;
+ unsigned Base : 12;
+ unsigned Index : 12;
+ unsigned MemKind : 4;
+ unsigned RegKind : 4;
const MCExpr *Disp;
const MCExpr *Length;
};
@@ -246,6 +250,13 @@ public:
bool isMemDisp12Len8(RegisterKind RegKind) const {
return isMemDisp12(BDLMem, RegKind) && inRange(Mem.Length, 1, 0x100);
}
+ void addBDVAddrOperands(MCInst &Inst, unsigned N) const {
+ assert(N == 3 && "Invalid number of operands");
+ assert(isMem(BDVMem) && "Invalid operand type");
+ Inst.addOperand(MCOperand::CreateReg(Mem.Base));
+ addExpr(Inst, Mem.Disp);
+ Inst.addOperand(MCOperand::CreateReg(Mem.Index));
+ }
// Override MCParsedAsmOperand.
SMLoc getStartLoc() const override { return StartLoc; }
@@ -307,6 +318,10 @@ public:
bool isFP32() const { return isReg(FP32Reg); }
bool isFP64() const { return isReg(FP64Reg); }
bool isFP128() const { return isReg(FP128Reg); }
+ bool isVR32() const { return isReg(VR32Reg); }
+ bool isVR64() const { return isReg(VR64Reg); }
+ bool isVF128() const { return false; }
+ bool isVR128() const { return isReg(VR128Reg); }
bool isBDAddr32Disp12() const { return isMemDisp12(BDMem, ADDR32Reg); }
bool isBDAddr32Disp20() const { return isMemDisp20(BDMem, ADDR32Reg); }
bool isBDAddr64Disp12() const { return isMemDisp12(BDMem, ADDR64Reg); }
@@ -314,10 +329,15 @@ public:
bool isBDXAddr64Disp12() const { return isMemDisp12(BDXMem, ADDR64Reg); }
bool isBDXAddr64Disp20() const { return isMemDisp20(BDXMem, ADDR64Reg); }
bool isBDLAddr64Disp12Len8() const { return isMemDisp12Len8(ADDR64Reg); }
+ bool isBDVAddr64Disp12() const { return isMemDisp12(BDVMem, ADDR64Reg); }
+ bool isU1Imm() const { return isImm(0, 1); }
+ bool isU2Imm() const { return isImm(0, 3); }
+ bool isU3Imm() const { return isImm(0, 7); }
bool isU4Imm() const { return isImm(0, 15); }
bool isU6Imm() const { return isImm(0, 63); }
bool isU8Imm() const { return isImm(0, 255); }
bool isS8Imm() const { return isImm(-128, 127); }
+ bool isU12Imm() const { return isImm(0, 4095); }
bool isU16Imm() const { return isImm(0, 65535); }
bool isS16Imm() const { return isImm(-32768, 32767); }
bool isU32Imm() const { return isImm(0, (1LL << 32) - 1); }
@@ -334,6 +354,7 @@ private:
enum RegisterGroup {
RegGR,
RegFP,
+ RegV,
RegAccess
};
struct Register {
@@ -352,7 +373,7 @@ private:
RegisterKind Kind);
bool parseAddress(unsigned &Base, const MCExpr *&Disp,
- unsigned &Index, const MCExpr *&Length,
+ unsigned &Index, bool &IsVector, const MCExpr *&Length,
const unsigned *Regs, RegisterKind RegKind);
OperandMatchResultTy parseAddress(OperandVector &Operands,
@@ -419,6 +440,18 @@ public:
OperandMatchResultTy parseFP128(OperandVector &Operands) {
return parseRegister(Operands, RegFP, SystemZMC::FP128Regs, FP128Reg);
}
+ OperandMatchResultTy parseVR32(OperandVector &Operands) {
+ return parseRegister(Operands, RegV, SystemZMC::VR32Regs, VR32Reg);
+ }
+ OperandMatchResultTy parseVR64(OperandVector &Operands) {
+ return parseRegister(Operands, RegV, SystemZMC::VR64Regs, VR64Reg);
+ }
+ OperandMatchResultTy parseVF128(OperandVector &Operands) {
+ llvm_unreachable("Shouldn't be used as an operand");
+ }
+ OperandMatchResultTy parseVR128(OperandVector &Operands) {
+ return parseRegister(Operands, RegV, SystemZMC::VR128Regs, VR128Reg);
+ }
OperandMatchResultTy parseBDAddr32(OperandVector &Operands) {
return parseAddress(Operands, BDMem, SystemZMC::GR32Regs, ADDR32Reg);
}
@@ -431,6 +464,9 @@ public:
OperandMatchResultTy parseBDLAddr64(OperandVector &Operands) {
return parseAddress(Operands, BDLMem, SystemZMC::GR64Regs, ADDR64Reg);
}
+ OperandMatchResultTy parseBDVAddr64(OperandVector &Operands) {
+ return parseAddress(Operands, BDVMem, SystemZMC::GR64Regs, ADDR64Reg);
+ }
OperandMatchResultTy parseAccessReg(OperandVector &Operands);
OperandMatchResultTy parsePCRel16(OperandVector &Operands) {
return parsePCRel(Operands, -(1LL << 16), (1LL << 16) - 1, false);
@@ -484,6 +520,8 @@ bool SystemZAsmParser::parseRegister(Register &Reg) {
Reg.Group = RegGR;
else if (Prefix == 'f' && Reg.Num < 16)
Reg.Group = RegFP;
+ else if (Prefix == 'v' && Reg.Num < 32)
+ Reg.Group = RegV;
else if (Prefix == 'a' && Reg.Num < 16)
Reg.Group = RegAccess;
else
@@ -534,8 +572,8 @@ SystemZAsmParser::parseRegister(OperandVector &Operands, RegisterGroup Group,
// Regs maps asm register numbers to LLVM register numbers and RegKind
// says what kind of address register we're using (ADDR32Reg or ADDR64Reg).
bool SystemZAsmParser::parseAddress(unsigned &Base, const MCExpr *&Disp,
- unsigned &Index, const MCExpr *&Length,
- const unsigned *Regs,
+ unsigned &Index, bool &IsVector,
+ const MCExpr *&Length, const unsigned *Regs,
RegisterKind RegKind) {
// Parse the displacement, which must always be present.
if (getParser().parseExpression(Disp))
@@ -544,6 +582,7 @@ bool SystemZAsmParser::parseAddress(unsigned &Base, const MCExpr *&Disp,
// Parse the optional base and index.
Index = 0;
Base = 0;
+ IsVector = false;
Length = nullptr;
if (getLexer().is(AsmToken::LParen)) {
Parser.Lex();
@@ -551,12 +590,23 @@ bool SystemZAsmParser::parseAddress(unsigned &Base, const MCExpr *&Disp,
if (getLexer().is(AsmToken::Percent)) {
// Parse the first register and decide whether it's a base or an index.
Register Reg;
- if (parseRegister(Reg, RegGR, Regs, RegKind))
+ if (parseRegister(Reg))
return true;
- if (getLexer().is(AsmToken::Comma))
- Index = Reg.Num;
- else
- Base = Reg.Num;
+ if (Reg.Group == RegV) {
+ // A vector index register. The base register is optional.
+ IsVector = true;
+ Index = SystemZMC::VR128Regs[Reg.Num];
+ } else if (Reg.Group == RegGR) {
+ if (Reg.Num == 0)
+ return Error(Reg.StartLoc, "%r0 used in an address");
+ // If the are two registers, the first one is the index and the
+ // second is the base.
+ if (getLexer().is(AsmToken::Comma))
+ Index = Regs[Reg.Num];
+ else
+ Base = Regs[Reg.Num];
+ } else
+ return Error(Reg.StartLoc, "invalid address register");
} else {
// Parse the length.
if (getParser().parseExpression(Length))
@@ -587,28 +637,36 @@ SystemZAsmParser::parseAddress(OperandVector &Operands, MemoryKind MemKind,
const unsigned *Regs, RegisterKind RegKind) {
SMLoc StartLoc = Parser.getTok().getLoc();
unsigned Base, Index;
+ bool IsVector;
const MCExpr *Disp;
const MCExpr *Length;
- if (parseAddress(Base, Disp, Index, Length, Regs, RegKind))
+ if (parseAddress(Base, Disp, Index, IsVector, Length, Regs, RegKind))
return MatchOperand_ParseFail;
- if (Index && MemKind != BDXMem)
- {
- Error(StartLoc, "invalid use of indexed addressing");
- return MatchOperand_ParseFail;
- }
+ if (IsVector && MemKind != BDVMem) {
+ Error(StartLoc, "invalid use of vector addressing");
+ return MatchOperand_ParseFail;
+ }
- if (Length && MemKind != BDLMem)
- {
- Error(StartLoc, "invalid use of length addressing");
- return MatchOperand_ParseFail;
- }
+ if (!IsVector && MemKind == BDVMem) {
+ Error(StartLoc, "vector index required in address");
+ return MatchOperand_ParseFail;
+ }
- if (!Length && MemKind == BDLMem)
- {
- Error(StartLoc, "missing length in address");
- return MatchOperand_ParseFail;
- }
+ if (Index && MemKind != BDXMem && MemKind != BDVMem) {
+ Error(StartLoc, "invalid use of indexed addressing");
+ return MatchOperand_ParseFail;
+ }
+
+ if (Length && MemKind != BDLMem) {
+ Error(StartLoc, "invalid use of length addressing");
+ return MatchOperand_ParseFail;
+ }
+
+ if (!Length && MemKind == BDLMem) {
+ Error(StartLoc, "missing length in address");
+ return MatchOperand_ParseFail;
+ }
SMLoc EndLoc =
SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
@@ -631,6 +689,8 @@ bool SystemZAsmParser::ParseRegister(unsigned &RegNo, SMLoc &StartLoc,
RegNo = SystemZMC::GR64Regs[Reg.Num];
else if (Reg.Group == RegFP)
RegNo = SystemZMC::FP64Regs[Reg.Num];
+ else if (Reg.Group == RegV)
+ RegNo = SystemZMC::VR128Regs[Reg.Num];
else
// FIXME: Access registers aren't modelled as LLVM registers yet.
return Error(Reg.StartLoc, "invalid operand for instruction");
@@ -703,8 +763,10 @@ bool SystemZAsmParser::parseOperand(OperandVector &Operands,
// so we treat any plain expression as an immediate.
SMLoc StartLoc = Parser.getTok().getLoc();
unsigned Base, Index;
+ bool IsVector;
const MCExpr *Expr, *Length;
- if (parseAddress(Base, Expr, Index, Length, SystemZMC::GR64Regs, ADDR64Reg))
+ if (parseAddress(Base, Expr, Index, IsVector, Length, SystemZMC::GR64Regs,
+ ADDR64Reg))
return true;
SMLoc EndLoc =
diff --git a/llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp b/llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
index 84400f828cb..c898e9d5ecf 100644
--- a/llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
+++ b/llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
@@ -47,8 +47,8 @@ extern "C" void LLVMInitializeSystemZDisassembler() {
}
static DecodeStatus decodeRegisterClass(MCInst &Inst, uint64_t RegNo,
- const unsigned *Regs) {
- assert(RegNo < 16 && "Invalid register");
+ const unsigned *Regs, unsigned Size) {
+ assert(RegNo < Size && "Invalid register");
RegNo = Regs[RegNo];
if (RegNo == 0)
return MCDisassembler::Fail;
@@ -59,61 +59,81 @@ static DecodeStatus decodeRegisterClass(MCInst &Inst, uint64_t RegNo,
static DecodeStatus DecodeGR32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::GR32Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR32Regs, 16);
}
static DecodeStatus DecodeGRH32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::GRH32Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GRH32Regs, 16);
}
static DecodeStatus DecodeGR64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs, 16);
}
static DecodeStatus DecodeGR128BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::GR128Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR128Regs, 16);
}
static DecodeStatus DecodeADDR64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs, 16);
}
static DecodeStatus DecodeFP32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::FP32Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP32Regs, 16);
}
static DecodeStatus DecodeFP64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::FP64Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP64Regs, 16);
}
static DecodeStatus DecodeFP128BitRegisterClass(MCInst &Inst, uint64_t RegNo,
uint64_t Address,
const void *Decoder) {
- return decodeRegisterClass(Inst, RegNo, SystemZMC::FP128Regs);
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP128Regs, 16);
+}
+
+static DecodeStatus DecodeVR32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::VR32Regs, 32);
+}
+
+static DecodeStatus DecodeVR64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::VR64Regs, 32);
+}
+
+static DecodeStatus DecodeVR128BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::VR128Regs, 32);
}
template<unsigned N>
static DecodeStatus decodeUImmOperand(MCInst &Inst, uint64_t Imm) {
- assert(isUInt<N>(Imm) && "Invalid immediate");
+ if (!isUInt<N>(Imm))
+ return MCDisassembler::Fail;
Inst.addOperand(MCOperand::CreateImm(Imm));
return MCDisassembler::Success;
}
template<unsigned N>
static DecodeStatus decodeSImmOperand(MCInst &Inst, uint64_t Imm) {
- assert(isUInt<N>(Imm) && "Invalid immediate");
+ if (!isUInt<N>(Imm))
+ return MCDisassembler::Fail;
Inst.addOperand(MCOperand::CreateImm(SignExtend64<N>(Imm)));
return MCDisassembler::Success;
}
@@ -124,6 +144,21 @@ static DecodeStatus decodeAccessRegOperand(MCInst &Inst, uint64_t Imm,
return decodeUImmOperand<4>(Inst, Imm);
}
+static DecodeStatus decodeU1ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<1>(Inst, Imm);
+}
+
+static DecodeStatus decodeU2ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<2>(Inst, Imm);
+}
+
+static DecodeStatus decodeU3ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<3>(Inst, Imm);
+}
+
static DecodeStatus decodeU4ImmOperand(MCInst &Inst, uint64_t Imm,
uint64_t Address, const void *Decoder) {
return decodeUImmOperand<4>(Inst, Imm);
@@ -139,6 +174,11 @@ static DecodeStatus decodeU8ImmOperand(MCInst &Inst, uint64_t Imm,
return decodeUImmOperand<8>(Inst, Imm);
}
+static DecodeStatus decodeU12ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<12>(Inst, Imm);
+}
+
static DecodeStatus decodeU16ImmOperand(MCInst &Inst, uint64_t Imm,
uint64_t Address, const void *Decoder) {
return decodeUImmOperand<16>(Inst, Imm);
@@ -240,6 +280,18 @@ static DecodeStatus decodeBDLAddr12Len8Operand(MCInst &Inst, uint64_t Field,
return MCDisassembler::Success;
}
+static DecodeStatus decodeBDVAddr12Operand(MCInst &Inst, uint64_t Field,
+ const unsigned *Regs) {
+ uint64_t Index = Field >> 16;
+ uint64_t Base = (Field >> 12) & 0xf;
+ uint64_t Disp = Field & 0xfff;
+ assert(Index < 32 && "Invalid BDVAddr12");
+ Inst.addOperand(MCOperand::CreateReg(Base == 0 ? 0 : Regs[Base]));
+ Inst.addOperand(MCOperand::CreateImm(Disp));
+ Inst.addOperand(MCOperand::CreateReg(SystemZMC::VR128Regs[Index]));
+ return MCDisassembler::Success;
+}
+
static DecodeStatus decodeBDAddr32Disp12Operand(MCInst &Inst, uint64_t Field,
uint64_t Address,
const void *Decoder) {
@@ -283,6 +335,12 @@ static DecodeStatus decodeBDLAddr64Disp12Len8Operand(MCInst &Inst,
return decodeBDLAddr12Len8Operand(Inst, Field, SystemZMC::GR64Regs);
}
+static DecodeStatus decodeBDVAddr64Disp12Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDVAddr12Operand(Inst, Field, SystemZMC::GR64Regs);
+}
+
#include "SystemZGenDisassemblerTables.inc"
DecodeStatus SystemZDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
diff --git a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
index cf1ee54df38..02bd47d07f7 100644
--- a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
+++ b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
@@ -22,13 +22,17 @@ using namespace llvm;
void SystemZInstPrinter::printAddress(unsigned Base, int64_t Disp,
unsigned Index, raw_ostream &O) {
O << Disp;
- if (Base) {
+ if (Base || Index) {
O << '(';
- if (Index)
- O << '%' << getRegisterName(Index) << ',';
- O << '%' << getRegisterName(Base) << ')';
- } else
- assert(!Index && "Shouldn't have an index without a base");
+ if (Index) {
+ O << '%' << getRegisterName(Index);
+ if (Base)
+ O << ',';
+ }
+ if (Base)
+ O << '%' << getRegisterName(Base);
+ O << ')';
+ }
}
void SystemZInstPrinter::printOperand(const MCOperand &MO, raw_ostream &O) {
@@ -53,60 +57,78 @@ void SystemZInstPrinter::printRegName(raw_ostream &O, unsigned RegNo) const {
O << '%' << getRegisterName(RegNo);
}
-void SystemZInstPrinter::printU4ImmOperand(const MCInst *MI, int OpNum,
- raw_ostream &O) {
+template<unsigned N>
+void printUImmOperand(const MCInst *MI, int OpNum, raw_ostream &O) {
int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isUInt<4>(Value) && "Invalid u4imm argument");
+ assert(isUInt<N>(Value) && "Invalid uimm argument");
O << Value;
}
-void SystemZInstPrinter::printU6ImmOperand(const MCInst *MI, int OpNum,
- raw_ostream &O) {
+template<unsigned N>
+void printSImmOperand(const MCInst *MI, int OpNum, raw_ostream &O) {
int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isUInt<6>(Value) && "Invalid u6imm argument");
+ assert(isInt<N>(Value) && "Invalid simm argument");
O << Value;
}
+void SystemZInstPrinter::printU1ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<1>(MI, OpNum, O);
+}
+
+void SystemZInstPrinter::printU2ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<2>(MI, OpNum, O);
+}
+
+void SystemZInstPrinter::printU3ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<3>(MI, OpNum, O);
+}
+
+void SystemZInstPrinter::printU4ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<4>(MI, OpNum, O);
+}
+
+void SystemZInstPrinter::printU6ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<6>(MI, OpNum, O);
+}
+
void SystemZInstPrinter::printS8ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isInt<8>(Value) && "Invalid s8imm argument");
- O << Value;
+ printSImmOperand<8>(MI, OpNum, O);
}
void SystemZInstPrinter::printU8ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isUInt<8>(Value) && "Invalid u8imm argument");
- O << Value;
+ printUImmOperand<8>(MI, OpNum, O);
+}
+
+void SystemZInstPrinter::printU12ImmOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printUImmOperand<12>(MI, OpNum, O);
}
void SystemZInstPrinter::printS16ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isInt<16>(Value) && "Invalid s16imm argument");
- O << Value;
+ printSImmOperand<16>(MI, OpNum, O);
}
void SystemZInstPrinter::printU16ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isUInt<16>(Value) && "Invalid u16imm argument");
- O << Value;
+ printUImmOperand<16>(MI, OpNum, O);
}
void SystemZInstPrinter::printS32ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isInt<32>(Value) && "Invalid s32imm argument");
- O << Value;
+ printSImmOperand<32>(MI, OpNum, O);
}
void SystemZInstPrinter::printU32ImmOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- int64_t Value = MI->getOperand(OpNum).getImm();
- assert(isUInt<32>(Value) && "Invalid u32imm argument");
- O << Value;
+ printUImmOperand<32>(MI, OpNum, O);
}
void SystemZInstPrinter::printAccessRegOperand(const MCInst *MI, int OpNum,
@@ -178,6 +200,13 @@ void SystemZInstPrinter::printBDLAddrOperand(const MCInst *MI, int OpNum,
O << ')';
}
+void SystemZInstPrinter::printBDVAddrOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ printAddress(MI->getOperand(OpNum).getReg(),
+ MI->getOperand(OpNum + 1).getImm(),
+ MI->getOperand(OpNum + 2).getReg(), O);
+}
+
void SystemZInstPrinter::printCond4Operand(const MCInst *MI, int OpNum,
raw_ostream &O) {
static const char *const CondNames[] = {
diff --git a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
index 6f56c7be3c3..847b6962e6f 100644
--- a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
+++ b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
@@ -48,10 +48,15 @@ private:
void printBDAddrOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printBDXAddrOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printBDLAddrOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printBDVAddrOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printU1ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printU2ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printU3ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU4ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU6ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printS8ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU8ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printU12ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printS16ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU16ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printS32ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
index 8dd70b93351..003e8b235e1 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
@@ -70,6 +70,9 @@ private:
uint64_t getBDLAddr12Len8Encoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const;
+ uint64_t getBDVAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups,
+ const MCSubtargetInfo &STI) const;
// Operand OpNum of MI needs a PC-relative fixup of kind Kind at
// Offset bytes from the start of MI. Add the fixup to Fixups
@@ -193,6 +196,17 @@ getBDLAddr12Len8Encoding(const MCInst &MI, unsigned OpNum,
return (Len << 16) | (Base << 12) | Disp;
}
+uint64_t SystemZMCCodeEmitter::
+getBDVAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups,
+ const MCSubtargetInfo &STI) const {
+ uint64_t Base = getMachineOpValue(MI, MI.getOperand(OpNum), Fixups, STI);
+ uint64_t Disp = getMachineOpValue(MI, MI.getOperand(OpNum + 1), Fixups, STI);
+ uint64_t Index = getMachineOpValue(MI, MI.getOperand(OpNum + 2), Fixups, STI);
+ assert(isUInt<4>(Base) && isUInt<12>(Disp) && isUInt<5>(Index));
+ return (Index << 16) | (Base << 12) | Disp;
+}
+
uint64_t
SystemZMCCodeEmitter::getPCRelEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups,
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
index ea56fb18d49..8476348bb01 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
@@ -76,6 +76,39 @@ const unsigned SystemZMC::FP128Regs[16] = {
SystemZ::F12Q, SystemZ::F13Q, 0, 0
};
+const unsigned SystemZMC::VR32Regs[32] = {
+ SystemZ::F0S, SystemZ::F1S, SystemZ::F2S, SystemZ::F3S,
+ SystemZ::F4S, SystemZ::F5S, SystemZ::F6S, SystemZ::F7S,
+ SystemZ::F8S, SystemZ::F9S, SystemZ::F10S, SystemZ::F11S,
+ SystemZ::F12S, SystemZ::F13S, SystemZ::F14S, SystemZ::F15S,
+ SystemZ::F16S, SystemZ::F17S, SystemZ::F18S, SystemZ::F19S,
+ SystemZ::F20S, SystemZ::F21S, SystemZ::F22S, SystemZ::F23S,
+ SystemZ::F24S, SystemZ::F25S, SystemZ::F26S, SystemZ::F27S,
+ SystemZ::F28S, SystemZ::F29S, SystemZ::F30S, SystemZ::F31S
+};
+
+const unsigned SystemZMC::VR64Regs[32] = {
+ SystemZ::F0D, SystemZ::F1D, SystemZ::F2D, SystemZ::F3D,
+ SystemZ::F4D, SystemZ::F5D, SystemZ::F6D, SystemZ::F7D,
+ SystemZ::F8D, SystemZ::F9D, SystemZ::F10D, SystemZ::F11D,
+ SystemZ::F12D, SystemZ::F13D, SystemZ::F14D, SystemZ::F15D,
+ SystemZ::F16D, SystemZ::F17D, SystemZ::F18D, SystemZ::F19D,
+ SystemZ::F20D, SystemZ::F21D, SystemZ::F22D, SystemZ::F23D,
+ SystemZ::F24D, SystemZ::F25D, SystemZ::F26D, SystemZ::F27D,
+ SystemZ::F28D, SystemZ::F29D, SystemZ::F30D, SystemZ::F31D
+};
+
+const unsigned SystemZMC::VR128Regs[32] = {
+ SystemZ::V0, SystemZ::V1, SystemZ::V2, SystemZ::V3,
+ SystemZ::V4, SystemZ::V5, SystemZ::V6, SystemZ::V7,
+ SystemZ::V8, SystemZ::V9, SystemZ::V10, SystemZ::V11,
+ SystemZ::V12, SystemZ::V13, SystemZ::V14, SystemZ::V15,
+ SystemZ::V16, SystemZ::V17, SystemZ::V18, SystemZ::V19,
+ SystemZ::V20, SystemZ::V21, SystemZ::V22, SystemZ::V23,
+ SystemZ::V24, SystemZ::V25, SystemZ::V26, SystemZ::V27,
+ SystemZ::V28, SystemZ::V29, SystemZ::V30, SystemZ::V31
+};
+
unsigned SystemZMC::getFirstReg(unsigned Reg) {
static unsigned Map[SystemZ::NUM_TARGET_REGS];
static bool Initialized = false;
@@ -85,10 +118,13 @@ unsigned SystemZMC::getFirstReg(unsigned Reg) {
Map[GRH32Regs[I]] = I;
Map[GR64Regs[I]] = I;
Map[GR128Regs[I]] = I;
- Map[FP32Regs[I]] = I;
- Map[FP64Regs[I]] = I;
Map[FP128Regs[I]] = I;
}
+ for (unsigned I = 0; I < 32; ++I) {
+ Map[VR32Regs[I]] = I;
+ Map[VR64Regs[I]] = I;
+ Map[VR128Regs[I]] = I;
+ }
}
assert(Reg < SystemZ::NUM_TARGET_REGS);
return Map[Reg];
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
index 2b2647bae94..4c0661608be 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
@@ -49,6 +49,9 @@ extern const unsigned GR128Regs[16];
extern const unsigned FP32Regs[16];
extern const unsigned FP64Regs[16];
extern const unsigned FP128Regs[16];
+extern const unsigned VR32Regs[32];
+extern const unsigned VR64Regs[32];
+extern const unsigned VR128Regs[32];
// Return the 0-based number of the first architectural register that
// contains the given LLVM register. E.g. R1D -> 1.
diff --git a/llvm/lib/Target/SystemZ/SystemZ.td b/llvm/lib/Target/SystemZ/SystemZ.td
index 5f829034902..4f3f18ed499 100644
--- a/llvm/lib/Target/SystemZ/SystemZ.td
+++ b/llvm/lib/Target/SystemZ/SystemZ.td
@@ -41,6 +41,7 @@ include "SystemZPatterns.td"
include "SystemZInstrFormats.td"
include "SystemZInstrInfo.td"
include "SystemZInstrFP.td"
+include "SystemZInstrVector.td"
def SystemZInstrInfo : InstrInfo {}
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
index 2d3c9e27e73..2c87871cdca 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
+++ b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
@@ -142,10 +142,13 @@ def getThreeOperandOpcode : InstrMapping {
// Formats are specified using operand field declarations of the form:
//
// bits<4> Rn : register input or output for operand n
+// bits<5> Vn : vector register input or output for operand n
// bits<m> In : immediate value of width m for operand n
// bits<4> BDn : address operand n, which has a base and a displacement
// bits<m> XBDn : address operand n, which has an index, a base and a
// displacement
+// bits<m> VBDn : address operand n, which has a vector index, a base and a
+// displacement
// bits<4> Xn : index register for address operand n
// bits<4> Mn : mode value for operand n
//
@@ -339,11 +342,13 @@ class InstRXE<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
bits<4> R1;
bits<20> XBD2;
+ bits<4> M3;
let Inst{47-40} = op{15-8};
let Inst{39-36} = R1;
let Inst{35-16} = XBD2;
- let Inst{15-8} = 0;
+ let Inst{15-12} = M3;
+ let Inst{11-8} = 0;
let Inst{7-0} = op{7-0};
let HasIndex = 1;
@@ -484,6 +489,382 @@ class InstS<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
let Inst{15-0} = BD2;
}
+class InstVRIa<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<16> I2;
+ bits<4> M3;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = 0;
+ let Inst{31-16} = I2;
+ let Inst{15-12} = M3;
+ let Inst{11} = V1{4};
+ let Inst{10-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRIb<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<8> I2;
+ bits<8> I3;
+ bits<4> M4;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = 0;
+ let Inst{31-24} = I2;
+ let Inst{23-16} = I3;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRIc<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V3;
+ bits<16> I2;
+ bits<4> M4;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V3{3-0};
+ let Inst{31-16} = I2;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10} = V3{4};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRId<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<5> V3;
+ bits<8> I4;
+ bits<4> M5;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-28} = V3{3-0};
+ let Inst{27-24} = 0;
+ let Inst{23-16} = I4;
+ let Inst{15-12} = M5;
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9} = V3{4};
+ let Inst{8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRIe<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<12> I3;
+ bits<4> M4;
+ bits<4> M5;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-20} = I3;
+ let Inst{19-16} = M5;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+// Depending on the instruction mnemonic, certain bits may be or-ed into
+// the M4 value provided as explicit operand. These are passed as m4or.
+class InstVRRa<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern,
+ bits<4> m4or = 0>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<4> M3;
+ bits<4> M4;
+ bits<4> M5;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-24} = 0;
+ let Inst{23-20} = M5;
+ let Inst{19} = !if (!eq (m4or{3}, 1), 1, M4{3});
+ let Inst{18} = !if (!eq (m4or{2}, 1), 1, M4{2});
+ let Inst{17} = !if (!eq (m4or{1}, 1), 1, M4{1});
+ let Inst{16} = !if (!eq (m4or{0}, 1), 1, M4{0});
+ let Inst{15-12} = M3;
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+// Depending on the instruction mnemonic, certain bits may be or-ed into
+// the M5 value provided as explicit operand. These are passed as m5or.
+class InstVRRb<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern,
+ bits<4> m5or = 0>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<5> V3;
+ bits<4> M4;
+ bits<4> M5;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-28} = V3{3-0};
+ let Inst{27-24} = 0;
+ let Inst{23} = !if (!eq (m5or{3}, 1), 1, M5{3});
+ let Inst{22} = !if (!eq (m5or{2}, 1), 1, M5{2});
+ let Inst{21} = !if (!eq (m5or{1}, 1), 1, M5{1});
+ let Inst{20} = !if (!eq (m5or{0}, 1), 1, M5{0});
+ let Inst{19-16} = 0;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9} = V3{4};
+ let Inst{8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRRc<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<5> V3;
+ bits<4> M4;
+ bits<4> M5;
+ bits<4> M6;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-28} = V3{3-0};
+ let Inst{27-24} = 0;
+ let Inst{23-20} = M6;
+ let Inst{19-16} = M5;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9} = V3{4};
+ let Inst{8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+// Depending on the instruction mnemonic, certain bits may be or-ed into
+// the M6 value provided as explicit operand. These are passed as m6or.
+class InstVRRd<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern,
+ bits<4> m6or = 0>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<5> V3;
+ bits<5> V4;
+ bits<4> M5;
+ bits<4> M6;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-28} = V3{3-0};
+ let Inst{27-24} = M5;
+ let Inst{23} = !if (!eq (m6or{3}, 1), 1, M6{3});
+ let Inst{22} = !if (!eq (m6or{2}, 1), 1, M6{2});
+ let Inst{21} = !if (!eq (m6or{1}, 1), 1, M6{1});
+ let Inst{20} = !if (!eq (m6or{0}, 1), 1, M6{0});
+ let Inst{19-16} = 0;
+ let Inst{15-12} = V4{3-0};
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9} = V3{4};
+ let Inst{8} = V4{4};
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRRe<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<5> V2;
+ bits<5> V3;
+ bits<5> V4;
+ bits<4> M5;
+ bits<4> M6;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V2{3-0};
+ let Inst{31-28} = V3{3-0};
+ let Inst{27-24} = M6;
+ let Inst{23-20} = 0;
+ let Inst{19-16} = M5;
+ let Inst{15-12} = V4{3-0};
+ let Inst{11} = V1{4};
+ let Inst{10} = V2{4};
+ let Inst{9} = V3{4};
+ let Inst{8} = V4{4};
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRRf<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<4> R2;
+ bits<4> R3;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = R2;
+ let Inst{31-28} = R3;
+ let Inst{27-12} = 0;
+ let Inst{11} = V1{4};
+ let Inst{10-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRSa<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<16> BD2;
+ bits<5> V3;
+ bits<4> M4;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = V3{3-0};
+ let Inst{31-16} = BD2;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10} = V3{4};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRSb<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<16> BD2;
+ bits<4> R3;
+ bits<4> M4;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-32} = R3;
+ let Inst{31-16} = BD2;
+ let Inst{15-12} = M4;
+ let Inst{11} = V1{4};
+ let Inst{10-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRSc<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<4> R1;
+ bits<16> BD2;
+ bits<5> V3;
+ bits<4> M4;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = R1;
+ let Inst{35-32} = V3{3-0};
+ let Inst{31-16} = BD2;
+ let Inst{15-12} = M4;
+ let Inst{11} = 0;
+ let Inst{10} = V3{4};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRV<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<21> VBD2;
+ bits<4> M3;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-16} = VBD2{19-0};
+ let Inst{15-12} = M3;
+ let Inst{11} = V1{4};
+ let Inst{10} = VBD2{20};
+ let Inst{9-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
+class InstVRX<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+ : InstSystemZ<6, outs, ins, asmstr, pattern> {
+ field bits<48> Inst;
+ field bits<48> SoftFail = 0;
+
+ bits<5> V1;
+ bits<20> XBD2;
+ bits<4> M3;
+
+ let Inst{47-40} = op{15-8};
+ let Inst{39-36} = V1{3-0};
+ let Inst{35-16} = XBD2;
+ let Inst{15-12} = M3;
+ let Inst{11} = V1{4};
+ let Inst{10-8} = 0;
+ let Inst{7-0} = op{7-0};
+}
+
//===----------------------------------------------------------------------===//
// Instruction definitions with semantics
//===----------------------------------------------------------------------===//
@@ -503,12 +884,6 @@ class InstS<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
// form of the source register in the destination register and
// branches on the result.
//
-// Store:
-// One register or immediate input operand and one address input operand.
-// The instruction stores the first operand to the address.
-//
-// This category is used for both pure and truncating stores.
-//
// LoadMultiple:
// One address input operand and two explicit output operands.
// The instruction loads a range of registers from the address,
@@ -521,18 +896,35 @@ class InstS<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
// with the explicit operands giving the first and last register
// to store. Other stored registers are added as implicit uses.
//
+// StoreLength:
+// One value operand, one length operand and one address operand.
+// The instruction stores the value operand to the address but
+// doesn't write more than the number of bytes specified by the
+// length operand.
+//
// Unary:
// One register output operand and one input operand.
//
+// Store:
+// One address operand and one other input operand. The instruction
+// stores to the address.
+//
// Binary:
// One register output operand and two input operands.
//
+// StoreBinary:
+// One address operand and two other input operands. The instruction
+// stores to the address.
+//
// Compare:
// Two input operands and an implicit CC output operand.
//
// Ternary:
// One register output operand and three input operands.
//
+// Quaternary:
+// One register output operand and four input operands.
+//
// LoadAndOp:
// One output operand and two input operands, one of which is an address.
// The instruction both reads from and writes to the address.
@@ -567,6 +959,12 @@ class InherentRRE<string mnemonic, bits<16> opcode, RegisterOperand cls,
let R2 = 0;
}
+class InherentVRIa<string mnemonic, bits<16> opcode, bits<16> value>
+ : InstVRIa<opcode, (outs VR128:$V1), (ins), mnemonic#"\t$V1", []> {
+ let I2 = value;
+ let M3 = 0;
+}
+
class BranchUnaryRI<string mnemonic, bits<12> opcode, RegisterOperand cls>
: InstRI<opcode, (outs cls:$R1), (ins cls:$R1src, brtarget16:$I2),
mnemonic##"\t$R1, $I2", []> {
@@ -582,6 +980,13 @@ class LoadMultipleRSY<string mnemonic, bits<16> opcode, RegisterOperand cls>
let mayLoad = 1;
}
+class LoadMultipleVRSa<string mnemonic, bits<16> opcode>
+ : InstVRSa<opcode, (outs VR128:$V1, VR128:$V3), (ins bdaddr12only:$BD2),
+ mnemonic#"\t$V1, $V3, $BD2", []> {
+ let M4 = 0;
+ let mayLoad = 1;
+}
+
class StoreRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls>
: InstRIL<opcode, (outs), (ins cls:$R1, pcrel32:$I2),
@@ -630,12 +1035,39 @@ multiclass StoreRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
}
}
+class StoreVRX<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<5> bytes, bits<4> type = 0>
+ : InstVRX<opcode, (outs), (ins tr.op:$V1, bdxaddr12only:$XBD2),
+ mnemonic#"\t$V1, $XBD2",
+ [(set tr.op:$V1, (tr.vt (operator bdxaddr12only:$XBD2)))]> {
+ let M3 = type;
+ let mayStore = 1;
+ let AccessBytes = bytes;
+}
+
+class StoreLengthVRSb<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator, bits<5> bytes>
+ : InstVRSb<opcode, (outs), (ins VR128:$V1, GR32:$R3, bdaddr12only:$BD2),
+ mnemonic#"\t$V1, $R3, $BD2",
+ [(operator VR128:$V1, GR32:$R3, bdaddr12only:$BD2)]> {
+ let M4 = 0;
+ let mayStore = 1;
+ let AccessBytes = bytes;
+}
+
class StoreMultipleRSY<string mnemonic, bits<16> opcode, RegisterOperand cls>
: InstRSY<opcode, (outs), (ins cls:$R1, cls:$R3, bdaddr20only:$BD2),
mnemonic#"\t$R1, $R3, $BD2", []> {
let mayStore = 1;
}
+class StoreMultipleVRSa<string mnemonic, bits<16> opcode>
+ : InstVRSa<opcode, (outs), (ins VR128:$V1, VR128:$V3, bdaddr12only:$BD2),
+ mnemonic#"\t$V1, $V3, $BD2", []> {
+ let M4 = 0;
+ let mayStore = 1;
+}
+
// StoreSI* instructions are used to store an integer to memory, but the
// addresses are more restricted than for normal stores. If we are in the
// situation of having to force either the address into a register or the
@@ -868,6 +1300,7 @@ class UnaryRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
let OpType = "mem";
let mayLoad = 1;
let AccessBytes = bytes;
+ let M3 = 0;
}
class UnaryRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
@@ -894,6 +1327,46 @@ multiclass UnaryRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
}
}
+class UnaryVRIa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, Immediate imm, bits<4> type = 0>
+ : InstVRIa<opcode, (outs tr.op:$V1), (ins imm:$I2),
+ mnemonic#"\t$V1, $I2",
+ [(set tr.op:$V1, (tr.vt (operator imm:$I2)))]> {
+ let M3 = type;
+}
+
+class UnaryVRRa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type = 0, bits<4> m4 = 0,
+ bits<4> m5 = 0>
+ : InstVRRa<opcode, (outs tr1.op:$V1), (ins tr2.op:$V2),
+ mnemonic#"\t$V1, $V2",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2))))]> {
+ let M3 = type;
+ let M4 = m4;
+ let M5 = m5;
+}
+
+multiclass UnaryVRRaSPair<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator,
+ SDPatternOperator operator_cc, TypedReg tr1,
+ TypedReg tr2, bits<4> type, bits<4> modifier = 0,
+ bits<4> modifier_cc = 1> {
+ def "" : UnaryVRRa<mnemonic, opcode, operator, tr1, tr2, type, 0, modifier>;
+ let Defs = [CC] in
+ def S : UnaryVRRa<mnemonic##"s", opcode, operator_cc, tr1, tr2, type, 0,
+ modifier_cc>;
+}
+
+class UnaryVRX<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<5> bytes, bits<4> type = 0>
+ : InstVRX<opcode, (outs tr.op:$V1), (ins bdxaddr12only:$XBD2),
+ mnemonic#"\t$V1, $XBD2",
+ [(set tr.op:$V1, (tr.vt (operator bdxaddr12only:$XBD2)))]> {
+ let M3 = type;
+ let mayLoad = 1;
+ let AccessBytes = bytes;
+}
+
class BinaryRR<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
: InstRR<opcode, (outs cls1:$R1), (ins cls1:$R1src, cls2:$R2),
@@ -1047,6 +1520,7 @@ class BinaryRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
let DisableEncoding = "$R1src";
let mayLoad = 1;
let AccessBytes = bytes;
+ let M3 = 0;
}
class BinaryRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
@@ -1105,6 +1579,148 @@ multiclass BinarySIPair<string mnemonic, bits<8> siOpcode,
}
}
+class BinaryVRIb<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<4> type>
+ : InstVRIb<opcode, (outs tr.op:$V1), (ins imm32zx8:$I2, imm32zx8:$I3),
+ mnemonic#"\t$V1, $I2, $I3",
+ [(set tr.op:$V1, (tr.vt (operator imm32zx8:$I2, imm32zx8:$I3)))]> {
+ let M4 = type;
+}
+
+class BinaryVRIc<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type>
+ : InstVRIc<opcode, (outs tr1.op:$V1), (ins tr2.op:$V3, imm32zx16:$I2),
+ mnemonic#"\t$V1, $V3, $I2",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V3),
+ imm32zx16:$I2)))]> {
+ let M4 = type;
+}
+
+class BinaryVRIe<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type, bits<4> m5>
+ : InstVRIe<opcode, (outs tr1.op:$V1), (ins tr2.op:$V2, imm32zx12:$I3),
+ mnemonic#"\t$V1, $V2, $I3",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ imm32zx12:$I3)))]> {
+ let M4 = type;
+ let M5 = m5;
+}
+
+class BinaryVRRa<string mnemonic, bits<16> opcode>
+ : InstVRRa<opcode, (outs VR128:$V1), (ins VR128:$V2, imm32zx4:$M3),
+ mnemonic#"\t$V1, $V2, $M3", []> {
+ let M4 = 0;
+ let M5 = 0;
+}
+
+class BinaryVRRb<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type = 0,
+ bits<4> modifier = 0>
+ : InstVRRb<opcode, (outs tr1.op:$V1), (ins tr2.op:$V2, tr2.op:$V3),
+ mnemonic#"\t$V1, $V2, $V3",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3))))]> {
+ let M4 = type;
+ let M5 = modifier;
+}
+
+// Declare a pair of instructions, one which sets CC and one which doesn't.
+// The CC-setting form ends with "S" and sets the low bit of M5.
+multiclass BinaryVRRbSPair<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator,
+ SDPatternOperator operator_cc, TypedReg tr1,
+ TypedReg tr2, bits<4> type,
+ bits<4> modifier = 0, bits<4> modifier_cc = 1> {
+ def "" : BinaryVRRb<mnemonic, opcode, operator, tr1, tr2, type, modifier>;
+ let Defs = [CC] in
+ def S : BinaryVRRb<mnemonic##"s", opcode, operator_cc, tr1, tr2, type,
+ modifier_cc>;
+}
+
+class BinaryVRRc<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type = 0, bits<4> m5 = 0,
+ bits<4> m6 = 0>
+ : InstVRRc<opcode, (outs tr1.op:$V1), (ins tr2.op:$V2, tr2.op:$V3),
+ mnemonic#"\t$V1, $V2, $V3",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3))))]> {
+ let M4 = type;
+ let M5 = m5;
+ let M6 = m6;
+}
+
+multiclass BinaryVRRcSPair<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator,
+ SDPatternOperator operator_cc, TypedReg tr1,
+ TypedReg tr2, bits<4> type, bits<4> m5,
+ bits<4> modifier = 0, bits<4> modifier_cc = 1> {
+ def "" : BinaryVRRc<mnemonic, opcode, operator, tr1, tr2, type, m5, modifier>;
+ let Defs = [CC] in
+ def S : BinaryVRRc<mnemonic##"s", opcode, operator_cc, tr1, tr2, type,
+ m5, modifier_cc>;
+}
+
+class BinaryVRRf<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr>
+ : InstVRRf<opcode, (outs tr.op:$V1), (ins GR64:$R2, GR64:$R3),
+ mnemonic#"\t$V1, $R2, $R3",
+ [(set tr.op:$V1, (tr.vt (operator GR64:$R2, GR64:$R3)))]>;
+
+class BinaryVRSa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type>
+ : InstVRSa<opcode, (outs tr1.op:$V1), (ins tr2.op:$V3, shift12only:$BD2),
+ mnemonic#"\t$V1, $V3, $BD2",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V3),
+ shift12only:$BD2)))]> {
+ let M4 = type;
+}
+
+class BinaryVRSb<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ bits<5> bytes>
+ : InstVRSb<opcode, (outs VR128:$V1), (ins GR32:$R3, bdaddr12only:$BD2),
+ mnemonic#"\t$V1, $R3, $BD2",
+ [(set VR128:$V1, (operator GR32:$R3, bdaddr12only:$BD2))]> {
+ let M4 = 0;
+ let mayLoad = 1;
+ let AccessBytes = bytes;
+}
+
+class BinaryVRSc<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<4> type>
+ : InstVRSc<opcode, (outs GR64:$R1), (ins tr.op:$V3, shift12only:$BD2),
+ mnemonic#"\t$R1, $V3, $BD2",
+ [(set GR64:$R1, (operator (tr.vt tr.op:$V3), shift12only:$BD2))]> {
+ let M4 = type;
+}
+
+class BinaryVRX<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<5> bytes>
+ : InstVRX<opcode, (outs VR128:$V1), (ins bdxaddr12only:$XBD2, imm32zx4:$M3),
+ mnemonic#"\t$V1, $XBD2, $M3",
+ [(set tr.op:$V1, (tr.vt (operator bdxaddr12only:$XBD2,
+ imm32zx4:$M3)))]> {
+ let mayLoad = 1;
+ let AccessBytes = bytes;
+}
+
+class StoreBinaryVRV<string mnemonic, bits<16> opcode, bits<5> bytes,
+ Immediate index>
+ : InstVRV<opcode, (outs), (ins VR128:$V1, bdvaddr12only:$VBD2, index:$M3),
+ mnemonic#"\t$V1, $VBD2, $M3", []> {
+ let mayStore = 1;
+ let AccessBytes = bytes;
+}
+
+class StoreBinaryVRX<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator, TypedReg tr, bits<5> bytes,
+ Immediate index>
+ : InstVRX<opcode, (outs), (ins tr.op:$V1, bdxaddr12only:$XBD2, index:$M3),
+ mnemonic#"\t$V1, $XBD2, $M3",
+ [(operator (tr.vt tr.op:$V1), bdxaddr12only:$XBD2, index:$M3)]> {
+ let mayStore = 1;
+ let AccessBytes = bytes;
+}
+
class CompareRR<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
: InstRR<opcode, (outs), (ins cls1:$R1, cls2:$R2),
@@ -1177,6 +1793,7 @@ class CompareRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
let isCompare = 1;
let mayLoad = 1;
let AccessBytes = bytes;
+ let M3 = 0;
}
class CompareRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
@@ -1246,6 +1863,17 @@ multiclass CompareSIPair<string mnemonic, bits<8> siOpcode, bits<16> siyOpcode,
}
}
+class CompareVRRa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr, bits<4> type>
+ : InstVRRa<opcode, (outs), (ins tr.op:$V1, tr.op:$V2),
+ mnemonic#"\t$V1, $V2",
+ [(operator (tr.vt tr.op:$V1), (tr.vt tr.op:$V2))]> {
+ let isCompare = 1;
+ let M3 = type;
+ let M4 = 0;
+ let M5 = 0;
+}
+
class TernaryRRD<string mnemonic, bits<16> opcode,
SDPatternOperator operator, RegisterOperand cls>
: InstRRD<opcode, (outs cls:$R1), (ins cls:$R1src, cls:$R3, cls:$R2),
@@ -1272,6 +1900,188 @@ class TernaryRXF<string mnemonic, bits<16> opcode, SDPatternOperator operator,
let AccessBytes = bytes;
}
+class TernaryVRIa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, Immediate imm, Immediate index>
+ : InstVRIa<opcode, (outs tr1.op:$V1), (ins tr2.op:$V1src, imm:$I2, index:$M3),
+ mnemonic#"\t$V1, $I2, $M3",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V1src),
+ imm:$I2, index:$M3)))]> {
+ let Constraints = "$V1 = $V1src";
+ let DisableEncoding = "$V1src";
+}
+
+class TernaryVRId<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type>
+ : InstVRId<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, imm32zx8:$I4),
+ mnemonic#"\t$V1, $V2, $V3, $I4",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ imm32zx8:$I4)))]> {
+ let M5 = type;
+}
+
+class TernaryVRRa<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type, bits<4> m4or>
+ : InstVRRa<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, imm32zx4:$M4, imm32zx4:$M5),
+ mnemonic#"\t$V1, $V2, $M4, $M5",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ imm32zx4:$M4,
+ imm32zx4:$M5)))],
+ m4or> {
+ let M3 = type;
+}
+
+class TernaryVRRb<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type,
+ SDPatternOperator m5mask, bits<4> m5or>
+ : InstVRRb<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, m5mask:$M5),
+ mnemonic#"\t$V1, $V2, $V3, $M5",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ m5mask:$M5)))],
+ m5or> {
+ let M4 = type;
+}
+
+multiclass TernaryVRRbSPair<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator,
+ SDPatternOperator operator_cc, TypedReg tr1,
+ TypedReg tr2, bits<4> type, bits<4> m5or> {
+ def "" : TernaryVRRb<mnemonic, opcode, operator, tr1, tr2, type,
+ imm32zx4even, !and (m5or, 14)>;
+ def : InstAlias<mnemonic#"\t$V1, $V2, $V3",
+ (!cast<Instruction>(NAME) tr1.op:$V1, tr2.op:$V2,
+ tr2.op:$V3, 0)>;
+ let Defs = [CC] in
+ def S : TernaryVRRb<mnemonic##"s", opcode, operator_cc, tr1, tr2, type,
+ imm32zx4even, !add(!and (m5or, 14), 1)>;
+ def : InstAlias<mnemonic#"s\t$V1, $V2, $V3",
+ (!cast<Instruction>(NAME#"S") tr1.op:$V1, tr2.op:$V2,
+ tr2.op:$V3, 0)>;
+}
+
+class TernaryVRRc<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2>
+ : InstVRRc<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, imm32zx4:$M4),
+ mnemonic#"\t$V1, $V2, $V3, $M4",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ imm32zx4:$M4)))]> {
+ let M5 = 0;
+ let M6 = 0;
+}
+
+class TernaryVRRd<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type = 0>
+ : InstVRRd<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, tr1.op:$V4),
+ mnemonic#"\t$V1, $V2, $V3, $V4",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ (tr1.vt tr1.op:$V4))))]> {
+ let M5 = type;
+ let M6 = 0;
+}
+
+class TernaryVRRe<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> m5 = 0, bits<4> type = 0>
+ : InstVRRe<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, tr1.op:$V4),
+ mnemonic#"\t$V1, $V2, $V3, $V4",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ (tr1.vt tr1.op:$V4))))]> {
+ let M5 = m5;
+ let M6 = type;
+}
+
+class TernaryVRSb<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, RegisterOperand cls, bits<4> type>
+ : InstVRSb<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V1src, cls:$R3, shift12only:$BD2),
+ mnemonic#"\t$V1, $R3, $BD2",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V1src),
+ cls:$R3,
+ shift12only:$BD2)))]> {
+ let Constraints = "$V1 = $V1src";
+ let DisableEncoding = "$V1src";
+ let M4 = type;
+}
+
+class TernaryVRV<string mnemonic, bits<16> opcode, bits<5> bytes,
+ Immediate index>
+ : InstVRV<opcode, (outs VR128:$V1),
+ (ins VR128:$V1src, bdvaddr12only:$VBD2, index:$M3),
+ mnemonic#"\t$V1, $VBD2, $M3", []> {
+ let Constraints = "$V1 = $V1src";
+ let DisableEncoding = "$V1src";
+ let mayLoad = 1;
+ let AccessBytes = bytes;
+}
+
+class TernaryVRX<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<5> bytes, Immediate index>
+ : InstVRX<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V1src, bdxaddr12only:$XBD2, index:$M3),
+ mnemonic#"\t$V1, $XBD2, $M3",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V1src),
+ bdxaddr12only:$XBD2,
+ index:$M3)))]> {
+ let Constraints = "$V1 = $V1src";
+ let DisableEncoding = "$V1src";
+ let mayLoad = 1;
+ let AccessBytes = bytes;
+}
+
+class QuaternaryVRId<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ TypedReg tr1, TypedReg tr2, bits<4> type>
+ : InstVRId<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V1src, tr2.op:$V2, tr2.op:$V3, imm32zx8:$I4),
+ mnemonic#"\t$V1, $V2, $V3, $I4",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V1src),
+ (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ imm32zx8:$I4)))]> {
+ let Constraints = "$V1 = $V1src";
+ let DisableEncoding = "$V1src";
+ let M5 = type;
+}
+
+class QuaternaryVRRd<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator, TypedReg tr1, TypedReg tr2,
+ bits<4> type, SDPatternOperator m6mask, bits<4> m6or>
+ : InstVRRd<opcode, (outs tr1.op:$V1),
+ (ins tr2.op:$V2, tr2.op:$V3, tr2.op:$V4, m6mask:$M6),
+ mnemonic#"\t$V1, $V2, $V3, $V4, $M6",
+ [(set tr1.op:$V1, (tr1.vt (operator (tr2.vt tr2.op:$V2),
+ (tr2.vt tr2.op:$V3),
+ (tr2.vt tr2.op:$V4),
+ m6mask:$M6)))],
+ m6or> {
+ let M5 = type;
+}
+
+multiclass QuaternaryVRRdSPair<string mnemonic, bits<16> opcode,
+ SDPatternOperator operator,
+ SDPatternOperator operator_cc, TypedReg tr1,
+ TypedReg tr2, bits<4> type, bits<4> m6or> {
+ def "" : QuaternaryVRRd<mnemonic, opcode, operator, tr1, tr2, type,
+ imm32zx4even, !and (m6or, 14)>;
+ def : InstAlias<mnemonic#"\t$V1, $V2, $V3, $V4",
+ (!cast<Instruction>(NAME) tr1.op:$V1, tr2.op:$V2,
+ tr2.op:$V3, tr2.op:$V4, 0)>;
+ let Defs = [CC] in
+ def S : QuaternaryVRRd<mnemonic##"s", opcode, operator_cc, tr1, tr2, type,
+ imm32zx4even, !add (!and (m6or, 14), 1)>;
+ def : InstAlias<mnemonic#"s\t$V1, $V2, $V3, $V4",
+ (!cast<Instruction>(NAME#"S") tr1.op:$V1, tr2.op:$V2,
+ tr2.op:$V3, tr2.op:$V4, 0)>;
+}
+
class LoadAndOpRSY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdaddr20only>
: InstRSY<opcode, (outs cls:$R1), (ins cls:$R3, mode:$BD2),
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrVector.td b/llvm/lib/Target/SystemZ/SystemZInstrVector.td
new file mode 100644
index 00000000000..650cae0b35d
--- /dev/null
+++ b/llvm/lib/Target/SystemZ/SystemZInstrVector.td
@@ -0,0 +1,751 @@
+//==- SystemZInstrVector.td - SystemZ Vector instructions ------*- tblgen-*-==//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+// Move instructions
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Register move.
+ def VLR : UnaryVRRa<"vlr", 0xE756, null_frag, v128any, v128any>;
+
+ // Load GR from VR element.
+ def VLGVB : BinaryVRSc<"vlgvb", 0xE721, null_frag, v128b, 0>;
+ def VLGVH : BinaryVRSc<"vlgvh", 0xE721, null_frag, v128h, 1>;
+ def VLGVF : BinaryVRSc<"vlgvf", 0xE721, null_frag, v128f, 2>;
+ def VLGVG : BinaryVRSc<"vlgvg", 0xE721, null_frag, v128g, 3>;
+
+ // Load VR element from GR.
+ def VLVGB : TernaryVRSb<"vlvgb", 0xE722, null_frag, v128b, v128b, GR32, 0>;
+ def VLVGH : TernaryVRSb<"vlvgh", 0xE722, null_frag, v128h, v128h, GR32, 1>;
+ def VLVGF : TernaryVRSb<"vlvgf", 0xE722, null_frag, v128f, v128f, GR32, 2>;
+ def VLVGG : TernaryVRSb<"vlvgg", 0xE722, null_frag, v128g, v128g, GR64, 3>;
+
+ // Load VR from GRs disjoint.
+ def VLVGP : BinaryVRRf<"vlvgp", 0xE762, null_frag, v128g>;
+}
+
+//===----------------------------------------------------------------------===//
+// Immediate instructions
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Generate byte mask.
+ def VZERO : InherentVRIa<"vzero", 0xE744, 0>;
+ def VONE : InherentVRIa<"vone", 0xE744, 0xffff>;
+ def VGBM : UnaryVRIa<"vgbm", 0xE744, null_frag, v128b, imm32zx16>;
+
+ // Generate mask.
+ def VGMB : BinaryVRIb<"vgmb", 0xE746, null_frag, v128b, 0>;
+ def VGMH : BinaryVRIb<"vgmh", 0xE746, null_frag, v128h, 1>;
+ def VGMF : BinaryVRIb<"vgmf", 0xE746, null_frag, v128f, 2>;
+ def VGMG : BinaryVRIb<"vgmg", 0xE746, null_frag, v128g, 3>;
+
+ // Load element immediate.
+ def VLEIB : TernaryVRIa<"vleib", 0xE740, null_frag,
+ v128b, v128b, imm32sx16trunc, imm32zx4>;
+ def VLEIH : TernaryVRIa<"vleih", 0xE741, null_frag,
+ v128h, v128h, imm32sx16trunc, imm32zx3>;
+ def VLEIF : TernaryVRIa<"vleif", 0xE743, null_frag,
+ v128f, v128f, imm32sx16, imm32zx2>;
+ def VLEIG : TernaryVRIa<"vleig", 0xE742, null_frag,
+ v128g, v128g, imm64sx16, imm32zx1>;
+
+ // Replicate immediate.
+ def VREPIB : UnaryVRIa<"vrepib", 0xE745, null_frag, v128b, imm32sx16, 0>;
+ def VREPIH : UnaryVRIa<"vrepih", 0xE745, null_frag, v128h, imm32sx16, 1>;
+ def VREPIF : UnaryVRIa<"vrepif", 0xE745, null_frag, v128f, imm32sx16, 2>;
+ def VREPIG : UnaryVRIa<"vrepig", 0xE745, null_frag, v128g, imm32sx16, 3>;
+}
+
+//===----------------------------------------------------------------------===//
+// Loads
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Load.
+ def VL : UnaryVRX<"vl", 0xE706, null_frag, v128any, 16>;
+
+ // Load to block boundary. The number of loaded bytes is only known
+ // at run time.
+ def VLBB : BinaryVRX<"vlbb", 0xE707, null_frag, v128any, 0>;
+
+ // Load count to block boundary.
+ let Defs = [CC] in
+ def LCBB : InstRXE<0xE727, (outs GR32:$R1),
+ (ins bdxaddr12only:$XBD2, imm32zx4:$M3),
+ "lcbb\t$R1, $XBD2, $M3", []>;
+
+ // Load with length. The number of loaded bytes is only known at run time.
+ def VLL : BinaryVRSb<"vll", 0xE737, null_frag, 0>;
+
+ // Load multiple.
+ def VLM : LoadMultipleVRSa<"vlm", 0xE736>;
+
+ // Load and replicate
+ def VLREPB : UnaryVRX<"vlrepb", 0xE705, null_frag, v128b, 1, 0>;
+ def VLREPH : UnaryVRX<"vlreph", 0xE705, null_frag, v128h, 2, 1>;
+ def VLREPF : UnaryVRX<"vlrepf", 0xE705, null_frag, v128f, 4, 2>;
+ def VLREPG : UnaryVRX<"vlrepg", 0xE705, null_frag, v128g, 8, 3>;
+
+ // Load logical element and zero.
+ def VLLEZB : UnaryVRX<"vllezb", 0xE704, null_frag, v128b, 1, 0>;
+ def VLLEZH : UnaryVRX<"vllezh", 0xE704, null_frag, v128h, 2, 1>;
+ def VLLEZF : UnaryVRX<"vllezf", 0xE704, null_frag, v128f, 4, 2>;
+ def VLLEZG : UnaryVRX<"vllezg", 0xE704, null_frag, v128g, 8, 3>;
+
+ // Load element.
+ def VLEB : TernaryVRX<"vleb", 0xE700, null_frag, v128b, v128b, 1, imm32zx4>;
+ def VLEH : TernaryVRX<"vleh", 0xE701, null_frag, v128h, v128h, 2, imm32zx3>;
+ def VLEF : TernaryVRX<"vlef", 0xE703, null_frag, v128f, v128f, 4, imm32zx2>;
+ def VLEG : TernaryVRX<"vleg", 0xE702, null_frag, v128g, v128g, 8, imm32zx1>;
+
+ // Gather element.
+ def VGEF : TernaryVRV<"vgef", 0xE713, 4, imm32zx2>;
+ def VGEG : TernaryVRV<"vgeg", 0xE712, 8, imm32zx1>;
+}
+
+//===----------------------------------------------------------------------===//
+// Stores
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Store.
+ def VST : StoreVRX<"vst", 0xE70E, null_frag, v128any, 16>;
+
+ // Store with length. The number of stored bytes is only known at run time.
+ def VSTL : StoreLengthVRSb<"vstl", 0xE73F, null_frag, 0>;
+
+ // Store multiple.
+ def VSTM : StoreMultipleVRSa<"vstm", 0xE73E>;
+
+ // Store element.
+ def VSTEB : StoreBinaryVRX<"vsteb", 0xE708, null_frag, v128b, 1, imm32zx4>;
+ def VSTEH : StoreBinaryVRX<"vsteh", 0xE709, null_frag, v128h, 2, imm32zx3>;
+ def VSTEF : StoreBinaryVRX<"vstef", 0xE70B, null_frag, v128f, 4, imm32zx2>;
+ def VSTEG : StoreBinaryVRX<"vsteg", 0xE70A, null_frag, v128g, 8, imm32zx1>;
+
+ // Scatter element.
+ def VSCEF : StoreBinaryVRV<"vscef", 0xE71B, 4, imm32zx2>;
+ def VSCEG : StoreBinaryVRV<"vsceg", 0xE71A, 8, imm32zx1>;
+}
+
+//===----------------------------------------------------------------------===//
+// Selects and permutes
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Merge high.
+ def VMRHB : BinaryVRRc<"vmrhb", 0xE761, null_frag, v128b, v128b, 0>;
+ def VMRHH : BinaryVRRc<"vmrhh", 0xE761, null_frag, v128h, v128h, 1>;
+ def VMRHF : BinaryVRRc<"vmrhf", 0xE761, null_frag, v128f, v128f, 2>;
+ def VMRHG : BinaryVRRc<"vmrhg", 0xE761, null_frag, v128g, v128g, 3>;
+
+ // Merge low.
+ def VMRLB : BinaryVRRc<"vmrlb", 0xE760, null_frag, v128b, v128b, 0>;
+ def VMRLH : BinaryVRRc<"vmrlh", 0xE760, null_frag, v128h, v128h, 1>;
+ def VMRLF : BinaryVRRc<"vmrlf", 0xE760, null_frag, v128f, v128f, 2>;
+ def VMRLG : BinaryVRRc<"vmrlg", 0xE760, null_frag, v128g, v128g, 3>;
+
+ // Permute.
+ def VPERM : TernaryVRRe<"vperm", 0xE78C, null_frag, v128b, v128b>;
+
+ // Permute doubleword immediate.
+ def VPDI : TernaryVRRc<"vpdi", 0xE784, null_frag, v128b, v128b>;
+
+ // Replicate.
+ def VREPB : BinaryVRIc<"vrepb", 0xE74D, null_frag, v128b, v128b, 0>;
+ def VREPH : BinaryVRIc<"vreph", 0xE74D, null_frag, v128h, v128h, 1>;
+ def VREPF : BinaryVRIc<"vrepf", 0xE74D, null_frag, v128f, v128f, 2>;
+ def VREPG : BinaryVRIc<"vrepg", 0xE74D, null_frag, v128g, v128g, 3>;
+
+ // Select.
+ def VSEL : TernaryVRRe<"vsel", 0xE78D, null_frag, v128any, v128any>;
+}
+
+//===----------------------------------------------------------------------===//
+// Widening and narrowing
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Pack
+ def VPKH : BinaryVRRc<"vpkh", 0xE794, null_frag, v128b, v128h, 1>;
+ def VPKF : BinaryVRRc<"vpkf", 0xE794, null_frag, v128h, v128f, 2>;
+ def VPKG : BinaryVRRc<"vpkg", 0xE794, null_frag, v128f, v128g, 3>;
+
+ // Pack saturate.
+ defm VPKSH : BinaryVRRbSPair<"vpksh", 0xE797, null_frag, null_frag,
+ v128b, v128h, 1>;
+ defm VPKSF : BinaryVRRbSPair<"vpksf", 0xE797, null_frag, null_frag,
+ v128h, v128f, 2>;
+ defm VPKSG : BinaryVRRbSPair<"vpksg", 0xE797, null_frag, null_frag,
+ v128f, v128g, 3>;
+
+ // Pack saturate logical.
+ defm VPKLSH : BinaryVRRbSPair<"vpklsh", 0xE795, null_frag, null_frag,
+ v128b, v128h, 1>;
+ defm VPKLSF : BinaryVRRbSPair<"vpklsf", 0xE795, null_frag, null_frag,
+ v128h, v128f, 2>;
+ defm VPKLSG : BinaryVRRbSPair<"vpklsg", 0xE795, null_frag, null_frag,
+ v128f, v128g, 3>;
+
+ // Sign-extend to doubleword.
+ def VSEGB : UnaryVRRa<"vsegb", 0xE75F, null_frag, v128g, v128b, 0>;
+ def VSEGH : UnaryVRRa<"vsegh", 0xE75F, null_frag, v128g, v128h, 1>;
+ def VSEGF : UnaryVRRa<"vsegf", 0xE75F, null_frag, v128g, v128f, 2>;
+
+ // Unpack high.
+ def VUPHB : UnaryVRRa<"vuphb", 0xE7D7, null_frag, v128h, v128b, 0>;
+ def VUPHH : UnaryVRRa<"vuphh", 0xE7D7, null_frag, v128f, v128h, 1>;
+ def VUPHF : UnaryVRRa<"vuphf", 0xE7D7, null_frag, v128g, v128f, 2>;
+
+ // Unpack logical high.
+ def VUPLHB : UnaryVRRa<"vuplhb", 0xE7D5, null_frag, v128h, v128b, 0>;
+ def VUPLHH : UnaryVRRa<"vuplhh", 0xE7D5, null_frag, v128f, v128h, 1>;
+ def VUPLHF : UnaryVRRa<"vuplhf", 0xE7D5, null_frag, v128g, v128f, 2>;
+
+ // Unpack low.
+ def VUPLB : UnaryVRRa<"vuplb", 0xE7D6, null_frag, v128h, v128b, 0>;
+ def VUPLHW : UnaryVRRa<"vuplhw", 0xE7D6, null_frag, v128f, v128h, 1>;
+ def VUPLF : UnaryVRRa<"vuplf", 0xE7D6, null_frag, v128g, v128f, 2>;
+
+ // Unpack logical low.
+ def VUPLLB : UnaryVRRa<"vupllb", 0xE7D4, null_frag, v128h, v128b, 0>;
+ def VUPLLH : UnaryVRRa<"vupllh", 0xE7D4, null_frag, v128f, v128h, 1>;
+ def VUPLLF : UnaryVRRa<"vupllf", 0xE7D4, null_frag, v128g, v128f, 2>;
+}
+
+//===----------------------------------------------------------------------===//
+// Integer arithmetic
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Add.
+ def VAB : BinaryVRRc<"vab", 0xE7F3, null_frag, v128b, v128b, 0>;
+ def VAH : BinaryVRRc<"vah", 0xE7F3, null_frag, v128h, v128h, 1>;
+ def VAF : BinaryVRRc<"vaf", 0xE7F3, null_frag, v128f, v128f, 2>;
+ def VAG : BinaryVRRc<"vag", 0xE7F3, null_frag, v128g, v128g, 3>;
+ def VAQ : BinaryVRRc<"vaq", 0xE7F3, null_frag, v128q, v128q, 4>;
+
+ // Add compute carry.
+ def VACCB : BinaryVRRc<"vaccb", 0xE7F1, null_frag, v128b, v128b, 0>;
+ def VACCH : BinaryVRRc<"vacch", 0xE7F1, null_frag, v128h, v128h, 1>;
+ def VACCF : BinaryVRRc<"vaccf", 0xE7F1, null_frag, v128f, v128f, 2>;
+ def VACCG : BinaryVRRc<"vaccg", 0xE7F1, null_frag, v128g, v128g, 3>;
+ def VACCQ : BinaryVRRc<"vaccq", 0xE7F1, null_frag, v128q, v128q, 4>;
+
+ // Add with carry.
+ def VACQ : TernaryVRRd<"vacq", 0xE7BB, null_frag, v128q, v128q, 4>;
+
+ // Add with carry compute carry.
+ def VACCCQ : TernaryVRRd<"vacccq", 0xE7B9, null_frag, v128q, v128q, 4>;
+
+ // And.
+ def VN : BinaryVRRc<"vn", 0xE768, null_frag, v128any, v128any>;
+
+ // And with complement.
+ def VNC : BinaryVRRc<"vnc", 0xE769, null_frag, v128any, v128any>;
+
+ // Average.
+ def VAVGB : BinaryVRRc<"vavgb", 0xE7F2, null_frag, v128b, v128b, 0>;
+ def VAVGH : BinaryVRRc<"vavgh", 0xE7F2, null_frag, v128h, v128h, 1>;
+ def VAVGF : BinaryVRRc<"vavgf", 0xE7F2, null_frag, v128f, v128f, 2>;
+ def VAVGG : BinaryVRRc<"vavgg", 0xE7F2, null_frag, v128g, v128g, 3>;
+
+ // Average logical.
+ def VAVGLB : BinaryVRRc<"vavglb", 0xE7F0, null_frag, v128b, v128b, 0>;
+ def VAVGLH : BinaryVRRc<"vavglh", 0xE7F0, null_frag, v128h, v128h, 1>;
+ def VAVGLF : BinaryVRRc<"vavglf", 0xE7F0, null_frag, v128f, v128f, 2>;
+ def VAVGLG : BinaryVRRc<"vavglg", 0xE7F0, null_frag, v128g, v128g, 3>;
+
+ // Checksum.
+ def VCKSM : BinaryVRRc<"vcksm", 0xE766, null_frag, v128any, v128any>;
+
+ // Count leading zeros.
+ def VCLZB : UnaryVRRa<"vclzb", 0xE753, null_frag, v128b, v128b, 0>;
+ def VCLZH : UnaryVRRa<"vclzh", 0xE753, null_frag, v128h, v128h, 1>;
+ def VCLZF : UnaryVRRa<"vclzf", 0xE753, null_frag, v128f, v128f, 2>;
+ def VCLZG : UnaryVRRa<"vclzg", 0xE753, null_frag, v128g, v128g, 3>;
+
+ // Count trailing zeros.
+ def VCTZB : UnaryVRRa<"vctzb", 0xE752, null_frag, v128b, v128b, 0>;
+ def VCTZH : UnaryVRRa<"vctzh", 0xE752, null_frag, v128h, v128h, 1>;
+ def VCTZF : UnaryVRRa<"vctzf", 0xE752, null_frag, v128f, v128f, 2>;
+ def VCTZG : UnaryVRRa<"vctzg", 0xE752, null_frag, v128g, v128g, 3>;
+
+ // Exclusive or.
+ def VX : BinaryVRRc<"vx", 0xE76D, null_frag, v128any, v128any>;
+
+ // Galois field multiply sum.
+ def VGFMB : BinaryVRRc<"vgfmb", 0xE7B4, null_frag, v128b, v128b, 0>;
+ def VGFMH : BinaryVRRc<"vgfmh", 0xE7B4, null_frag, v128h, v128h, 1>;
+ def VGFMF : BinaryVRRc<"vgfmf", 0xE7B4, null_frag, v128f, v128f, 2>;
+ def VGFMG : BinaryVRRc<"vgfmg", 0xE7B4, null_frag, v128g, v128g, 3>;
+
+ // Galois field multiply sum and accumulate.
+ def VGFMAB : TernaryVRRd<"vgfmab", 0xE7BC, null_frag, v128b, v128b, 0>;
+ def VGFMAH : TernaryVRRd<"vgfmah", 0xE7BC, null_frag, v128h, v128h, 1>;
+ def VGFMAF : TernaryVRRd<"vgfmaf", 0xE7BC, null_frag, v128f, v128f, 2>;
+ def VGFMAG : TernaryVRRd<"vgfmag", 0xE7BC, null_frag, v128g, v128g, 3>;
+
+ // Load complement.
+ def VLCB : UnaryVRRa<"vlcb", 0xE7DE, null_frag, v128b, v128b, 0>;
+ def VLCH : UnaryVRRa<"vlch", 0xE7DE, null_frag, v128h, v128h, 1>;
+ def VLCF : UnaryVRRa<"vlcf", 0xE7DE, null_frag, v128f, v128f, 2>;
+ def VLCG : UnaryVRRa<"vlcg", 0xE7DE, null_frag, v128g, v128g, 3>;
+
+ // Load positive.
+ def VLPB : UnaryVRRa<"vlpb", 0xE7DF, null_frag, v128b, v128b, 0>;
+ def VLPH : UnaryVRRa<"vlph", 0xE7DF, null_frag, v128h, v128h, 1>;
+ def VLPF : UnaryVRRa<"vlpf", 0xE7DF, null_frag, v128f, v128f, 2>;
+ def VLPG : UnaryVRRa<"vlpg", 0xE7DF, null_frag, v128g, v128g, 3>;
+
+ // Maximum.
+ def VMXB : BinaryVRRc<"vmxb", 0xE7FF, null_frag, v128b, v128b, 0>;
+ def VMXH : BinaryVRRc<"vmxh", 0xE7FF, null_frag, v128h, v128h, 1>;
+ def VMXF : BinaryVRRc<"vmxf", 0xE7FF, null_frag, v128f, v128f, 2>;
+ def VMXG : BinaryVRRc<"vmxg", 0xE7FF, null_frag, v128g, v128g, 3>;
+
+ // Maximum logical.
+ def VMXLB : BinaryVRRc<"vmxlb", 0xE7FD, null_frag, v128b, v128b, 0>;
+ def VMXLH : BinaryVRRc<"vmxlh", 0xE7FD, null_frag, v128h, v128h, 1>;
+ def VMXLF : BinaryVRRc<"vmxlf", 0xE7FD, null_frag, v128f, v128f, 2>;
+ def VMXLG : BinaryVRRc<"vmxlg", 0xE7FD, null_frag, v128g, v128g, 3>;
+
+ // Minimum.
+ def VMNB : BinaryVRRc<"vmnb", 0xE7FE, null_frag, v128b, v128b, 0>;
+ def VMNH : BinaryVRRc<"vmnh", 0xE7FE, null_frag, v128h, v128h, 1>;
+ def VMNF : BinaryVRRc<"vmnf", 0xE7FE, null_frag, v128f, v128f, 2>;
+ def VMNG : BinaryVRRc<"vmng", 0xE7FE, null_frag, v128g, v128g, 3>;
+
+ // Minimum logical.
+ def VMNLB : BinaryVRRc<"vmnlb", 0xE7FC, null_frag, v128b, v128b, 0>;
+ def VMNLH : BinaryVRRc<"vmnlh", 0xE7FC, null_frag, v128h, v128h, 1>;
+ def VMNLF : BinaryVRRc<"vmnlf", 0xE7FC, null_frag, v128f, v128f, 2>;
+ def VMNLG : BinaryVRRc<"vmnlg", 0xE7FC, null_frag, v128g, v128g, 3>;
+
+ // Multiply and add low.
+ def VMALB : TernaryVRRd<"vmalb", 0xE7AA, null_frag, v128b, v128b, 0>;
+ def VMALHW : TernaryVRRd<"vmalhw", 0xE7AA, null_frag, v128h, v128h, 1>;
+ def VMALF : TernaryVRRd<"vmalf", 0xE7AA, null_frag, v128f, v128f, 2>;
+
+ // Multiply and add high.
+ def VMAHB : TernaryVRRd<"vmahb", 0xE7AB, null_frag, v128b, v128b, 0>;
+ def VMAHH : TernaryVRRd<"vmahh", 0xE7AB, null_frag, v128h, v128h, 1>;
+ def VMAHF : TernaryVRRd<"vmahf", 0xE7AB, null_frag, v128f, v128f, 2>;
+
+ // Multiply and add logical high.
+ def VMALHB : TernaryVRRd<"vmalhb", 0xE7A9, null_frag, v128b, v128b, 0>;
+ def VMALHH : TernaryVRRd<"vmalhh", 0xE7A9, null_frag, v128h, v128h, 1>;
+ def VMALHF : TernaryVRRd<"vmalhf", 0xE7A9, null_frag, v128f, v128f, 2>;
+
+ // Multiply and add even.
+ def VMAEB : TernaryVRRd<"vmaeb", 0xE7AE, null_frag, v128h, v128b, 0>;
+ def VMAEH : TernaryVRRd<"vmaeh", 0xE7AE, null_frag, v128f, v128h, 1>;
+ def VMAEF : TernaryVRRd<"vmaef", 0xE7AE, null_frag, v128g, v128f, 2>;
+
+ // Multiply and add logical even.
+ def VMALEB : TernaryVRRd<"vmaleb", 0xE7AC, null_frag, v128h, v128b, 0>;
+ def VMALEH : TernaryVRRd<"vmaleh", 0xE7AC, null_frag, v128f, v128h, 1>;
+ def VMALEF : TernaryVRRd<"vmalef", 0xE7AC, null_frag, v128g, v128f, 2>;
+
+ // Multiply and add odd.
+ def VMAOB : TernaryVRRd<"vmaob", 0xE7AF, null_frag, v128h, v128b, 0>;
+ def VMAOH : TernaryVRRd<"vmaoh", 0xE7AF, null_frag, v128f, v128h, 1>;
+ def VMAOF : TernaryVRRd<"vmaof", 0xE7AF, null_frag, v128g, v128f, 2>;
+
+ // Multiply and add logical odd.
+ def VMALOB : TernaryVRRd<"vmalob", 0xE7AD, null_frag, v128h, v128b, 0>;
+ def VMALOH : TernaryVRRd<"vmaloh", 0xE7AD, null_frag, v128f, v128h, 1>;
+ def VMALOF : TernaryVRRd<"vmalof", 0xE7AD, null_frag, v128g, v128f, 2>;
+
+ // Multiply high.
+ def VMHB : BinaryVRRc<"vmhb", 0xE7A3, null_frag, v128b, v128b, 0>;
+ def VMHH : BinaryVRRc<"vmhh", 0xE7A3, null_frag, v128h, v128h, 1>;
+ def VMHF : BinaryVRRc<"vmhf", 0xE7A3, null_frag, v128f, v128f, 2>;
+
+ // Multiply logical high.
+ def VMLHB : BinaryVRRc<"vmlhb", 0xE7A1, null_frag, v128b, v128b, 0>;
+ def VMLHH : BinaryVRRc<"vmlhh", 0xE7A1, null_frag, v128h, v128h, 1>;
+ def VMLHF : BinaryVRRc<"vmlhf", 0xE7A1, null_frag, v128f, v128f, 2>;
+
+ // Multiply low.
+ def VMLB : BinaryVRRc<"vmlb", 0xE7A2, null_frag, v128b, v128b, 0>;
+ def VMLHW : BinaryVRRc<"vmlhw", 0xE7A2, null_frag, v128h, v128h, 1>;
+ def VMLF : BinaryVRRc<"vmlf", 0xE7A2, null_frag, v128f, v128f, 2>;
+
+ // Multiply even.
+ def VMEB : BinaryVRRc<"vmeb", 0xE7A6, null_frag, v128h, v128b, 0>;
+ def VMEH : BinaryVRRc<"vmeh", 0xE7A6, null_frag, v128f, v128h, 1>;
+ def VMEF : BinaryVRRc<"vmef", 0xE7A6, null_frag, v128g, v128f, 2>;
+
+ // Multiply logical even.
+ def VMLEB : BinaryVRRc<"vmleb", 0xE7A4, null_frag, v128h, v128b, 0>;
+ def VMLEH : BinaryVRRc<"vmleh", 0xE7A4, null_frag, v128f, v128h, 1>;
+ def VMLEF : BinaryVRRc<"vmlef", 0xE7A4, null_frag, v128g, v128f, 2>;
+
+ // Multiply odd.
+ def VMOB : BinaryVRRc<"vmob", 0xE7A7, null_frag, v128h, v128b, 0>;
+ def VMOH : BinaryVRRc<"vmoh", 0xE7A7, null_frag, v128f, v128h, 1>;
+ def VMOF : BinaryVRRc<"vmof", 0xE7A7, null_frag, v128g, v128f, 2>;
+
+ // Multiply logical odd.
+ def VMLOB : BinaryVRRc<"vmlob", 0xE7A5, null_frag, v128h, v128b, 0>;
+ def VMLOH : BinaryVRRc<"vmloh", 0xE7A5, null_frag, v128f, v128h, 1>;
+ def VMLOF : BinaryVRRc<"vmlof", 0xE7A5, null_frag, v128g, v128f, 2>;
+
+ // Nor.
+ def VNO : BinaryVRRc<"vno", 0xE76B, null_frag, v128any, v128any>;
+
+ // Or.
+ def VO : BinaryVRRc<"vo", 0xE76A, null_frag, v128any, v128any>;
+
+ // Population count.
+ def VPOPCT : BinaryVRRa<"vpopct", 0xE750>;
+
+ // Element rotate left logical (with vector shift amount).
+ def VERLLVB : BinaryVRRc<"verllvb", 0xE773, null_frag, v128b, v128b, 0>;
+ def VERLLVH : BinaryVRRc<"verllvh", 0xE773, null_frag, v128h, v128h, 1>;
+ def VERLLVF : BinaryVRRc<"verllvf", 0xE773, null_frag, v128f, v128f, 2>;
+ def VERLLVG : BinaryVRRc<"verllvg", 0xE773, null_frag, v128g, v128g, 3>;
+
+ // Element rotate left logical (with scalar shift amount).
+ def VERLLB : BinaryVRSa<"verllb", 0xE733, null_frag, v128b, v128b, 0>;
+ def VERLLH : BinaryVRSa<"verllh", 0xE733, null_frag, v128h, v128h, 1>;
+ def VERLLF : BinaryVRSa<"verllf", 0xE733, null_frag, v128f, v128f, 2>;
+ def VERLLG : BinaryVRSa<"verllg", 0xE733, null_frag, v128g, v128g, 3>;
+
+ // Element rotate and insert under mask.
+ def VERIMB : QuaternaryVRId<"verimb", 0xE772, null_frag, v128b, v128b, 0>;
+ def VERIMH : QuaternaryVRId<"verimh", 0xE772, null_frag, v128h, v128h, 1>;
+ def VERIMF : QuaternaryVRId<"verimf", 0xE772, null_frag, v128f, v128f, 2>;
+ def VERIMG : QuaternaryVRId<"verimg", 0xE772, null_frag, v128g, v128g, 3>;
+
+ // Element shift left (with vector shift amount).
+ def VESLVB : BinaryVRRc<"veslvb", 0xE770, null_frag, v128b, v128b, 0>;
+ def VESLVH : BinaryVRRc<"veslvh", 0xE770, null_frag, v128h, v128h, 1>;
+ def VESLVF : BinaryVRRc<"veslvf", 0xE770, null_frag, v128f, v128f, 2>;
+ def VESLVG : BinaryVRRc<"veslvg", 0xE770, null_frag, v128g, v128g, 3>;
+
+ // Element shift left (with scalar shift amount).
+ def VESLB : BinaryVRSa<"veslb", 0xE730, null_frag, v128b, v128b, 0>;
+ def VESLH : BinaryVRSa<"veslh", 0xE730, null_frag, v128h, v128h, 1>;
+ def VESLF : BinaryVRSa<"veslf", 0xE730, null_frag, v128f, v128f, 2>;
+ def VESLG : BinaryVRSa<"veslg", 0xE730, null_frag, v128g, v128g, 3>;
+
+ // Element shift right arithmetic (with vector shift amount).
+ def VESRAVB : BinaryVRRc<"vesravb", 0xE77A, null_frag, v128b, v128b, 0>;
+ def VESRAVH : BinaryVRRc<"vesravh", 0xE77A, null_frag, v128h, v128h, 1>;
+ def VESRAVF : BinaryVRRc<"vesravf", 0xE77A, null_frag, v128f, v128f, 2>;
+ def VESRAVG : BinaryVRRc<"vesravg", 0xE77A, null_frag, v128g, v128g, 3>;
+
+ // Element shift right arithmetic (with scalar shift amount).
+ def VESRAB : BinaryVRSa<"vesrab", 0xE73A, null_frag, v128b, v128b, 0>;
+ def VESRAH : BinaryVRSa<"vesrah", 0xE73A, null_frag, v128h, v128h, 1>;
+ def VESRAF : BinaryVRSa<"vesraf", 0xE73A, null_frag, v128f, v128f, 2>;
+ def VESRAG : BinaryVRSa<"vesrag", 0xE73A, null_frag, v128g, v128g, 3>;
+
+ // Element shift right logical (with vector shift amount).
+ def VESRLVB : BinaryVRRc<"vesrlvb", 0xE778, null_frag, v128b, v128b, 0>;
+ def VESRLVH : BinaryVRRc<"vesrlvh", 0xE778, null_frag, v128h, v128h, 1>;
+ def VESRLVF : BinaryVRRc<"vesrlvf", 0xE778, null_frag, v128f, v128f, 2>;
+ def VESRLVG : BinaryVRRc<"vesrlvg", 0xE778, null_frag, v128g, v128g, 3>;
+
+ // Element shift right logical (with scalar shift amount).
+ def VESRLB : BinaryVRSa<"vesrlb", 0xE738, null_frag, v128b, v128b, 0>;
+ def VESRLH : BinaryVRSa<"vesrlh", 0xE738, null_frag, v128h, v128h, 1>;
+ def VESRLF : BinaryVRSa<"vesrlf", 0xE738, null_frag, v128f, v128f, 2>;
+ def VESRLG : BinaryVRSa<"vesrlg", 0xE738, null_frag, v128g, v128g, 3>;
+
+ // Shift left.
+ def VSL : BinaryVRRc<"vsl", 0xE774, null_frag, v128b, v128b>;
+
+ // Shift left by byte.
+ def VSLB : BinaryVRRc<"vslb", 0xE775, null_frag, v128b, v128b>;
+
+ // Shift left double by byte.
+ def VSLDB : TernaryVRId<"vsldb", 0xE777, null_frag, v128b, v128b, 0>;
+
+ // Shift right arithmetic.
+ def VSRA : BinaryVRRc<"vsra", 0xE77E, null_frag, v128b, v128b>;
+
+ // Shift right arithmetic by byte.
+ def VSRAB : BinaryVRRc<"vsrab", 0xE77F, null_frag, v128b, v128b>;
+
+ // Shift right logical.
+ def VSRL : BinaryVRRc<"vsrl", 0xE77C, null_frag, v128b, v128b>;
+
+ // Shift right logical by byte.
+ def VSRLB : BinaryVRRc<"vsrlb", 0xE77D, null_frag, v128b, v128b>;
+
+ // Subtract.
+ def VSB : BinaryVRRc<"vsb", 0xE7F7, null_frag, v128b, v128b, 0>;
+ def VSH : BinaryVRRc<"vsh", 0xE7F7, null_frag, v128h, v128h, 1>;
+ def VSF : BinaryVRRc<"vsf", 0xE7F7, null_frag, v128f, v128f, 2>;
+ def VSG : BinaryVRRc<"vsg", 0xE7F7, null_frag, v128g, v128g, 3>;
+ def VSQ : BinaryVRRc<"vsq", 0xE7F7, null_frag, v128q, v128q, 4>;
+
+ // Subtract compute borrow indication.
+ def VSCBIB : BinaryVRRc<"vscbib", 0xE7F5, null_frag, v128b, v128b, 0>;
+ def VSCBIH : BinaryVRRc<"vscbih", 0xE7F5, null_frag, v128h, v128h, 1>;
+ def VSCBIF : BinaryVRRc<"vscbif", 0xE7F5, null_frag, v128f, v128f, 2>;
+ def VSCBIG : BinaryVRRc<"vscbig", 0xE7F5, null_frag, v128g, v128g, 3>;
+ def VSCBIQ : BinaryVRRc<"vscbiq", 0xE7F5, null_frag, v128q, v128q, 4>;
+
+ // Subtract with borrow indication.
+ def VSBIQ : TernaryVRRd<"vsbiq", 0xE7BF, null_frag, v128q, v128q, 4>;
+
+ // Subtract with borrow compute borrow indication.
+ def VSBCBIQ : TernaryVRRd<"vsbcbiq", 0xE7BD, null_frag, v128q, v128q, 4>;
+
+ // Sum across doubleword.
+ def VSUMGH : BinaryVRRc<"vsumgh", 0xE765, null_frag, v128g, v128h, 1>;
+ def VSUMGF : BinaryVRRc<"vsumgf", 0xE765, null_frag, v128g, v128f, 2>;
+
+ // Sum across quadword.
+ def VSUMQF : BinaryVRRc<"vsumqf", 0xE767, null_frag, v128q, v128f, 2>;
+ def VSUMQG : BinaryVRRc<"vsumqg", 0xE767, null_frag, v128q, v128g, 3>;
+
+ // Sum across word.
+ def VSUMB : BinaryVRRc<"vsumb", 0xE764, null_frag, v128f, v128b, 0>;
+ def VSUMH : BinaryVRRc<"vsumh", 0xE764, null_frag, v128f, v128h, 1>;
+}
+
+//===----------------------------------------------------------------------===//
+// Integer comparison
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Element compare.
+ let Defs = [CC] in {
+ def VECB : CompareVRRa<"vecb", 0xE7DB, null_frag, v128b, 0>;
+ def VECH : CompareVRRa<"vech", 0xE7DB, null_frag, v128h, 1>;
+ def VECF : CompareVRRa<"vecf", 0xE7DB, null_frag, v128f, 2>;
+ def VECG : CompareVRRa<"vecg", 0xE7DB, null_frag, v128g, 3>;
+ }
+
+ // Element compare logical.
+ let Defs = [CC] in {
+ def VECLB : CompareVRRa<"veclb", 0xE7D9, null_frag, v128b, 0>;
+ def VECLH : CompareVRRa<"veclh", 0xE7D9, null_frag, v128h, 1>;
+ def VECLF : CompareVRRa<"veclf", 0xE7D9, null_frag, v128f, 2>;
+ def VECLG : CompareVRRa<"veclg", 0xE7D9, null_frag, v128g, 3>;
+ }
+
+ // Compare equal.
+ defm VCEQB : BinaryVRRbSPair<"vceqb", 0xE7F8, null_frag, null_frag,
+ v128b, v128b, 0>;
+ defm VCEQH : BinaryVRRbSPair<"vceqh", 0xE7F8, null_frag, null_frag,
+ v128h, v128h, 1>;
+ defm VCEQF : BinaryVRRbSPair<"vceqf", 0xE7F8, null_frag, null_frag,
+ v128f, v128f, 2>;
+ defm VCEQG : BinaryVRRbSPair<"vceqg", 0xE7F8, null_frag, null_frag,
+ v128g, v128g, 3>;
+
+ // Compare high.
+ defm VCHB : BinaryVRRbSPair<"vchb", 0xE7FB, null_frag, null_frag,
+ v128b, v128b, 0>;
+ defm VCHH : BinaryVRRbSPair<"vchh", 0xE7FB, null_frag, null_frag,
+ v128h, v128h, 1>;
+ defm VCHF : BinaryVRRbSPair<"vchf", 0xE7FB, null_frag, null_frag,
+ v128f, v128f, 2>;
+ defm VCHG : BinaryVRRbSPair<"vchg", 0xE7FB, null_frag, null_frag,
+ v128g, v128g, 3>;
+
+ // Compare high logical.
+ defm VCHLB : BinaryVRRbSPair<"vchlb", 0xE7F9, null_frag, null_frag,
+ v128b, v128b, 0>;
+ defm VCHLH : BinaryVRRbSPair<"vchlh", 0xE7F9, null_frag, null_frag,
+ v128h, v128h, 1>;
+ defm VCHLF : BinaryVRRbSPair<"vchlf", 0xE7F9, null_frag, null_frag,
+ v128f, v128f, 2>;
+ defm VCHLG : BinaryVRRbSPair<"vchlg", 0xE7F9, null_frag, null_frag,
+ v128g, v128g, 3>;
+
+ // Test under mask.
+ let Defs = [CC] in
+ def VTM : CompareVRRa<"vtm", 0xE7D8, null_frag, v128any, 0>;
+}
+
+//===----------------------------------------------------------------------===//
+// Floating-point arithmetic
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Add.
+ def VFADB : BinaryVRRc<"vfadb", 0xE7E3, null_frag, v128db, v128db, 3, 0>;
+ def WFADB : BinaryVRRc<"wfadb", 0xE7E3, null_frag, v64db, v64db, 3, 8>;
+
+ // Convert from fixed 64-bit.
+ def VCDGB : TernaryVRRa<"vcdgb", 0xE7C3, null_frag, v128db, v128g, 3, 0>;
+ def WCDGB : TernaryVRRa<"wcdgb", 0xE7C3, null_frag, v64db, v64g, 3, 8>;
+
+ // Convert from logical 64-bit.
+ def VCDLGB : TernaryVRRa<"vcdlgb", 0xE7C1, null_frag, v128db, v128g, 3, 0>;
+ def WCDLGB : TernaryVRRa<"wcdlgb", 0xE7C1, null_frag, v64db, v64g, 3, 8>;
+
+ // Convert to fixed 64-bit.
+ def VCGDB : TernaryVRRa<"vcgdb", 0xE7C2, null_frag, v128g, v128db, 3, 0>;
+ def WCGDB : TernaryVRRa<"wcgdb", 0xE7C2, null_frag, v64g, v64db, 3, 8>;
+
+ // Convert to logical 64-bit.
+ def VCLGDB : TernaryVRRa<"vclgdb", 0xE7C0, null_frag, v128g, v128db, 3, 0>;
+ def WCLGDB : TernaryVRRa<"wclgdb", 0xE7C0, null_frag, v64g, v64db, 3, 8>;
+
+ // Divide.
+ def VFDDB : BinaryVRRc<"vfddb", 0xE7E5, null_frag, v128db, v128db, 3, 0>;
+ def WFDDB : BinaryVRRc<"wfddb", 0xE7E5, null_frag, v64db, v64db, 3, 8>;
+
+ // Load FP integer.
+ def VFIDB : TernaryVRRa<"vfidb", 0xE7C7, null_frag, v128db, v128db, 3, 0>;
+ def WFIDB : TernaryVRRa<"wfidb", 0xE7C7, null_frag, v64db, v64db, 3, 8>;
+
+ // Load lengthened.
+ def VLDEB : UnaryVRRa<"vldeb", 0xE7C4, null_frag, v128db, v128eb, 2, 0>;
+ def WLDEB : UnaryVRRa<"wldeb", 0xE7C4, null_frag, v64db, v32eb, 2, 8>;
+
+ // Load rounded,
+ def VLEDB : TernaryVRRa<"vledb", 0xE7C5, null_frag, v128eb, v128db, 3, 0>;
+ def WLEDB : TernaryVRRa<"wledb", 0xE7C5, null_frag, v32eb, v64db, 3, 8>;
+
+ // Multiply.
+ def VFMDB : BinaryVRRc<"vfmdb", 0xE7E7, null_frag, v128db, v128db, 3, 0>;
+ def WFMDB : BinaryVRRc<"wfmdb", 0xE7E7, null_frag, v64db, v64db, 3, 8>;
+
+ // Multiply and add.
+ def VFMADB : TernaryVRRe<"vfmadb", 0xE78F, null_frag, v128db, v128db, 0, 3>;
+ def WFMADB : TernaryVRRe<"wfmadb", 0xE78F, null_frag, v64db, v64db, 8, 3>;
+
+ // Multiply and subtract.
+ def VFMSDB : TernaryVRRe<"vfmsdb", 0xE78E, null_frag, v128db, v128db, 0, 3>;
+ def WFMSDB : TernaryVRRe<"wfmsdb", 0xE78E, null_frag, v64db, v64db, 8, 3>;
+
+ // Load complement,
+ def VFLCDB : UnaryVRRa<"vflcdb", 0xE7CC, null_frag, v128db, v128db, 3, 0, 0>;
+ def WFLCDB : UnaryVRRa<"wflcdb", 0xE7CC, null_frag, v64db, v64db, 3, 8, 0>;
+
+ // Load negative.
+ def VFLNDB : UnaryVRRa<"vflndb", 0xE7CC, null_frag, v128db, v128db, 3, 0, 1>;
+ def WFLNDB : UnaryVRRa<"wflndb", 0xE7CC, null_frag, v64db, v64db, 3, 8, 1>;
+
+ // Load positive.
+ def VFLPDB : UnaryVRRa<"vflpdb", 0xE7CC, null_frag, v128db, v128db, 3, 0, 2>;
+ def WFLPDB : UnaryVRRa<"wflpdb", 0xE7CC, null_frag, v64db, v64db, 3, 8, 2>;
+
+ // Square root.
+ def VFSQDB : UnaryVRRa<"vfsqdb", 0xE7CE, null_frag, v128db, v128db, 3, 0>;
+ def WFSQDB : UnaryVRRa<"wfsqdb", 0xE7CE, null_frag, v64db, v64db, 3, 8>;
+
+ // Subtract.
+ def VFSDB : BinaryVRRc<"vfsdb", 0xE7E2, null_frag, v128db, v128db, 3, 0>;
+ def WFSDB : BinaryVRRc<"wfsdb", 0xE7E2, null_frag, v64db, v64db, 3, 8>;
+
+ // Test data class immediate.
+ let Defs = [CC] in {
+ def VFTCIDB : BinaryVRIe<"vftcidb", 0xE74A, null_frag, v128g, v128db, 3, 0>;
+ def WFTCIDB : BinaryVRIe<"wftcidb", 0xE74A, null_frag, v64g, v64db, 3, 8>;
+ }
+}
+
+//===----------------------------------------------------------------------===//
+// Floating-point comparison
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ // Compare scalar.
+ let Defs = [CC] in
+ def WFCDB : CompareVRRa<"wfcdb", 0xE7CB, null_frag, v64db, 3>;
+
+ // Compare and signal scalar.
+ let Defs = [CC] in
+ def WFKDB : CompareVRRa<"wfkdb", 0xE7CA, null_frag, v64db, 3>;
+
+ // Compare equal.
+ defm VFCEDB : BinaryVRRcSPair<"vfcedb", 0xE7E8, null_frag, null_frag,
+ v128g, v128db, 3, 0>;
+ defm WFCEDB : BinaryVRRcSPair<"wfcedb", 0xE7E8, null_frag, null_frag,
+ v64g, v64db, 3, 8>;
+
+ // Compare high.
+ defm VFCHDB : BinaryVRRcSPair<"vfchdb", 0xE7EB, null_frag, null_frag,
+ v128g, v128db, 3, 0>;
+ defm WFCHDB : BinaryVRRcSPair<"wfchdb", 0xE7EB, null_frag, null_frag,
+ v64g, v64db, 3, 8>;
+
+ // Compare high or equal.
+ defm VFCHEDB : BinaryVRRcSPair<"vfchedb", 0xE7EA, null_frag, null_frag,
+ v128g, v128db, 3, 0>;
+ defm WFCHEDB : BinaryVRRcSPair<"wfchedb", 0xE7EA, null_frag, null_frag,
+ v64g, v64db, 3, 8>;
+}
+
+//===----------------------------------------------------------------------===//
+// String instructions
+//===----------------------------------------------------------------------===//
+
+let Predicates = [FeatureVector] in {
+ defm VFAEB : TernaryVRRbSPair<"vfaeb", 0xE782, null_frag, null_frag,
+ v128b, v128b, 0, 0>;
+ defm VFAEH : TernaryVRRbSPair<"vfaeh", 0xE782, null_frag, null_frag,
+ v128h, v128h, 1, 0>;
+ defm VFAEF : TernaryVRRbSPair<"vfaef", 0xE782, null_frag, null_frag,
+ v128f, v128f, 2, 0>;
+ defm VFAEZB : TernaryVRRbSPair<"vfaezb", 0xE782, null_frag, null_frag,
+ v128b, v128b, 0, 2>;
+ defm VFAEZH : TernaryVRRbSPair<"vfaezh", 0xE782, null_frag, null_frag,
+ v128h, v128h, 1, 2>;
+ defm VFAEZF : TernaryVRRbSPair<"vfaezf", 0xE782, null_frag, null_frag,
+ v128f, v128f, 2, 2>;
+
+ defm VFEEB : BinaryVRRbSPair<"vfeeb", 0xE780, null_frag, null_frag,
+ v128b, v128b, 0, 0, 1>;
+ defm VFEEH : BinaryVRRbSPair<"vfeeh", 0xE780, null_frag, null_frag,
+ v128h, v128h, 1, 0, 1>;
+ defm VFEEF : BinaryVRRbSPair<"vfeef", 0xE780, null_frag, null_frag,
+ v128f, v128f, 2, 0, 1>;
+ defm VFEEZB : BinaryVRRbSPair<"vfeezb", 0xE780, null_frag, null_frag,
+ v128b, v128b, 0, 2, 3>;
+ defm VFEEZH : BinaryVRRbSPair<"vfeezh", 0xE780, null_frag, null_frag,
+ v128h, v128h, 1, 2, 3>;
+ defm VFEEZF : BinaryVRRbSPair<"vfeezf", 0xE780, null_frag, null_frag,
+ v128f, v128f, 2, 2, 3>;
+
+ defm VFENEB : BinaryVRRbSPair<"vfeneb", 0xE781, null_frag, null_frag,
+ v128b, v128b, 0, 0, 1>;
+ defm VFENEH : BinaryVRRbSPair<"vfeneh", 0xE781, null_frag, null_frag,
+ v128h, v128h, 1, 0, 1>;
+ defm VFENEF : BinaryVRRbSPair<"vfenef", 0xE781, null_frag, null_frag,
+ v128f, v128f, 2, 0, 1>;
+ defm VFENEZB : BinaryVRRbSPair<"vfenezb", 0xE781, null_frag, null_frag,
+ v128b, v128b, 0, 2, 3>;
+ defm VFENEZH : BinaryVRRbSPair<"vfenezh", 0xE781, null_frag, null_frag,
+ v128h, v128h, 1, 2, 3>;
+ defm VFENEZF : BinaryVRRbSPair<"vfenezf", 0xE781, null_frag, null_frag,
+ v128f, v128f, 2, 2, 3>;
+
+ defm VISTRB : UnaryVRRaSPair<"vistrb", 0xE75C, null_frag, null_frag,
+ v128b, v128b, 0>;
+ defm VISTRH : UnaryVRRaSPair<"vistrh", 0xE75C, null_frag, null_frag,
+ v128h, v128h, 1>;
+ defm VISTRF : UnaryVRRaSPair<"vistrf", 0xE75C, null_frag, null_frag,
+ v128f, v128f, 2>;
+
+ defm VSTRCB : QuaternaryVRRdSPair<"vstrcb", 0xE78A, null_frag, null_frag,
+ v128b, v128b, 0, 0>;
+ defm VSTRCH : QuaternaryVRRdSPair<"vstrch", 0xE78A, null_frag, null_frag,
+ v128h, v128h, 1, 0>;
+ defm VSTRCF : QuaternaryVRRdSPair<"vstrcf", 0xE78A, null_frag, null_frag,
+ v128f, v128f, 2, 0>;
+ defm VSTRCZB : QuaternaryVRRdSPair<"vstrczb", 0xE78A, null_frag, null_frag,
+ v128b, v128b, 0, 2>;
+ defm VSTRCZH : QuaternaryVRRdSPair<"vstrczh", 0xE78A, null_frag, null_frag,
+ v128h, v128h, 1, 2>;
+ defm VSTRCZF : QuaternaryVRRdSPair<"vstrczf", 0xE78A, null_frag, null_frag,
+ v128f, v128f, 2, 2>;
+}
diff --git a/llvm/lib/Target/SystemZ/SystemZOperands.td b/llvm/lib/Target/SystemZ/SystemZOperands.td
index 94a682d1465..9af90d492cf 100644
--- a/llvm/lib/Target/SystemZ/SystemZOperands.td
+++ b/llvm/lib/Target/SystemZ/SystemZOperands.td
@@ -78,6 +78,22 @@ class AddressAsmOperand<string format, string bitsize, string dispsize,
let RenderMethod = "add"##format##"Operands";
}
+// Constructs an instruction operand for an addressing mode. FORMAT,
+// BITSIZE, DISPSIZE and LENGTH are the parameters to an associated
+// AddressAsmOperand. OPERANDS is a list of individual operands
+// (base register, displacement, etc.).
+class AddressOperand<string bitsize, string dispsize, string length,
+ string format, dag operands>
+ : Operand<!cast<ValueType>("i"##bitsize)> {
+ let PrintMethod = "print"##format##"Operand";
+ let EncoderMethod = "get"##format##dispsize##length##"Encoding";
+ let DecoderMethod =
+ "decode"##format##bitsize##"Disp"##dispsize##length##"Operand";
+ let MIOperandInfo = operands;
+ let ParserMatchClass =
+ !cast<AddressAsmOperand>(format##bitsize##"Disp"##dispsize##length);
+}
+
// Constructs both a DAG pattern and instruction operand for an addressing mode.
// FORMAT, BITSIZE, DISPSIZE and LENGTH are the parameters to an associated
// AddressAsmOperand. OPERANDS is a list of NUMOPS individual operands
@@ -93,15 +109,7 @@ class AddressingMode<string seltype, string bitsize, string dispsize,
: ComplexPattern<!cast<ValueType>("i"##bitsize), numops,
"select"##seltype##dispsize##suffix##length,
[add, sub, or, frameindex, z_adjdynalloc]>,
- Operand<!cast<ValueType>("i"##bitsize)> {
- let PrintMethod = "print"##format##"Operand";
- let EncoderMethod = "get"##format##dispsize##length##"Encoding";
- let DecoderMethod =
- "decode"##format##bitsize##"Disp"##dispsize##length##"Operand";
- let MIOperandInfo = operands;
- let ParserMatchClass =
- !cast<AddressAsmOperand>(format##bitsize##"Disp"##dispsize##length);
-}
+ AddressOperand<bitsize, dispsize, length, format, operands>;
// An addressing mode with a base and displacement but no index.
class BDMode<string type, string bitsize, string dispsize, string suffix>
@@ -125,6 +133,13 @@ class BDLMode<string type, string bitsize, string dispsize, string suffix,
!cast<Immediate>("disp"##dispsize##"imm"##bitsize),
!cast<Immediate>("imm"##bitsize))>;
+// An addressing mode with a base, displacement and a vector index.
+class BDVMode<string bitsize, string dispsize>
+ : AddressOperand<bitsize, dispsize, "", "BDVAddr",
+ (ops !cast<RegisterOperand>("ADDR"##bitsize),
+ !cast<Immediate>("disp"##dispsize##"imm"##bitsize),
+ !cast<RegisterOperand>("VR128"))>;
+
//===----------------------------------------------------------------------===//
// Extracting immediate operands from nodes
// These all create MVT::i64 nodes to ensure the value is not sign-extended
@@ -179,6 +194,18 @@ def UIMM8 : SDNodeXForm<imm, [{
MVT::i64);
}]>;
+// Truncate an immediate to a 8-bit unsigned quantity and mask off low bit.
+def UIMM8EVEN : SDNodeXForm<imm, [{
+ return CurDAG->getTargetConstant(N->getZExtValue() & 0xfe, SDLoc(N),
+ MVT::i64);
+}]>;
+
+// Truncate an immediate to a 12-bit unsigned quantity.
+def UIMM12 : SDNodeXForm<imm, [{
+ return CurDAG->getTargetConstant(N->getZExtValue() & 0xfff, SDLoc(N),
+ MVT::i64);
+}]>;
+
// Truncate an immediate to a 16-bit signed quantity.
def SIMM16 : SDNodeXForm<imm, [{
return CurDAG->getTargetConstant(int16_t(N->getZExtValue()), SDLoc(N),
@@ -213,10 +240,14 @@ def NEGIMM32 : SDNodeXForm<imm, [{
// Immediate asm operands.
//===----------------------------------------------------------------------===//
+def U1Imm : ImmediateAsmOperand<"U1Imm">;
+def U2Imm : ImmediateAsmOperand<"U2Imm">;
+def U3Imm : ImmediateAsmOperand<"U3Imm">;
def U4Imm : ImmediateAsmOperand<"U4Imm">;
def U6Imm : ImmediateAsmOperand<"U6Imm">;
def S8Imm : ImmediateAsmOperand<"S8Imm">;
def U8Imm : ImmediateAsmOperand<"U8Imm">;
+def U12Imm : ImmediateAsmOperand<"U12Imm">;
def S16Imm : ImmediateAsmOperand<"S16Imm">;
def U16Imm : ImmediateAsmOperand<"U16Imm">;
def S32Imm : ImmediateAsmOperand<"S32Imm">;
@@ -247,10 +278,28 @@ def imm32lh16c : Immediate<i32, [{
}], LH16, "U16Imm">;
// Short immediates
+def imm32zx1 : Immediate<i32, [{
+ return isUInt<1>(N->getZExtValue());
+}], NOOP_SDNodeXForm, "U1Imm">;
+
+def imm32zx2 : Immediate<i32, [{
+ return isUInt<2>(N->getZExtValue());
+}], NOOP_SDNodeXForm, "U2Imm">;
+
+def imm32zx3 : Immediate<i32, [{
+ return isUInt<3>(N->getZExtValue());
+}], NOOP_SDNodeXForm, "U3Imm">;
+
def imm32zx4 : Immediate<i32, [{
return isUInt<4>(N->getZExtValue());
}], NOOP_SDNodeXForm, "U4Imm">;
+// Note: this enforces an even value during code generation only.
+// When used from the assembler, any 4-bit value is allowed.
+def imm32zx4even : Immediate<i32, [{
+ return isUInt<4>(N->getZExtValue());
+}], UIMM8EVEN, "U4Imm">;
+
def imm32zx6 : Immediate<i32, [{
return isUInt<6>(N->getZExtValue());
}], NOOP_SDNodeXForm, "U6Imm">;
@@ -265,6 +314,10 @@ def imm32zx8 : Immediate<i32, [{
def imm32zx8trunc : Immediate<i32, [{}], UIMM8, "U8Imm">;
+def imm32zx12 : Immediate<i32, [{
+ return isUInt<12>(N->getZExtValue());
+}], UIMM12, "U12Imm">;
+
def imm32sx16 : Immediate<i32, [{
return isInt<16>(N->getSExtValue());
}], SIMM16, "S16Imm">;
@@ -445,6 +498,7 @@ def BDAddr64Disp20 : AddressAsmOperand<"BDAddr", "64", "20">;
def BDXAddr64Disp12 : AddressAsmOperand<"BDXAddr", "64", "12">;
def BDXAddr64Disp20 : AddressAsmOperand<"BDXAddr", "64", "20">;
def BDLAddr64Disp12Len8 : AddressAsmOperand<"BDLAddr", "64", "12", "Len8">;
+def BDVAddr64Disp12 : AddressAsmOperand<"BDVAddr", "64", "12">;
// DAG patterns and operands for addressing modes. Each mode has
// the form <type><range><group>[<len>] where:
@@ -457,6 +511,7 @@ def BDLAddr64Disp12Len8 : AddressAsmOperand<"BDLAddr", "64", "12", "Len8">;
// laaddr : like bdxaddr, but used for Load Address operations
// dynalloc : base + displacement + index + ADJDYNALLOC
// bdladdr : base + displacement with a length field
+// bdvaddr : base + displacement with a vector index
//
// <range> is one of:
// 12 : the displacement is an unsigned 12-bit value
@@ -489,6 +544,7 @@ def dynalloc12only : BDXMode<"DynAlloc", "64", "12", "Only">;
def laaddr12pair : BDXMode<"LAAddr", "64", "12", "Pair">;
def laaddr20pair : BDXMode<"LAAddr", "64", "20", "Pair">;
def bdladdr12onlylen8 : BDLMode<"BDLAddr", "64", "12", "Only", "8">;
+def bdvaddr12only : BDVMode< "64", "12">;
//===----------------------------------------------------------------------===//
// Miscellaneous
diff --git a/llvm/lib/Target/SystemZ/SystemZProcessors.td b/llvm/lib/Target/SystemZ/SystemZProcessors.td
index 15614c970cd..32fbe5ae9ef 100644
--- a/llvm/lib/Target/SystemZ/SystemZProcessors.td
+++ b/llvm/lib/Target/SystemZ/SystemZProcessors.td
@@ -70,6 +70,12 @@ def FeatureProcessorAssist : SystemZFeature<
"Assume that the processor-assist facility is installed"
>;
+def FeatureVector : SystemZFeature<
+ "vector", "Vector",
+ "Assume that the vectory facility is installed"
+>;
+def FeatureNoVector : SystemZMissingFeature<"Vector">;
+
def : Processor<"generic", NoItineraries, []>;
def : Processor<"z10", NoItineraries, []>;
def : Processor<"z196", NoItineraries,
@@ -82,3 +88,9 @@ def : Processor<"zEC12", NoItineraries,
FeatureFastSerialization, FeatureInterlockedAccess1,
FeatureMiscellaneousExtensions,
FeatureTransactionalExecution, FeatureProcessorAssist]>;
+def : Processor<"z13", NoItineraries,
+ [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
+ FeatureFPExtension, FeaturePopulationCount,
+ FeatureFastSerialization, FeatureInterlockedAccess1,
+ FeatureTransactionalExecution, FeatureProcessorAssist,
+ FeatureVector]>;
diff --git a/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td b/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td
index c980ea50930..85aa0a62cc7 100644
--- a/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td
+++ b/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td
@@ -26,21 +26,23 @@ def subreg_h32 : SubRegIndex<32, 32>; // Also acts as subreg_lh32.
def subreg_l64 : SubRegIndex<64, 0>;
def subreg_h64 : SubRegIndex<64, 64>;
def subreg_r32 : SubRegIndex<32, 32>; // Reinterpret a wider reg as 32 bits.
+def subreg_r64 : SubRegIndex<64, 64>; // Reinterpret a wider reg as 64 bits.
def subreg_hh32 : ComposedSubRegIndex<subreg_h64, subreg_h32>;
def subreg_hl32 : ComposedSubRegIndex<subreg_h64, subreg_l32>;
def subreg_hr32 : ComposedSubRegIndex<subreg_h64, subreg_r32>;
}
-// Define a register class that contains values of type TYPE and an
+// Define a register class that contains values of types TYPES and an
// associated operand called NAME. SIZE is the size and alignment
// of the registers and REGLIST is the list of individual registers.
-multiclass SystemZRegClass<string name, ValueType type, int size, dag regList> {
+multiclass SystemZRegClass<string name, list<ValueType> types, int size,
+ dag regList> {
def AsmOperand : AsmOperandClass {
let Name = name;
let ParserMethod = "parse"##name;
let RenderMethod = "addRegOperands";
}
- def Bit : RegisterClass<"SystemZ", [type], size, regList> {
+ def Bit : RegisterClass<"SystemZ", types, size, regList> {
let Size = size;
}
def "" : RegisterOperand<!cast<RegisterClass>(name##"Bit")> {
@@ -86,16 +88,19 @@ foreach I = [0, 2, 4, 6, 8, 10, 12, 14] in {
/// Allocate the callee-saved R6-R13 backwards. That way they can be saved
/// together with R14 and R15 in one prolog instruction.
-defm GR32 : SystemZRegClass<"GR32", i32, 32, (add (sequence "R%uL", 0, 5),
- (sequence "R%uL", 15, 6))>;
-defm GRH32 : SystemZRegClass<"GRH32", i32, 32, (add (sequence "R%uH", 0, 5),
- (sequence "R%uH", 15, 6))>;
-defm GR64 : SystemZRegClass<"GR64", i64, 64, (add (sequence "R%uD", 0, 5),
- (sequence "R%uD", 15, 6))>;
+defm GR32 : SystemZRegClass<"GR32", [i32], 32,
+ (add (sequence "R%uL", 0, 5),
+ (sequence "R%uL", 15, 6))>;
+defm GRH32 : SystemZRegClass<"GRH32", [i32], 32,
+ (add (sequence "R%uH", 0, 5),
+ (sequence "R%uH", 15, 6))>;
+defm GR64 : SystemZRegClass<"GR64", [i64], 64,
+ (add (sequence "R%uD", 0, 5),
+ (sequence "R%uD", 15, 6))>;
// Combine the low and high GR32s into a single class. This can only be
// used for virtual registers if the high-word facility is available.
-defm GRX32 : SystemZRegClass<"GRX32", i32, 32,
+defm GRX32 : SystemZRegClass<"GRX32", [i32], 32,
(add (sequence "R%uL", 0, 5),
(sequence "R%uH", 0, 5),
R15L, R15H, R14L, R14H, R13L, R13H,
@@ -104,18 +109,17 @@ defm GRX32 : SystemZRegClass<"GRX32", i32, 32,
// The architecture doesn't really have any i128 support, so model the
// register pairs as untyped instead.
-defm GR128 : SystemZRegClass<"GR128", untyped, 128, (add R0Q, R2Q, R4Q,
- R12Q, R10Q, R8Q, R6Q,
- R14Q)>;
+defm GR128 : SystemZRegClass<"GR128", [untyped], 128,
+ (add R0Q, R2Q, R4Q, R12Q, R10Q, R8Q, R6Q, R14Q)>;
// Base and index registers. Everything except R0, which in an address
// context evaluates as 0.
-defm ADDR32 : SystemZRegClass<"ADDR32", i32, 32, (sub GR32Bit, R0L)>;
-defm ADDR64 : SystemZRegClass<"ADDR64", i64, 64, (sub GR64Bit, R0D)>;
+defm ADDR32 : SystemZRegClass<"ADDR32", [i32], 32, (sub GR32Bit, R0L)>;
+defm ADDR64 : SystemZRegClass<"ADDR64", [i64], 64, (sub GR64Bit, R0D)>;
// Not used directly, but needs to exist for ADDR32 and ADDR64 subregs
// of a GR128.
-defm ADDR128 : SystemZRegClass<"ADDR128", untyped, 128, (sub GR128Bit, R0Q)>;
+defm ADDR128 : SystemZRegClass<"ADDR128", [untyped], 128, (sub GR128Bit, R0Q)>;
//===----------------------------------------------------------------------===//
// Floating-point registers
@@ -144,14 +148,34 @@ def F11Dwarf : DwarfMapping<29>;
def F13Dwarf : DwarfMapping<30>;
def F15Dwarf : DwarfMapping<31>;
-// Lower 32 bits of one of the 16 64-bit floating-point registers
+def F16Dwarf : DwarfMapping<68>;
+def F18Dwarf : DwarfMapping<69>;
+def F20Dwarf : DwarfMapping<70>;
+def F22Dwarf : DwarfMapping<71>;
+
+def F17Dwarf : DwarfMapping<72>;
+def F19Dwarf : DwarfMapping<73>;
+def F21Dwarf : DwarfMapping<74>;
+def F23Dwarf : DwarfMapping<75>;
+
+def F24Dwarf : DwarfMapping<76>;
+def F26Dwarf : DwarfMapping<77>;
+def F28Dwarf : DwarfMapping<78>;
+def F30Dwarf : DwarfMapping<79>;
+
+def F25Dwarf : DwarfMapping<80>;
+def F27Dwarf : DwarfMapping<81>;
+def F29Dwarf : DwarfMapping<82>;
+def F31Dwarf : DwarfMapping<83>;
+
+// Upper 32 bits of one of the floating-point registers
class FPR32<bits<16> num, string n> : SystemZReg<n> {
let HWEncoding = num;
}
-// One of the 16 64-bit floating-point registers
-class FPR64<bits<16> num, string n, FPR32 low>
- : SystemZRegWithSubregs<n, [low]> {
+// One of the floating-point registers.
+class FPR64<bits<16> num, string n, FPR32 high>
+ : SystemZRegWithSubregs<n, [high]> {
let HWEncoding = num;
let SubRegIndices = [subreg_r32];
}
@@ -163,12 +187,17 @@ class FPR128<bits<16> num, string n, FPR64 low, FPR64 high>
let SubRegIndices = [subreg_l64, subreg_h64];
}
-// Floating-point registers
+// Floating-point registers. Registers 16-31 require the vector facility.
foreach I = 0-15 in {
def F#I#S : FPR32<I, "f"#I>;
def F#I#D : FPR64<I, "f"#I, !cast<FPR32>("F"#I#"S")>,
DwarfRegNum<[!cast<DwarfMapping>("F"#I#"Dwarf").Id]>;
}
+foreach I = 16-31 in {
+ def F#I#S : FPR32<I, "v"#I>;
+ def F#I#D : FPR64<I, "v"#I, !cast<FPR32>("F"#I#"S")>,
+ DwarfRegNum<[!cast<DwarfMapping>("F"#I#"Dwarf").Id]>;
+}
foreach I = [0, 1, 4, 5, 8, 9, 12, 13] in {
def F#I#Q : FPR128<I, "f"#I, !cast<FPR64>("F"#!add(I, 2)#"D"),
@@ -177,10 +206,74 @@ foreach I = [0, 1, 4, 5, 8, 9, 12, 13] in {
// There's no store-multiple instruction for FPRs, so we're not fussy
// about the order in which call-saved registers are allocated.
-defm FP32 : SystemZRegClass<"FP32", f32, 32, (sequence "F%uS", 0, 15)>;
-defm FP64 : SystemZRegClass<"FP64", f64, 64, (sequence "F%uD", 0, 15)>;
-defm FP128 : SystemZRegClass<"FP128", f128, 128, (add F0Q, F1Q, F4Q, F5Q,
- F8Q, F9Q, F12Q, F13Q)>;
+defm FP32 : SystemZRegClass<"FP32", [f32], 32, (sequence "F%uS", 0, 15)>;
+defm FP64 : SystemZRegClass<"FP64", [f64], 64, (sequence "F%uD", 0, 15)>;
+defm FP128 : SystemZRegClass<"FP128", [f128], 128,
+ (add F0Q, F1Q, F4Q, F5Q, F8Q, F9Q, F12Q, F13Q)>;
+
+//===----------------------------------------------------------------------===//
+// Vector registers
+//===----------------------------------------------------------------------===//
+
+// A full 128-bit vector register, with an FPR64 as its high part.
+class VR128<bits<16> num, string n, FPR64 high>
+ : SystemZRegWithSubregs<n, [high]> {
+ let HWEncoding = num;
+ let SubRegIndices = [subreg_r64];
+}
+
+// Full vector registers.
+foreach I = 0-31 in {
+ def V#I : VR128<I, "v"#I, !cast<FPR64>("F"#I#"D")>,
+ DwarfRegNum<[!cast<DwarfMapping>("F"#I#"Dwarf").Id]>;
+}
+
+// Class used to store 32-bit values in the first element of a vector
+// register. f32 scalars are used for the WLEDB and WLDEB instructions.
+defm VR32 : SystemZRegClass<"VR32", [f32, v4i8, v2i16], 32,
+ (add (sequence "F%uS", 0, 7),
+ (sequence "F%uS", 16, 31),
+ (sequence "F%uS", 8, 15))>;
+
+// Class used to store 64-bit values in the upper half of a vector register.
+// The vector facility also includes scalar f64 instructions that operate
+// on the full vector register set.
+defm VR64 : SystemZRegClass<"VR64", [f64, v8i8, v4i16, v2i32, v2f32], 64,
+ (add (sequence "F%uD", 0, 7),
+ (sequence "F%uD", 16, 31),
+ (sequence "F%uD", 8, 15))>;
+
+// The subset of vector registers that can be used for floating-point
+// operations too.
+defm VF128 : SystemZRegClass<"VF128",
+ [v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], 128,
+ (sequence "V%u", 0, 15)>;
+
+// All vector registers.
+defm VR128 : SystemZRegClass<"VR128",
+ [v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], 128,
+ (add (sequence "V%u", 0, 7),
+ (sequence "V%u", 16, 31),
+ (sequence "V%u", 8, 15))>;
+
+// Attaches a ValueType to a register operand, to make the instruction
+// definitions easier.
+class TypedReg<ValueType vtin, RegisterOperand opin> {
+ ValueType vt = vtin;
+ RegisterOperand op = opin;
+}
+
+def v32eb : TypedReg<f32, VR32>;
+def v64g : TypedReg<i64, VR64>;
+def v64db : TypedReg<f64, VR64>;
+def v128b : TypedReg<v16i8, VR128>;
+def v128h : TypedReg<v8i16, VR128>;
+def v128f : TypedReg<v4i32, VR128>;
+def v128g : TypedReg<v2i64, VR128>;
+def v128q : TypedReg<v16i8, VR128>;
+def v128eb : TypedReg<v4f32, VR128>;
+def v128db : TypedReg<v2f64, VR128>;
+def v128any : TypedReg<untyped, VR128>;
//===----------------------------------------------------------------------===//
// Other registers
diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp
index de725ae6123..05aede3deb4 100644
--- a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp
@@ -41,6 +41,7 @@ SystemZSubtarget::SystemZSubtarget(const std::string &TT,
HasPopulationCount(false), HasFastSerialization(false),
HasInterlockedAccess1(false), HasMiscellaneousExtensions(false),
HasTransactionalExecution(false), HasProcessorAssist(false),
+ HasVector(false),
TargetTriple(TT), InstrInfo(initializeSubtargetDependencies(CPU, FS)),
TLInfo(TM, *this), TSInfo(*TM.getDataLayout()), FrameLowering() {}
diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.h b/llvm/lib/Target/SystemZ/SystemZSubtarget.h
index c99e552abb1..9a1f593f526 100644
--- a/llvm/lib/Target/SystemZ/SystemZSubtarget.h
+++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.h
@@ -44,6 +44,7 @@ protected:
bool HasMiscellaneousExtensions;
bool HasTransactionalExecution;
bool HasProcessorAssist;
+ bool HasVector;
private:
Triple TargetTriple;
@@ -110,6 +111,9 @@ public:
// Return true if the target has the processor-assist facility.
bool hasProcessorAssist() const { return HasProcessorAssist; }
+ // Return true if the target has the vector facility.
+ bool hasVector() const { return HasVector; }
+
// Return true if GV can be accessed using LARL for reloc model RM
// and code model CM.
bool isPC32DBLSymbol(const GlobalValue *GV, Reloc::Model RM,
diff --git a/llvm/test/MC/Disassembler/SystemZ/insns-z13-bad.txt b/llvm/test/MC/Disassembler/SystemZ/insns-z13-bad.txt
new file mode 100644
index 00000000000..e1cf033f4b7
--- /dev/null
+++ b/llvm/test/MC/Disassembler/SystemZ/insns-z13-bad.txt
@@ -0,0 +1,39 @@
+# Test z13 instructions that don't have PC-relative operands.
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu -mcpu=z13 2>&1 \
+# RUN: | FileCheck %s
+
+# This would be "vlef %v0, 0, 4", but element 4 is invalid.
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0x40 0x03
+0xe7 0x00 0x00 0x00 0x40 0x03
+
+# ...and again with element 15
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0xf0 0x03
+0xe7 0x00 0x00 0x00 0xf0 0x03
+
+# This would be "vleg %v0, 0, 2", but element 2 is invalid.
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0x20 0x02
+0xe7 0x00 0x00 0x00 0x20 0x02
+
+# ...and again with element 15
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0xf0 0x02
+0xe7 0x00 0x00 0x00 0xf0 0x02
+
+# This would be "vleh %v0, 0, 8", but element 8 is invalid.
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0x80 0x01
+0xe7 0x00 0x00 0x00 0x80 0x01
+
+# ...and again with element 15
+#
+#CHECK: warning: invalid instruction encoding
+#CHECK-NEXT: 0xe7 0x00 0x00 0x00 0xf0 0x01
+0xe7 0x00 0x00 0x00 0xf0 0x01
diff --git a/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt b/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt
new file mode 100644
index 00000000000..71e77664abb
--- /dev/null
+++ b/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt
@@ -0,0 +1,3315 @@
+# Test z13 instructions that don't have PC-relative operands.
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu -mcpu=z13 \
+# RUN: | FileCheck %s
+
+#CHECK: lcbb %r0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x27
+
+#CHECK: lcbb %r1, 2475(%r7,%r8), 12
+0xe7 0x17 0x89 0xab 0xc0 0x27
+
+#CHECK: lcbb %r15, 4095(%r15,%r15), 15
+0xe7 0xff 0xff 0xff 0xf0 0x27
+
+#CHECK: vab %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf3
+
+#CHECK: vab %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf3
+
+#CHECK: vab %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf3
+
+#CHECK: vaccb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf1
+
+#CHECK: vaccb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf1
+
+#CHECK: vaccb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf1
+
+#CHECK: vacccq %v0, %v0, %v0, %v0
+0xe7 0x00 0x04 0x00 0x00 0xb9
+
+#CHECK: vacccq %v3, %v20, %v5, %v22
+0xe7 0x34 0x54 0x00 0x65 0xb9
+
+#CHECK: vacccq %v31, %v31, %v31, %v31
+0xe7 0xff 0xf4 0x00 0xff 0xb9
+
+#CHECK: vaccf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf1
+
+#CHECK: vaccf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf1
+
+#CHECK: vaccf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf1
+
+#CHECK: vaccg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf1
+
+#CHECK: vaccg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf1
+
+#CHECK: vaccg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf1
+
+#CHECK: vacch %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf1
+
+#CHECK: vacch %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf1
+
+#CHECK: vacch %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf1
+
+#CHECK: vaccq %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x40 0xf1
+
+#CHECK: vaccq %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x4a 0xf1
+
+#CHECK: vaccq %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x4e 0xf1
+
+#CHECK: vacq %v0, %v0, %v0, %v0
+0xe7 0x00 0x04 0x00 0x00 0xbb
+
+#CHECK: vacq %v3, %v20, %v5, %v22
+0xe7 0x34 0x54 0x00 0x65 0xbb
+
+#CHECK: vacq %v31, %v31, %v31, %v31
+0xe7 0xff 0xf4 0x00 0xff 0xbb
+
+#CHECK: vaf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf3
+
+#CHECK: vaf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf3
+
+#CHECK: vaf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf3
+
+#CHECK: vag %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf3
+
+#CHECK: vag %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf3
+
+#CHECK: vag %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf3
+
+#CHECK: vah %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf3
+
+#CHECK: vah %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf3
+
+#CHECK: vah %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf3
+
+#CHECK: vaq %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x40 0xf3
+
+#CHECK: vaq %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x4a 0xf3
+
+#CHECK: vaq %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x4e 0xf3
+
+#CHECK: vavgb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf2
+
+#CHECK: vavgb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf2
+
+#CHECK: vavgb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf2
+
+#CHECK: vavgf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf2
+
+#CHECK: vavgf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf2
+
+#CHECK: vavgf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf2
+
+#CHECK: vavgg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf2
+
+#CHECK: vavgg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf2
+
+#CHECK: vavgg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf2
+
+#CHECK: vavgh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf2
+
+#CHECK: vavgh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf2
+
+#CHECK: vavgh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf2
+
+#CHECK: vavglb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf0
+
+#CHECK: vavglb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf0
+
+#CHECK: vavglb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf0
+
+#CHECK: vavglf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf0
+
+#CHECK: vavglf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf0
+
+#CHECK: vavglf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf0
+
+#CHECK: vavglg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf0
+
+#CHECK: vavglg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf0
+
+#CHECK: vavglg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf0
+
+#CHECK: vavglh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf0
+
+#CHECK: vavglh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf0
+
+#CHECK: vavglh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf0
+
+#CHECK: vcdgb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc3
+
+#CHECK: vcdgb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc3
+
+#CHECK: vcdgb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc3
+
+#CHECK: vcdlgb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc1
+
+#CHECK: vcdlgb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc1
+
+#CHECK: vcdlgb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc1
+
+#CHECK: vceqb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf8
+
+#CHECK: vceqb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf8
+
+#CHECK: vceqbs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x04 0xf8
+
+#CHECK: vceqb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf8
+
+#CHECK: vceqf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf8
+
+#CHECK: vceqf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf8
+
+#CHECK: vceqfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0xf8
+
+#CHECK: vceqf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf8
+
+#CHECK: vceqg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf8
+
+#CHECK: vceqg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf8
+
+#CHECK: vceqgs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x34 0xf8
+
+#CHECK: vceqg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf8
+
+#CHECK: vceqh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf8
+
+#CHECK: vceqh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf8
+
+#CHECK: vceqhs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0xf8
+
+#CHECK: vceqh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf8
+
+#CHECK: vcgdb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc2
+
+#CHECK: vcgdb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc2
+
+#CHECK: vcgdb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc2
+
+#CHECK: vchb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xfb
+
+#CHECK: vchb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xfb
+
+#CHECK: vchbs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x04 0xfb
+
+#CHECK: vchb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xfb
+
+#CHECK: vchf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xfb
+
+#CHECK: vchf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xfb
+
+#CHECK: vchfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0xfb
+
+#CHECK: vchf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xfb
+
+#CHECK: vchg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xfb
+
+#CHECK: vchg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xfb
+
+#CHECK: vchgs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x34 0xfb
+
+#CHECK: vchg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xfb
+
+#CHECK: vchh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xfb
+
+#CHECK: vchh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xfb
+
+#CHECK: vchhs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0xfb
+
+#CHECK: vchh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xfb
+
+#CHECK: vchlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf9
+
+#CHECK: vchlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf9
+
+#CHECK: vchlbs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x04 0xf9
+
+#CHECK: vchlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf9
+
+#CHECK: vchlf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf9
+
+#CHECK: vchlf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf9
+
+#CHECK: vchlfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0xf9
+
+#CHECK: vchlf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf9
+
+#CHECK: vchlg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf9
+
+#CHECK: vchlg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf9
+
+#CHECK: vchlgs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x34 0xf9
+
+#CHECK: vchlg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf9
+
+#CHECK: vchlh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf9
+
+#CHECK: vchlh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf9
+
+#CHECK: vchlhs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0xf9
+
+#CHECK: vchlh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf9
+
+#CHECK: vcksm %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x66
+
+#CHECK: vcksm %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x66
+
+#CHECK: vcksm %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x66
+
+#CHECK: vclgdb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc0
+
+#CHECK: vclgdb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc0
+
+#CHECK: vclgdb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc0
+
+#CHECK: vclzb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x53
+
+#CHECK: vclzb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0x53
+
+#CHECK: vclzb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x53
+
+#CHECK: vclzf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x53
+
+#CHECK: vclzf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0x53
+
+#CHECK: vclzf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0x53
+
+#CHECK: vclzg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x53
+
+#CHECK: vclzg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0x53
+
+#CHECK: vclzg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0x53
+
+#CHECK: vclzh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x53
+
+#CHECK: vclzh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0x53
+
+#CHECK: vclzh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0x53
+
+#CHECK: vctzb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x52
+
+#CHECK: vctzb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0x52
+
+#CHECK: vctzb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x52
+
+#CHECK: vctzf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x52
+
+#CHECK: vctzf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0x52
+
+#CHECK: vctzf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0x52
+
+#CHECK: vctzg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x52
+
+#CHECK: vctzg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0x52
+
+#CHECK: vctzg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0x52
+
+#CHECK: vctzh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x52
+
+#CHECK: vctzh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0x52
+
+#CHECK: vctzh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0x52
+
+#CHECK: vecb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xdb
+
+#CHECK: vecb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xdb
+
+#CHECK: vecb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xdb
+
+#CHECK: vecf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xdb
+
+#CHECK: vecf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xdb
+
+#CHECK: vecf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xdb
+
+#CHECK: vecg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xdb
+
+#CHECK: vecg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xdb
+
+#CHECK: vecg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xdb
+
+#CHECK: vech %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xdb
+
+#CHECK: vech %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xdb
+
+#CHECK: vech %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xdb
+
+#CHECK: veclb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd9
+
+#CHECK: veclb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd9
+
+#CHECK: veclb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd9
+
+#CHECK: veclf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xd9
+
+#CHECK: veclf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xd9
+
+#CHECK: veclf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xd9
+
+#CHECK: veclg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xd9
+
+#CHECK: veclg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xd9
+
+#CHECK: veclg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xd9
+
+#CHECK: veclh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xd9
+
+#CHECK: veclh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xd9
+
+#CHECK: veclh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xd9
+
+#CHECK: verimb %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x72
+
+#CHECK: verimb %v3, %v20, %v5, 103
+0xe7 0x34 0x50 0x67 0x04 0x72
+
+#CHECK: verimb %v31, %v31, %v31, 255
+0xe7 0xff 0xf0 0xff 0x0e 0x72
+
+#CHECK: verimf %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x72
+
+#CHECK: verimf %v3, %v20, %v5, 103
+0xe7 0x34 0x50 0x67 0x24 0x72
+
+#CHECK: verimf %v31, %v31, %v31, 255
+0xe7 0xff 0xf0 0xff 0x2e 0x72
+
+#CHECK: verimg %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x72
+
+#CHECK: verimg %v3, %v20, %v5, 103
+0xe7 0x34 0x50 0x67 0x34 0x72
+
+#CHECK: verimg %v31, %v31, %v31, 255
+0xe7 0xff 0xf0 0xff 0x3e 0x72
+
+#CHECK: verimh %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x72
+
+#CHECK: verimh %v3, %v20, %v5, 103
+0xe7 0x34 0x50 0x67 0x14 0x72
+
+#CHECK: verimh %v31, %v31, %v31, 255
+0xe7 0xff 0xf0 0xff 0x1e 0x72
+
+#CHECK: verllvb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x73
+
+#CHECK: verllvb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x73
+
+#CHECK: verllvb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x73
+
+#CHECK: verllvf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x73
+
+#CHECK: verllvf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x73
+
+#CHECK: verllvf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x73
+
+#CHECK: verllvg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x73
+
+#CHECK: verllvg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x73
+
+#CHECK: verllvg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x73
+
+#CHECK: verllvh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x73
+
+#CHECK: verllvh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x73
+
+#CHECK: verllvh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x73
+
+#CHECK: verllb %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x33
+
+#CHECK: verllb %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x33
+
+#CHECK: verllb %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x33
+
+#CHECK: verllf %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x33
+
+#CHECK: verllf %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x24 0x33
+
+#CHECK: verllf %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x2c 0x33
+
+#CHECK: verllg %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x33
+
+#CHECK: verllg %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x34 0x33
+
+#CHECK: verllg %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x3c 0x33
+
+#CHECK: verllh %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x33
+
+#CHECK: verllh %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x14 0x33
+
+#CHECK: verllh %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x1c 0x33
+
+#CHECK: veslvb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x70
+
+#CHECK: veslvb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x70
+
+#CHECK: veslvb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x70
+
+#CHECK: veslvf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x70
+
+#CHECK: veslvf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x70
+
+#CHECK: veslvf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x70
+
+#CHECK: veslvg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x70
+
+#CHECK: veslvg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x70
+
+#CHECK: veslvg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x70
+
+#CHECK: veslvh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x70
+
+#CHECK: veslvh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x70
+
+#CHECK: veslvh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x70
+
+#CHECK: veslb %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x30
+
+#CHECK: veslb %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x30
+
+#CHECK: veslb %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x30
+
+#CHECK: veslf %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x30
+
+#CHECK: veslf %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x24 0x30
+
+#CHECK: veslf %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x2c 0x30
+
+#CHECK: veslg %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x30
+
+#CHECK: veslg %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x34 0x30
+
+#CHECK: veslg %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x3c 0x30
+
+#CHECK: veslh %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x30
+
+#CHECK: veslh %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x14 0x30
+
+#CHECK: veslh %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x1c 0x30
+
+#CHECK: vesravb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x7a
+
+#CHECK: vesravb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x7a
+
+#CHECK: vesravb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x7a
+
+#CHECK: vesravf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x7a
+
+#CHECK: vesravf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x7a
+
+#CHECK: vesravf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x7a
+
+#CHECK: vesravg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x7a
+
+#CHECK: vesravg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x7a
+
+#CHECK: vesravg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x7a
+
+#CHECK: vesravh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x7a
+
+#CHECK: vesravh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x7a
+
+#CHECK: vesravh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x7a
+
+#CHECK: vesrab %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x3a
+
+#CHECK: vesrab %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x3a
+
+#CHECK: vesrab %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x3a
+
+#CHECK: vesraf %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x3a
+
+#CHECK: vesraf %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x24 0x3a
+
+#CHECK: vesraf %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x2c 0x3a
+
+#CHECK: vesrag %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x3a
+
+#CHECK: vesrag %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x34 0x3a
+
+#CHECK: vesrag %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x3c 0x3a
+
+#CHECK: vesrah %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x3a
+
+#CHECK: vesrah %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x14 0x3a
+
+#CHECK: vesrah %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x1c 0x3a
+
+#CHECK: vesrlvb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x78
+
+#CHECK: vesrlvb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x78
+
+#CHECK: vesrlvb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x78
+
+#CHECK: vesrlvf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x78
+
+#CHECK: vesrlvf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x78
+
+#CHECK: vesrlvf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x78
+
+#CHECK: vesrlvg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x78
+
+#CHECK: vesrlvg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x78
+
+#CHECK: vesrlvg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x78
+
+#CHECK: vesrlvh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x78
+
+#CHECK: vesrlvh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x78
+
+#CHECK: vesrlvh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x78
+
+#CHECK: vesrlb %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x38
+
+#CHECK: vesrlb %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x38
+
+#CHECK: vesrlb %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x38
+
+#CHECK: vesrlf %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x38
+
+#CHECK: vesrlf %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x24 0x38
+
+#CHECK: vesrlf %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x2c 0x38
+
+#CHECK: vesrlg %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x38
+
+#CHECK: vesrlg %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x34 0x38
+
+#CHECK: vesrlg %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x3c 0x38
+
+#CHECK: vesrlh %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x38
+
+#CHECK: vesrlh %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x14 0x38
+
+#CHECK: vesrlh %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x1c 0x38
+
+#CHECK: vfadb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xe3
+
+#CHECK: vfadb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xe3
+
+#CHECK: vfadb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xe3
+
+#CHECK: vfaeb %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x82
+
+#CHECK: vfaeb %v0, %v0, %v0, 12
+0xe7 0x00 0x00 0xc0 0x00 0x82
+
+#CHECK: vfaeb %v18, %v3, %v20, 0
+0xe7 0x23 0x40 0x00 0x0a 0x82
+
+#CHECK: vfaeb %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x40 0x0e 0x82
+
+#CHECK: vfaebs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0x90 0x0e 0x82
+
+#CHECK: vfaezb %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x60 0x0e 0x82
+
+#CHECK: vfaezbs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0xb0 0x0e 0x82
+
+#CHECK: vfaef %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x82
+
+#CHECK: vfaef %v0, %v0, %v0, 12
+0xe7 0x00 0x00 0xc0 0x20 0x82
+
+#CHECK: vfaef %v18, %v3, %v20, 0
+0xe7 0x23 0x40 0x00 0x2a 0x82
+
+#CHECK: vfaef %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x40 0x2e 0x82
+
+#CHECK: vfaefs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0x90 0x2e 0x82
+
+#CHECK: vfaezf %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x60 0x2e 0x82
+
+#CHECK: vfaezfs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0xb0 0x2e 0x82
+
+#CHECK: vfaeh %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x82
+
+#CHECK: vfaeh %v0, %v0, %v0, 12
+0xe7 0x00 0x00 0xc0 0x10 0x82
+
+#CHECK: vfaeh %v18, %v3, %v20, 0
+0xe7 0x23 0x40 0x00 0x1a 0x82
+
+#CHECK: vfaeh %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x40 0x1e 0x82
+
+#CHECK: vfaehs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0x90 0x1e 0x82
+
+#CHECK: vfaezh %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x60 0x1e 0x82
+
+#CHECK: vfaezhs %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0xb0 0x1e 0x82
+
+#CHECK: vfcedb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xe8
+
+#CHECK: vfcedb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xe8
+
+#CHECK: vfcedb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xe8
+
+#CHECK: vfcedbs %v0, %v0, %v0
+0xe7 0x00 0x00 0x10 0x30 0xe8
+
+#CHECK: vfcedbs %v18, %v3, %v20
+0xe7 0x23 0x40 0x10 0x3a 0xe8
+
+#CHECK: vfcedbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x10 0x3e 0xe8
+
+#CHECK: vfchdb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xeb
+
+#CHECK: vfchdb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xeb
+
+#CHECK: vfchdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xeb
+
+#CHECK: vfchdbs %v0, %v0, %v0
+0xe7 0x00 0x00 0x10 0x30 0xeb
+
+#CHECK: vfchdbs %v18, %v3, %v20
+0xe7 0x23 0x40 0x10 0x3a 0xeb
+
+#CHECK: vfchdbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x10 0x3e 0xeb
+
+#CHECK: vfchedb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xea
+
+#CHECK: vfchedb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xea
+
+#CHECK: vfchedb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xea
+
+#CHECK: vfchedbs %v0, %v0, %v0
+0xe7 0x00 0x00 0x10 0x30 0xea
+
+#CHECK: vfchedbs %v18, %v3, %v20
+0xe7 0x23 0x40 0x10 0x3a 0xea
+
+#CHECK: vfchedbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x10 0x3e 0xea
+
+#CHECK: vfddb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xe5
+
+#CHECK: vfddb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xe5
+
+#CHECK: vfddb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xe5
+
+#CHECK: vfeeb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x80
+
+#CHECK: vfeeb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x80
+
+#CHECK: vfeebs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x04 0x80
+
+#CHECK: vfeezb %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x0a 0x80
+
+#CHECK: vfeezbs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x04 0x80
+
+#CHECK: vfeeb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x80
+
+#CHECK: vfeef %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x80
+
+#CHECK: vfeef %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x80
+
+#CHECK: vfeefs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0x80
+
+#CHECK: vfeezf %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x2a 0x80
+
+#CHECK: vfeezfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x24 0x80
+
+#CHECK: vfeef %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x80
+
+#CHECK: vfeeh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x80
+
+#CHECK: vfeeh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x80
+
+#CHECK: vfeehs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0x80
+
+#CHECK: vfeezh %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x1a 0x80
+
+#CHECK: vfeezhs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x14 0x80
+
+#CHECK: vfeeh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x80
+
+#CHECK: vfeneb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x81
+
+#CHECK: vfeneb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x81
+
+#CHECK: vfenebs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x04 0x81
+
+#CHECK: vfenezb %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x0a 0x81
+
+#CHECK: vfenezbs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x04 0x81
+
+#CHECK: vfeneb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x81
+
+#CHECK: vfenef %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x81
+
+#CHECK: vfenef %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x81
+
+#CHECK: vfenefs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0x81
+
+#CHECK: vfenezf %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x2a 0x81
+
+#CHECK: vfenezfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x24 0x81
+
+#CHECK: vfenef %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x81
+
+#CHECK: vfeneh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x81
+
+#CHECK: vfeneh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x81
+
+#CHECK: vfenehs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0x81
+
+#CHECK: vfenezh %v18, %v3, %v20
+0xe7 0x23 0x40 0x20 0x1a 0x81
+
+#CHECK: vfenezhs %v7, %v24, %v9
+0xe7 0x78 0x90 0x30 0x14 0x81
+
+#CHECK: vfeneh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x81
+
+#CHECK: vfidb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc7
+
+#CHECK: vfidb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc7
+
+#CHECK: vfidb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc7
+
+#CHECK: vistrb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x5c
+
+#CHECK: vistrb %v18, %v3
+0xe7 0x23 0x00 0x00 0x08 0x5c
+
+#CHECK: vistrbs %v7, %v24
+0xe7 0x78 0x00 0x10 0x04 0x5c
+
+#CHECK: vistrb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x5c
+
+#CHECK: vistrf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x5c
+
+#CHECK: vistrf %v18, %v3
+0xe7 0x23 0x00 0x00 0x28 0x5c
+
+#CHECK: vistrfs %v7, %v24
+0xe7 0x78 0x00 0x10 0x24 0x5c
+
+#CHECK: vistrf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0x5c
+
+#CHECK: vistrh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x5c
+
+#CHECK: vistrh %v18, %v3
+0xe7 0x23 0x00 0x00 0x18 0x5c
+
+#CHECK: vistrhs %v7, %v24
+0xe7 0x78 0x00 0x10 0x14 0x5c
+
+#CHECK: vistrh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0x5c
+
+#CHECK: vfmadb %v0, %v0, %v0, %v0
+0xe7 0x00 0x03 0x00 0x00 0x8f
+
+#CHECK: vfmadb %v3, %v20, %v5, %v22
+0xe7 0x34 0x53 0x00 0x65 0x8f
+
+#CHECK: vfmadb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf3 0x00 0xff 0x8f
+
+#CHECK: vfmdb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xe7
+
+#CHECK: vfmdb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xe7
+
+#CHECK: vfmdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xe7
+
+#CHECK: vfmsdb %v0, %v0, %v0, %v0
+0xe7 0x00 0x03 0x00 0x00 0x8e
+
+#CHECK: vfmsdb %v3, %v20, %v5, %v22
+0xe7 0x34 0x53 0x00 0x65 0x8e
+
+#CHECK: vfmsdb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf3 0x00 0xff 0x8e
+
+#CHECK: vfsdb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xe2
+
+#CHECK: vfsdb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xe2
+
+#CHECK: vfsdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xe2
+
+#CHECK: vzero %v0
+0xe7 0x00 0x00 0x00 0x00 0x44
+
+#CHECK: vgbm %v0, 1
+0xe7 0x00 0x00 0x01 0x00 0x44
+
+#CHECK: vgbm %v0, 65534
+0xe7 0x00 0xff 0xfe 0x00 0x44
+
+#CHECK: vone %v0
+0xe7 0x00 0xff 0xff 0x00 0x44
+
+#CHECK: vgbm %v17, 4660
+0xe7 0x10 0x12 0x34 0x08 0x44
+
+#CHECK: vone %v31
+0xe7 0xf0 0xff 0xff 0x08 0x44
+
+#CHECK: vgef %v0, 0(%v0), 0
+0xe7 0x00 0x00 0x00 0x00 0x13
+
+#CHECK: vgef %v10, 1000(%v19,%r7), 2
+0xe7 0xa3 0x73 0xe8 0x24 0x13
+
+#CHECK: vgef %v31, 4095(%v31,%r15), 3
+0xe7 0xff 0xff 0xff 0x3c 0x13
+
+#CHECK: vgeg %v0, 0(%v0), 0
+0xe7 0x00 0x00 0x00 0x00 0x12
+
+#CHECK: vgeg %v10, 1000(%v19,%r7), 1
+0xe7 0xa3 0x73 0xe8 0x14 0x12
+
+#CHECK: vgeg %v31, 4095(%v31,%r15), 1
+0xe7 0xff 0xff 0xff 0x1c 0x12
+
+#CHECK: vgfmab %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xbc
+
+#CHECK: vgfmab %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xbc
+
+#CHECK: vgfmab %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xbc
+
+#CHECK: vgfmaf %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xbc
+
+#CHECK: vgfmaf %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xbc
+
+#CHECK: vgfmaf %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xbc
+
+#CHECK: vgfmag %v0, %v0, %v0, %v0
+0xe7 0x00 0x03 0x00 0x00 0xbc
+
+#CHECK: vgfmag %v3, %v20, %v5, %v22
+0xe7 0x34 0x53 0x00 0x65 0xbc
+
+#CHECK: vgfmag %v31, %v31, %v31, %v31
+0xe7 0xff 0xf3 0x00 0xff 0xbc
+
+#CHECK: vgfmah %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xbc
+
+#CHECK: vgfmah %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xbc
+
+#CHECK: vgfmah %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xbc
+
+#CHECK: vgfmb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xb4
+
+#CHECK: vgfmb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xb4
+
+#CHECK: vgfmb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xb4
+
+#CHECK: vgfmf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xb4
+
+#CHECK: vgfmf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xb4
+
+#CHECK: vgfmf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xb4
+
+#CHECK: vgfmg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xb4
+
+#CHECK: vgfmg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xb4
+
+#CHECK: vgfmg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xb4
+
+#CHECK: vgfmh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xb4
+
+#CHECK: vgfmh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xb4
+
+#CHECK: vgfmh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xb4
+
+#CHECK: vgmb %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x46
+
+#CHECK: vgmb %v22, 55, 66
+0xe7 0x60 0x37 0x42 0x08 0x46
+
+#CHECK: vgmb %v31, 255, 255
+0xe7 0xf0 0xff 0xff 0x08 0x46
+
+#CHECK: vgmf %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x20 0x46
+
+#CHECK: vgmf %v22, 55, 66
+0xe7 0x60 0x37 0x42 0x28 0x46
+
+#CHECK: vgmf %v31, 255, 255
+0xe7 0xf0 0xff 0xff 0x28 0x46
+
+#CHECK: vgmg %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0x46
+
+#CHECK: vgmg %v22, 55, 66
+0xe7 0x60 0x37 0x42 0x38 0x46
+
+#CHECK: vgmg %v31, 255, 255
+0xe7 0xf0 0xff 0xff 0x38 0x46
+
+#CHECK: vgmh %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x10 0x46
+
+#CHECK: vgmh %v22, 55, 66
+0xe7 0x60 0x37 0x42 0x18 0x46
+
+#CHECK: vgmh %v31, 255, 255
+0xe7 0xf0 0xff 0xff 0x18 0x46
+
+#CHECK: vl %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x06
+
+#CHECK: vl %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x08 0x06
+
+#CHECK: vl %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x08 0x06
+
+#CHECK: vlbb %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x07
+
+#CHECK: vlbb %v17, 2475(%r7,%r8), 12
+0xe7 0x17 0x89 0xab 0xc8 0x07
+
+#CHECK: vlbb %v31, 4095(%r15,%r15), 15
+0xe7 0xff 0xff 0xff 0xf8 0x07
+
+#CHECK: vlcb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xde
+
+#CHECK: vlcb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xde
+
+#CHECK: vlcb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xde
+
+#CHECK: vlcf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xde
+
+#CHECK: vlcf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xde
+
+#CHECK: vlcf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xde
+
+#CHECK: vlcg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xde
+
+#CHECK: vlcg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xde
+
+#CHECK: vlcg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xde
+
+#CHECK: vlch %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xde
+
+#CHECK: vlch %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xde
+
+#CHECK: vlch %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xde
+
+#CHECK: vldeb %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xc4
+
+#CHECK: vldeb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xc4
+
+#CHECK: vldeb %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xc4
+
+#CHECK: vleb %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x00
+
+#CHECK: vleb %v17, 2475(%r7,%r8), 12
+0xe7 0x17 0x89 0xab 0xc8 0x00
+
+#CHECK: vleb %v31, 4095(%r15,%r15), 15
+0xe7 0xff 0xff 0xff 0xf8 0x00
+
+#CHECK: vledb %v0, %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x30 0xc5
+
+#CHECK: vledb %v19, %v14, 4, 10
+0xe7 0x3e 0x00 0xa4 0x38 0xc5
+
+#CHECK: vledb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xf7 0x3c 0xc5
+
+#CHECK: vlef %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x03
+
+#CHECK: vlef %v17, 2475(%r7,%r8), 2
+0xe7 0x17 0x89 0xab 0x28 0x03
+
+#CHECK: vlef %v31, 4095(%r15,%r15), 3
+0xe7 0xff 0xff 0xff 0x38 0x03
+
+#CHECK: vleg %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x02
+
+#CHECK: vleg %v17, 2475(%r7,%r8), 1
+0xe7 0x17 0x89 0xab 0x18 0x02
+
+#CHECK: vleg %v31, 4095(%r15,%r15), 1
+0xe7 0xff 0xff 0xff 0x18 0x02
+
+#CHECK: vleh %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x01
+
+#CHECK: vleh %v17, 2475(%r7,%r8), 5
+0xe7 0x17 0x89 0xab 0x58 0x01
+
+#CHECK: vleh %v31, 4095(%r15,%r15), 7
+0xe7 0xff 0xff 0xff 0x78 0x01
+
+#CHECK: vleib %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x40
+
+#CHECK: vleib %v23, -30293, 12
+0xe7 0x70 0x89 0xab 0xc8 0x40
+
+#CHECK: vleib %v31, -1, 15
+0xe7 0xf0 0xff 0xff 0xf8 0x40
+
+#CHECK: vleif %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x43
+
+#CHECK: vleif %v23, -30293, 2
+0xe7 0x70 0x89 0xab 0x28 0x43
+
+#CHECK: vleif %v31, -1, 3
+0xe7 0xf0 0xff 0xff 0x38 0x43
+
+#CHECK: vleig %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x42
+
+#CHECK: vleig %v23, -30293, 1
+0xe7 0x70 0x89 0xab 0x18 0x42
+
+#CHECK: vleig %v31, -1, 1
+0xe7 0xf0 0xff 0xff 0x18 0x42
+
+#CHECK: vleih %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x41
+
+#CHECK: vleih %v23, -30293, 5
+0xe7 0x70 0x89 0xab 0x58 0x41
+
+#CHECK: vleih %v31, -1, 7
+0xe7 0xf0 0xff 0xff 0x78 0x41
+
+#CHECK: vflcdb %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xcc
+
+#CHECK: vflcdb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xcc
+
+#CHECK: vflcdb %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xcc
+
+#CHECK: vflndb %v0, %v0
+0xe7 0x00 0x00 0x10 0x30 0xcc
+
+#CHECK: vflndb %v19, %v14
+0xe7 0x3e 0x00 0x10 0x38 0xcc
+
+#CHECK: vflndb %v31, %v31
+0xe7 0xff 0x00 0x10 0x3c 0xcc
+
+#CHECK: vflpdb %v0, %v0
+0xe7 0x00 0x00 0x20 0x30 0xcc
+
+#CHECK: vflpdb %v19, %v14
+0xe7 0x3e 0x00 0x20 0x38 0xcc
+
+#CHECK: vflpdb %v31, %v31
+0xe7 0xff 0x00 0x20 0x3c 0xcc
+
+#CHECK: vlgvb %r0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x21
+
+#CHECK: vlgvb %r2, %v19, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x04 0x21
+
+#CHECK: vlgvb %r15, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x04 0x21
+
+#CHECK: vlgvf %r0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x21
+
+#CHECK: vlgvf %r2, %v19, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x24 0x21
+
+#CHECK: vlgvf %r15, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x24 0x21
+
+#CHECK: vlgvg %r0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x21
+
+#CHECK: vlgvg %r2, %v19, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x34 0x21
+
+#CHECK: vlgvg %r15, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x34 0x21
+
+#CHECK: vlgvh %r0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x21
+
+#CHECK: vlgvh %r2, %v19, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x14 0x21
+
+#CHECK: vlgvh %r15, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x14 0x21
+
+#CHECK: vfsqdb %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xce
+
+#CHECK: vfsqdb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xce
+
+#CHECK: vfsqdb %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xce
+
+#CHECK: vftcidb %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x4a
+
+#CHECK: vftcidb %v19, %v4, 1383
+0xe7 0x34 0x56 0x70 0x38 0x4a
+
+#CHECK: vftcidb %v31, %v31, 4095
+0xe7 0xff 0xff 0xf0 0x3c 0x4a
+
+#CHECK: vll %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x00 0x37
+
+#CHECK: vll %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x08 0x37
+
+#CHECK: vll %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x08 0x37
+
+#CHECK: vllezb %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x04
+
+#CHECK: vllezb %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x08 0x04
+
+#CHECK: vllezb %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x08 0x04
+
+#CHECK: vllezf %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x04
+
+#CHECK: vllezf %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x28 0x04
+
+#CHECK: vllezf %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x28 0x04
+
+#CHECK: vllezg %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x04
+
+#CHECK: vllezg %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x38 0x04
+
+#CHECK: vllezg %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x38 0x04
+
+#CHECK: vllezh %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x04
+
+#CHECK: vllezh %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x18 0x04
+
+#CHECK: vllezh %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x18 0x04
+
+#CHECK: vlm %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x36
+
+#CHECK: vlm %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x36
+
+#CHECK: vlm %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x36
+
+#CHECK: vlpb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xdf
+
+#CHECK: vlpb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xdf
+
+#CHECK: vlpb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xdf
+
+#CHECK: vlpf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xdf
+
+#CHECK: vlpf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xdf
+
+#CHECK: vlpf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xdf
+
+#CHECK: vlpg %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xdf
+
+#CHECK: vlpg %v19, %v14
+0xe7 0x3e 0x00 0x00 0x38 0xdf
+
+#CHECK: vlpg %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xdf
+
+#CHECK: vlph %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xdf
+
+#CHECK: vlph %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xdf
+
+#CHECK: vlph %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xdf
+
+#CHECK: vlr %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x56
+
+#CHECK: vlr %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0x56
+
+#CHECK: vlr %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x56
+
+#CHECK: vlrepb %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x05
+
+#CHECK: vlrepb %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x08 0x05
+
+#CHECK: vlrepb %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x08 0x05
+
+#CHECK: vlrepf %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x05
+
+#CHECK: vlrepf %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x28 0x05
+
+#CHECK: vlrepf %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x28 0x05
+
+#CHECK: vlrepg %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x05
+
+#CHECK: vlrepg %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x38 0x05
+
+#CHECK: vlrepg %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x38 0x05
+
+#CHECK: vlreph %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x05
+
+#CHECK: vlreph %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x18 0x05
+
+#CHECK: vlreph %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x18 0x05
+
+#CHECK: vlvgb %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x00 0x22
+
+#CHECK: vlvgb %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x08 0x22
+
+#CHECK: vlvgb %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x08 0x22
+
+#CHECK: vlvgf %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x20 0x22
+
+#CHECK: vlvgf %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x28 0x22
+
+#CHECK: vlvgf %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x28 0x22
+
+#CHECK: vlvgg %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x30 0x22
+
+#CHECK: vlvgg %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x38 0x22
+
+#CHECK: vlvgg %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x38 0x22
+
+#CHECK: vlvgh %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x10 0x22
+
+#CHECK: vlvgh %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x18 0x22
+
+#CHECK: vlvgh %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x18 0x22
+
+#CHECK: vlvgp %v0, %r0, %r0
+0xe7 0x00 0x00 0x00 0x00 0x62
+
+#CHECK: vlvgp %v18, %r3, %r4
+0xe7 0x23 0x40 0x00 0x08 0x62
+
+#CHECK: vlvgp %v31, %r15, %r15
+0xe7 0xff 0xf0 0x00 0x08 0x62
+
+#CHECK: vmaeb %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xae
+
+#CHECK: vmaeb %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xae
+
+#CHECK: vmaeb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xae
+
+#CHECK: vmaef %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xae
+
+#CHECK: vmaef %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xae
+
+#CHECK: vmaef %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xae
+
+#CHECK: vmaeh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xae
+
+#CHECK: vmaeh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xae
+
+#CHECK: vmaeh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xae
+
+#CHECK: vmahb %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xab
+
+#CHECK: vmahb %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xab
+
+#CHECK: vmahb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xab
+
+#CHECK: vmahf %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xab
+
+#CHECK: vmahf %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xab
+
+#CHECK: vmahf %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xab
+
+#CHECK: vmahh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xab
+
+#CHECK: vmahh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xab
+
+#CHECK: vmahh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xab
+
+#CHECK: vmalb %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xaa
+
+#CHECK: vmalb %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xaa
+
+#CHECK: vmalb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xaa
+
+#CHECK: vmaleb %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xac
+
+#CHECK: vmaleb %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xac
+
+#CHECK: vmaleb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xac
+
+#CHECK: vmalef %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xac
+
+#CHECK: vmalef %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xac
+
+#CHECK: vmalef %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xac
+
+#CHECK: vmaleh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xac
+
+#CHECK: vmaleh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xac
+
+#CHECK: vmaleh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xac
+
+#CHECK: vmalf %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xaa
+
+#CHECK: vmalf %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xaa
+
+#CHECK: vmalf %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xaa
+
+#CHECK: vmalhb %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa9
+
+#CHECK: vmalhb %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xa9
+
+#CHECK: vmalhb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xa9
+
+#CHECK: vmalhf %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xa9
+
+#CHECK: vmalhf %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xa9
+
+#CHECK: vmalhf %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xa9
+
+#CHECK: vmalhh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xa9
+
+#CHECK: vmalhh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xa9
+
+#CHECK: vmalhh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xa9
+
+#CHECK: vmalhw %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xaa
+
+#CHECK: vmalhw %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xaa
+
+#CHECK: vmalhw %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xaa
+
+#CHECK: vmalob %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xad
+
+#CHECK: vmalob %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xad
+
+#CHECK: vmalob %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xad
+
+#CHECK: vmalof %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xad
+
+#CHECK: vmalof %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xad
+
+#CHECK: vmalof %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xad
+
+#CHECK: vmaloh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xad
+
+#CHECK: vmaloh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xad
+
+#CHECK: vmaloh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xad
+
+#CHECK: vmaob %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xaf
+
+#CHECK: vmaob %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0xaf
+
+#CHECK: vmaob %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0xaf
+
+#CHECK: vmaof %v0, %v0, %v0, %v0
+0xe7 0x00 0x02 0x00 0x00 0xaf
+
+#CHECK: vmaof %v3, %v20, %v5, %v22
+0xe7 0x34 0x52 0x00 0x65 0xaf
+
+#CHECK: vmaof %v31, %v31, %v31, %v31
+0xe7 0xff 0xf2 0x00 0xff 0xaf
+
+#CHECK: vmaoh %v0, %v0, %v0, %v0
+0xe7 0x00 0x01 0x00 0x00 0xaf
+
+#CHECK: vmaoh %v3, %v20, %v5, %v22
+0xe7 0x34 0x51 0x00 0x65 0xaf
+
+#CHECK: vmaoh %v31, %v31, %v31, %v31
+0xe7 0xff 0xf1 0x00 0xff 0xaf
+
+#CHECK: vmeb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa6
+
+#CHECK: vmeb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa6
+
+#CHECK: vmeb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa6
+
+#CHECK: vmef %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa6
+
+#CHECK: vmef %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa6
+
+#CHECK: vmef %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa6
+
+#CHECK: vmeh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa6
+
+#CHECK: vmeh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa6
+
+#CHECK: vmeh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa6
+
+#CHECK: vmhb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa3
+
+#CHECK: vmhb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa3
+
+#CHECK: vmhb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa3
+
+#CHECK: vmhf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa3
+
+#CHECK: vmhf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa3
+
+#CHECK: vmhf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa3
+
+#CHECK: vmhh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa3
+
+#CHECK: vmhh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa3
+
+#CHECK: vmhh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa3
+
+#CHECK: vmlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa2
+
+#CHECK: vmlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa2
+
+#CHECK: vmlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa2
+
+#CHECK: vmlf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa2
+
+#CHECK: vmlf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa2
+
+#CHECK: vmlf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa2
+
+#CHECK: vmleb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa4
+
+#CHECK: vmleb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa4
+
+#CHECK: vmleb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa4
+
+#CHECK: vmlef %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa4
+
+#CHECK: vmlef %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa4
+
+#CHECK: vmlef %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa4
+
+#CHECK: vmleh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa4
+
+#CHECK: vmleh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa4
+
+#CHECK: vmleh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa4
+
+#CHECK: vmlhb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa1
+
+#CHECK: vmlhb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa1
+
+#CHECK: vmlhb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa1
+
+#CHECK: vmlhf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa1
+
+#CHECK: vmlhf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa1
+
+#CHECK: vmlhf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa1
+
+#CHECK: vmlhh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa1
+
+#CHECK: vmlhh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa1
+
+#CHECK: vmlhh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa1
+
+#CHECK: vmlhw %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa2
+
+#CHECK: vmlhw %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa2
+
+#CHECK: vmlhw %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa2
+
+#CHECK: vmlob %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa5
+
+#CHECK: vmlob %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa5
+
+#CHECK: vmlob %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa5
+
+#CHECK: vmlof %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa5
+
+#CHECK: vmlof %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa5
+
+#CHECK: vmlof %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa5
+
+#CHECK: vmloh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa5
+
+#CHECK: vmloh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa5
+
+#CHECK: vmloh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa5
+
+#CHECK: vmnb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xfe
+
+#CHECK: vmnb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xfe
+
+#CHECK: vmnb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xfe
+
+#CHECK: vmnf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xfe
+
+#CHECK: vmnf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xfe
+
+#CHECK: vmnf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xfe
+
+#CHECK: vmng %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xfe
+
+#CHECK: vmng %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xfe
+
+#CHECK: vmng %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xfe
+
+#CHECK: vmnh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xfe
+
+#CHECK: vmnh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xfe
+
+#CHECK: vmnh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xfe
+
+#CHECK: vmnlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xfc
+
+#CHECK: vmnlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xfc
+
+#CHECK: vmnlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xfc
+
+#CHECK: vmnlf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xfc
+
+#CHECK: vmnlf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xfc
+
+#CHECK: vmnlf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xfc
+
+#CHECK: vmnlg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xfc
+
+#CHECK: vmnlg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xfc
+
+#CHECK: vmnlg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xfc
+
+#CHECK: vmnlh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xfc
+
+#CHECK: vmnlh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xfc
+
+#CHECK: vmnlh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xfc
+
+#CHECK: vmob %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xa7
+
+#CHECK: vmob %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xa7
+
+#CHECK: vmob %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xa7
+
+#CHECK: vmof %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xa7
+
+#CHECK: vmof %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xa7
+
+#CHECK: vmof %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xa7
+
+#CHECK: vmoh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xa7
+
+#CHECK: vmoh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xa7
+
+#CHECK: vmoh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xa7
+
+#CHECK: vmrhb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x61
+
+#CHECK: vmrhb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x61
+
+#CHECK: vmrhb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x61
+
+#CHECK: vmrhf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x61
+
+#CHECK: vmrhf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x61
+
+#CHECK: vmrhf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x61
+
+#CHECK: vmrhg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x61
+
+#CHECK: vmrhg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x61
+
+#CHECK: vmrhg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x61
+
+#CHECK: vmrhh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x61
+
+#CHECK: vmrhh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x61
+
+#CHECK: vmrhh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x61
+
+#CHECK: vmrlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x60
+
+#CHECK: vmrlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x60
+
+#CHECK: vmrlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x60
+
+#CHECK: vmrlf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x60
+
+#CHECK: vmrlf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x60
+
+#CHECK: vmrlf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x60
+
+#CHECK: vmrlg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x60
+
+#CHECK: vmrlg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x60
+
+#CHECK: vmrlg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x60
+
+#CHECK: vmrlh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x60
+
+#CHECK: vmrlh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x60
+
+#CHECK: vmrlh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x60
+
+#CHECK: vmxb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xff
+
+#CHECK: vmxb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xff
+
+#CHECK: vmxb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xff
+
+#CHECK: vmxf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xff
+
+#CHECK: vmxf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xff
+
+#CHECK: vmxf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xff
+
+#CHECK: vmxg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xff
+
+#CHECK: vmxg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xff
+
+#CHECK: vmxg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xff
+
+#CHECK: vmxh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xff
+
+#CHECK: vmxh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xff
+
+#CHECK: vmxh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xff
+
+#CHECK: vmxlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xfd
+
+#CHECK: vmxlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xfd
+
+#CHECK: vmxlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xfd
+
+#CHECK: vmxlf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xfd
+
+#CHECK: vmxlf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xfd
+
+#CHECK: vmxlf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xfd
+
+#CHECK: vmxlg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xfd
+
+#CHECK: vmxlg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xfd
+
+#CHECK: vmxlg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xfd
+
+#CHECK: vmxlh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xfd
+
+#CHECK: vmxlh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xfd
+
+#CHECK: vmxlh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xfd
+
+#CHECK: vn %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x68
+
+#CHECK: vn %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x68
+
+#CHECK: vn %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x68
+
+#CHECK: vnc %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x69
+
+#CHECK: vnc %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x69
+
+#CHECK: vnc %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x69
+
+#CHECK: vno %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x6b
+
+#CHECK: vno %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x6b
+
+#CHECK: vno %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x6b
+
+#CHECK: vo %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x6a
+
+#CHECK: vo %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x6a
+
+#CHECK: vo %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x6a
+
+#CHECK: vpdi %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x84
+
+#CHECK: vpdi %v3, %v20, %v5, 4
+0xe7 0x34 0x50 0x00 0x44 0x84
+
+#CHECK: vpdi %v31, %v31, %v31, 15
+0xe7 0xff 0xf0 0x00 0xfe 0x84
+
+#CHECK: vperm %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x8c
+
+#CHECK: vperm %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0x8c
+
+#CHECK: vperm %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0x8c
+
+#CHECK: vpkf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x94
+
+#CHECK: vpkf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x94
+
+#CHECK: vpkf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x94
+
+#CHECK: vpkg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x94
+
+#CHECK: vpkg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x94
+
+#CHECK: vpkg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x94
+
+#CHECK: vpkh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x94
+
+#CHECK: vpkh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x94
+
+#CHECK: vpkh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x94
+
+#CHECK: vpklsf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x95
+
+#CHECK: vpklsf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x95
+
+#CHECK: vpklsfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0x95
+
+#CHECK: vpklsf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x95
+
+#CHECK: vpklsg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x95
+
+#CHECK: vpklsg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x95
+
+#CHECK: vpklsgs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x34 0x95
+
+#CHECK: vpklsg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x95
+
+#CHECK: vpklsh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x95
+
+#CHECK: vpklsh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x95
+
+#CHECK: vpklshs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0x95
+
+#CHECK: vpklsh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x95
+
+#CHECK: vpksf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x97
+
+#CHECK: vpksf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x97
+
+#CHECK: vpksfs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x24 0x97
+
+#CHECK: vpksf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x97
+
+#CHECK: vpksg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x97
+
+#CHECK: vpksg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x97
+
+#CHECK: vpksgs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x34 0x97
+
+#CHECK: vpksg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x97
+
+#CHECK: vpksh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x97
+
+#CHECK: vpksh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x97
+
+#CHECK: vpkshs %v7, %v24, %v9
+0xe7 0x78 0x90 0x10 0x14 0x97
+
+#CHECK: vpksh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x97
+
+#CHECK: vpopct %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x50
+
+#CHECK: vpopct %v19, %v14, 0
+0xe7 0x3e 0x00 0x00 0x08 0x50
+
+#CHECK: vpopct %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x50
+
+#CHECK: vrepb %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x4d
+
+#CHECK: vrepb %v19, %v4, 22136
+0xe7 0x34 0x56 0x78 0x08 0x4d
+
+#CHECK: vrepb %v31, %v31, 65535
+0xe7 0xff 0xff 0xff 0x0c 0x4d
+
+#CHECK: vrepf %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x4d
+
+#CHECK: vrepf %v19, %v4, 22136
+0xe7 0x34 0x56 0x78 0x28 0x4d
+
+#CHECK: vrepf %v31, %v31, 65535
+0xe7 0xff 0xff 0xff 0x2c 0x4d
+
+#CHECK: vrepg %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x4d
+
+#CHECK: vrepg %v19, %v4, 22136
+0xe7 0x34 0x56 0x78 0x38 0x4d
+
+#CHECK: vrepg %v31, %v31, 65535
+0xe7 0xff 0xff 0xff 0x3c 0x4d
+
+#CHECK: vreph %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x4d
+
+#CHECK: vreph %v19, %v4, 22136
+0xe7 0x34 0x56 0x78 0x18 0x4d
+
+#CHECK: vreph %v31, %v31, 65535
+0xe7 0xff 0xff 0xff 0x1c 0x4d
+
+#CHECK: vrepib %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x45
+
+#CHECK: vrepib %v23, -30293
+0xe7 0x70 0x89 0xab 0x08 0x45
+
+#CHECK: vrepib %v31, -1
+0xe7 0xf0 0xff 0xff 0x08 0x45
+
+#CHECK: vrepif %v0, 0
+0xe7 0x00 0x00 0x00 0x20 0x45
+
+#CHECK: vrepif %v23, -30293
+0xe7 0x70 0x89 0xab 0x28 0x45
+
+#CHECK: vrepif %v31, -1
+0xe7 0xf0 0xff 0xff 0x28 0x45
+
+#CHECK: vrepig %v0, 0
+0xe7 0x00 0x00 0x00 0x30 0x45
+
+#CHECK: vrepig %v23, -30293
+0xe7 0x70 0x89 0xab 0x38 0x45
+
+#CHECK: vrepig %v31, -1
+0xe7 0xf0 0xff 0xff 0x38 0x45
+
+#CHECK: vrepih %v0, 0
+0xe7 0x00 0x00 0x00 0x10 0x45
+
+#CHECK: vrepih %v23, -30293
+0xe7 0x70 0x89 0xab 0x18 0x45
+
+#CHECK: vrepih %v31, -1
+0xe7 0xf0 0xff 0xff 0x18 0x45
+
+#CHECK: vsb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf7
+
+#CHECK: vsb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf7
+
+#CHECK: vsb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf7
+
+#CHECK: vsbiq %v0, %v0, %v0, %v0
+0xe7 0x00 0x04 0x00 0x00 0xbf
+
+#CHECK: vsbiq %v3, %v20, %v5, %v22
+0xe7 0x34 0x54 0x00 0x65 0xbf
+
+#CHECK: vsbiq %v31, %v31, %v31, %v31
+0xe7 0xff 0xf4 0x00 0xff 0xbf
+
+#CHECK: vsbcbiq %v0, %v0, %v0, %v0
+0xe7 0x00 0x04 0x00 0x00 0xbd
+
+#CHECK: vsbcbiq %v3, %v20, %v5, %v22
+0xe7 0x34 0x54 0x00 0x65 0xbd
+
+#CHECK: vsbcbiq %v31, %v31, %v31, %v31
+0xe7 0xff 0xf4 0x00 0xff 0xbd
+
+#CHECK: vscbib %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xf5
+
+#CHECK: vscbib %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0xf5
+
+#CHECK: vscbib %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0xf5
+
+#CHECK: vscbif %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf5
+
+#CHECK: vscbif %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf5
+
+#CHECK: vscbif %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf5
+
+#CHECK: vscbig %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf5
+
+#CHECK: vscbig %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf5
+
+#CHECK: vscbig %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf5
+
+#CHECK: vscbih %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf5
+
+#CHECK: vscbih %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf5
+
+#CHECK: vscbih %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf5
+
+#CHECK: vscbiq %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x40 0xf5
+
+#CHECK: vscbiq %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x4a 0xf5
+
+#CHECK: vscbiq %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x4e 0xf5
+
+#CHECK: vscef %v0, 0(%v0), 0
+0xe7 0x00 0x00 0x00 0x00 0x1b
+
+#CHECK: vscef %v10, 1000(%v19,%r7), 2
+0xe7 0xa3 0x73 0xe8 0x24 0x1b
+
+#CHECK: vscef %v31, 4095(%v31,%r15), 3
+0xe7 0xff 0xff 0xff 0x3c 0x1b
+
+#CHECK: vsceg %v0, 0(%v0), 0
+0xe7 0x00 0x00 0x00 0x00 0x1a
+
+#CHECK: vsceg %v10, 1000(%v19,%r7), 1
+0xe7 0xa3 0x73 0xe8 0x14 0x1a
+
+#CHECK: vsceg %v31, 4095(%v31,%r15), 1
+0xe7 0xff 0xff 0xff 0x1c 0x1a
+
+#CHECK: vsegb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x5f
+
+#CHECK: vsegb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0x5f
+
+#CHECK: vsegb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0x5f
+
+#CHECK: vsegf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x5f
+
+#CHECK: vsegf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0x5f
+
+#CHECK: vsegf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0x5f
+
+#CHECK: vsegh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x5f
+
+#CHECK: vsegh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0x5f
+
+#CHECK: vsegh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0x5f
+
+#CHECK: vsel %v0, %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x8d
+
+#CHECK: vsel %v3, %v20, %v5, %v22
+0xe7 0x34 0x50 0x00 0x65 0x8d
+
+#CHECK: vsel %v31, %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0xff 0x8d
+
+#CHECK: vsf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xf7
+
+#CHECK: vsf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0xf7
+
+#CHECK: vsf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0xf7
+
+#CHECK: vsg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0xf7
+
+#CHECK: vsg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0xf7
+
+#CHECK: vsg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0xf7
+
+#CHECK: vsh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xf7
+
+#CHECK: vsh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0xf7
+
+#CHECK: vsh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0xf7
+
+#CHECK: vsl %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x74
+
+#CHECK: vsl %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x74
+
+#CHECK: vsl %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x74
+
+#CHECK: vslb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x75
+
+#CHECK: vslb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x75
+
+#CHECK: vslb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x75
+
+#CHECK: vsldb %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x77
+
+#CHECK: vsldb %v3, %v20, %v5, 103
+0xe7 0x34 0x50 0x67 0x04 0x77
+
+#CHECK: vsldb %v31, %v31, %v31, 255
+0xe7 0xff 0xf0 0xff 0x0e 0x77
+
+#CHECK: vsq %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x40 0xf7
+
+#CHECK: vsq %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x4a 0xf7
+
+#CHECK: vsq %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x4e 0xf7
+
+#CHECK: vsra %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x7e
+
+#CHECK: vsra %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x7e
+
+#CHECK: vsra %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x7e
+
+#CHECK: vsrab %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x7f
+
+#CHECK: vsrab %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x7f
+
+#CHECK: vsrab %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x7f
+
+#CHECK: vsrl %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x7c
+
+#CHECK: vsrl %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x7c
+
+#CHECK: vsrl %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x7c
+
+#CHECK: vsrlb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x7d
+
+#CHECK: vsrlb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x7d
+
+#CHECK: vsrlb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x7d
+
+#CHECK: vst %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x0E
+
+#CHECK: vst %v17, 2475(%r7,%r8)
+0xe7 0x17 0x89 0xab 0x08 0x0E
+
+#CHECK: vst %v31, 4095(%r15,%r15)
+0xe7 0xff 0xff 0xff 0x08 0x0E
+
+#CHECK: vsteb %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x08
+
+#CHECK: vsteb %v17, 2475(%r7,%r8), 12
+0xe7 0x17 0x89 0xab 0xc8 0x08
+
+#CHECK: vsteb %v31, 4095(%r15,%r15), 15
+0xe7 0xff 0xff 0xff 0xf8 0x08
+
+#CHECK: vstef %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x0b
+
+#CHECK: vstef %v17, 2475(%r7,%r8), 2
+0xe7 0x17 0x89 0xab 0x28 0x0b
+
+#CHECK: vstef %v31, 4095(%r15,%r15), 3
+0xe7 0xff 0xff 0xff 0x38 0x0b
+
+#CHECK: vsteg %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x0a
+
+#CHECK: vsteg %v17, 2475(%r7,%r8), 1
+0xe7 0x17 0x89 0xab 0x18 0x0a
+
+#CHECK: vsteg %v31, 4095(%r15,%r15), 1
+0xe7 0xff 0xff 0xff 0x18 0x0a
+
+#CHECK: vsteh %v0, 0, 0
+0xe7 0x00 0x00 0x00 0x00 0x09
+
+#CHECK: vsteh %v17, 2475(%r7,%r8), 5
+0xe7 0x17 0x89 0xab 0x58 0x09
+
+#CHECK: vsteh %v31, 4095(%r15,%r15), 7
+0xe7 0xff 0xff 0xff 0x78 0x09
+
+#CHECK: vstl %v0, %r0, 0
+0xe7 0x00 0x00 0x00 0x00 0x3f
+
+#CHECK: vstl %v18, %r3, 1383(%r4)
+0xe7 0x23 0x45 0x67 0x08 0x3f
+
+#CHECK: vstl %v31, %r15, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x08 0x3f
+
+#CHECK: vstm %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x3e
+
+#CHECK: vstm %v12, %v18, 1110(%r3)
+0xe7 0xc2 0x34 0x56 0x04 0x3e
+
+#CHECK: vstm %v31, %v31, 4095(%r15)
+0xe7 0xff 0xff 0xff 0x0c 0x3e
+
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 0
+0xe7 0x00 0x00 0x00 0x00 0x8a
+
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 12
+0xe7 0x00 0x00 0xc0 0x00 0x8a
+
+#CHECK: vstrcb %v18, %v3, %v20, %v5, 0
+0xe7 0x23 0x40 0x00 0x5a 0x8a
+
+#CHECK: vstrcb %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x40 0xff 0x8a
+
+#CHECK: vstrcbs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0x90 0xff 0x8a
+
+#CHECK: vstrczb %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf0 0x60 0xff 0x8a
+
+#CHECK: vstrczbs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf0 0xb0 0xff 0x8a
+
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 0
+0xe7 0x00 0x02 0x00 0x00 0x8a
+
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 12
+0xe7 0x00 0x02 0xc0 0x00 0x8a
+
+#CHECK: vstrcf %v18, %v3, %v20, %v5, 0
+0xe7 0x23 0x42 0x00 0x5a 0x8a
+
+#CHECK: vstrcf %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf2 0x40 0xff 0x8a
+
+#CHECK: vstrcfs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf2 0x90 0xff 0x8a
+
+#CHECK: vstrczf %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf2 0x60 0xff 0x8a
+
+#CHECK: vstrczfs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf2 0xb0 0xff 0x8a
+
+#CHECK: vstrch %v0, %v0, %v0, %v0, 0
+0xe7 0x00 0x01 0x00 0x00 0x8a
+
+#CHECK: vstrch %v0, %v0, %v0, %v0, 12
+0xe7 0x00 0x01 0xc0 0x00 0x8a
+
+#CHECK: vstrch %v18, %v3, %v20, %v5, 0
+0xe7 0x23 0x41 0x00 0x5a 0x8a
+
+#CHECK: vstrch %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf1 0x40 0xff 0x8a
+
+#CHECK: vstrchs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf1 0x90 0xff 0x8a
+
+#CHECK: vstrczh %v31, %v31, %v31, %v31, 4
+0xe7 0xff 0xf1 0x60 0xff 0x8a
+
+#CHECK: vstrczhs %v31, %v31, %v31, %v31, 8
+0xe7 0xff 0xf1 0xb0 0xff 0x8a
+
+#CHECK: vsumgh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x65
+
+#CHECK: vsumgh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x65
+
+#CHECK: vsumgh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x65
+
+#CHECK: vsumgf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x65
+
+#CHECK: vsumgf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x65
+
+#CHECK: vsumgf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x65
+
+#CHECK: vsumqf %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0x67
+
+#CHECK: vsumqf %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x2a 0x67
+
+#CHECK: vsumqf %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x2e 0x67
+
+#CHECK: vsumqg %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x30 0x67
+
+#CHECK: vsumqg %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x3a 0x67
+
+#CHECK: vsumqg %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x3e 0x67
+
+#CHECK: vsumb %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x64
+
+#CHECK: vsumb %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x64
+
+#CHECK: vsumb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x64
+
+#CHECK: vsumh %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0x64
+
+#CHECK: vsumh %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x1a 0x64
+
+#CHECK: vsumh %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x1e 0x64
+
+#CHECK: vtm %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd8
+
+#CHECK: vtm %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd8
+
+#CHECK: vtm %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd8
+
+#CHECK: vuphb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd7
+
+#CHECK: vuphb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd7
+
+#CHECK: vuphb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd7
+
+#CHECK: vuphf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xd7
+
+#CHECK: vuphf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xd7
+
+#CHECK: vuphf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xd7
+
+#CHECK: vuphh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xd7
+
+#CHECK: vuphh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xd7
+
+#CHECK: vuphh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xd7
+
+#CHECK: vuplhb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd5
+
+#CHECK: vuplhb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd5
+
+#CHECK: vuplhb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd5
+
+#CHECK: vuplhf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xd5
+
+#CHECK: vuplhf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xd5
+
+#CHECK: vuplhf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xd5
+
+#CHECK: vuplhh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xd5
+
+#CHECK: vuplhh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xd5
+
+#CHECK: vuplhh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xd5
+
+#CHECK: vuplb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd6
+
+#CHECK: vuplb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd6
+
+#CHECK: vuplb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd6
+
+#CHECK: vuplf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xd6
+
+#CHECK: vuplf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xd6
+
+#CHECK: vuplf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xd6
+
+#CHECK: vuplhw %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xd6
+
+#CHECK: vuplhw %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xd6
+
+#CHECK: vuplhw %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xd6
+
+#CHECK: vupllb %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0xd4
+
+#CHECK: vupllb %v19, %v14
+0xe7 0x3e 0x00 0x00 0x08 0xd4
+
+#CHECK: vupllb %v31, %v31
+0xe7 0xff 0x00 0x00 0x0c 0xd4
+
+#CHECK: vupllf %v0, %v0
+0xe7 0x00 0x00 0x00 0x20 0xd4
+
+#CHECK: vupllf %v19, %v14
+0xe7 0x3e 0x00 0x00 0x28 0xd4
+
+#CHECK: vupllf %v31, %v31
+0xe7 0xff 0x00 0x00 0x2c 0xd4
+
+#CHECK: vupllh %v0, %v0
+0xe7 0x00 0x00 0x00 0x10 0xd4
+
+#CHECK: vupllh %v19, %v14
+0xe7 0x3e 0x00 0x00 0x18 0xd4
+
+#CHECK: vupllh %v31, %v31
+0xe7 0xff 0x00 0x00 0x1c 0xd4
+
+#CHECK: vx %v0, %v0, %v0
+0xe7 0x00 0x00 0x00 0x00 0x6d
+
+#CHECK: vx %v18, %v3, %v20
+0xe7 0x23 0x40 0x00 0x0a 0x6d
+
+#CHECK: vx %v31, %v31, %v31
+0xe7 0xff 0xf0 0x00 0x0e 0x6d
+
+#CHECK: wcdgb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc3
+
+#CHECK: wcdgb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc3
+
+#CHECK: wcdgb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc3
+
+#CHECK: wcdlgb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc1
+
+#CHECK: wcdlgb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc1
+
+#CHECK: wcdlgb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc1
+
+#CHECK: wcgdb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc2
+
+#CHECK: wcgdb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc2
+
+#CHECK: wcgdb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc2
+
+#CHECK: wclgdb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc0
+
+#CHECK: wclgdb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc0
+
+#CHECK: wclgdb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc0
+
+#CHECK: wfadb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xe3
+
+#CHECK: wfadb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xe3
+
+#CHECK: wfadb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xe3
+
+#CHECK: wfcdb %f0, %f0
+0xe7 0x00 0x00 0x00 0x30 0xcb
+
+#CHECK: wfcdb %v19, %f14
+0xe7 0x3e 0x00 0x00 0x38 0xcb
+
+#CHECK: wfcdb %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xcb
+
+#CHECK: wfcedb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xe8
+
+#CHECK: wfcedb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xe8
+
+#CHECK: wfcedb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xe8
+
+#CHECK: wfcedbs %f0, %f0, %f0
+0xe7 0x00 0x00 0x18 0x30 0xe8
+
+#CHECK: wfcedbs %v18, %f3, %v20
+0xe7 0x23 0x40 0x18 0x3a 0xe8
+
+#CHECK: wfcedbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x18 0x3e 0xe8
+
+#CHECK: wfchdb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xeb
+
+#CHECK: wfchdb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xeb
+
+#CHECK: wfchdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xeb
+
+#CHECK: wfchdbs %f0, %f0, %f0
+0xe7 0x00 0x00 0x18 0x30 0xeb
+
+#CHECK: wfchdbs %v18, %f3, %v20
+0xe7 0x23 0x40 0x18 0x3a 0xeb
+
+#CHECK: wfchdbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x18 0x3e 0xeb
+
+#CHECK: wfchedb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xea
+
+#CHECK: wfchedb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xea
+
+#CHECK: wfchedb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xea
+
+#CHECK: wfchedbs %f0, %f0, %f0
+0xe7 0x00 0x00 0x18 0x30 0xea
+
+#CHECK: wfchedbs %v18, %f3, %v20
+0xe7 0x23 0x40 0x18 0x3a 0xea
+
+#CHECK: wfchedbs %v31, %v31, %v31
+0xe7 0xff 0xf0 0x18 0x3e 0xea
+
+#CHECK: wfddb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xe5
+
+#CHECK: wfddb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xe5
+
+#CHECK: wfddb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xe5
+
+#CHECK: wfidb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc7
+
+#CHECK: wfidb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc7
+
+#CHECK: wfidb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc7
+
+#CHECK: wfkdb %f0, %f0
+0xe7 0x00 0x00 0x00 0x30 0xca
+
+#CHECK: wfkdb %v19, %f14
+0xe7 0x3e 0x00 0x00 0x38 0xca
+
+#CHECK: wfkdb %v31, %v31
+0xe7 0xff 0x00 0x00 0x3c 0xca
+
+#CHECK: wflcdb %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xcc
+
+#CHECK: wflcdb %v19, %f14
+0xe7 0x3e 0x00 0x08 0x38 0xcc
+
+#CHECK: wflcdb %v31, %v31
+0xe7 0xff 0x00 0x08 0x3c 0xcc
+
+#CHECK: wflndb %f0, %f0
+0xe7 0x00 0x00 0x18 0x30 0xcc
+
+#CHECK: wflndb %v19, %f14
+0xe7 0x3e 0x00 0x18 0x38 0xcc
+
+#CHECK: wflndb %v31, %v31
+0xe7 0xff 0x00 0x18 0x3c 0xcc
+
+#CHECK: wflpdb %f0, %f0
+0xe7 0x00 0x00 0x28 0x30 0xcc
+
+#CHECK: wflpdb %v19, %f14
+0xe7 0x3e 0x00 0x28 0x38 0xcc
+
+#CHECK: wflpdb %v31, %v31
+0xe7 0xff 0x00 0x28 0x3c 0xcc
+
+#CHECK: wfmadb %f0, %f0, %f0, %f0
+0xe7 0x00 0x03 0x08 0x00 0x8f
+
+#CHECK: wfmadb %f3, %v20, %f5, %v22
+0xe7 0x34 0x53 0x08 0x65 0x8f
+
+#CHECK: wfmadb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf3 0x08 0xff 0x8f
+
+#CHECK: wfmdb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xe7
+
+#CHECK: wfmdb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xe7
+
+#CHECK: wfmdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xe7
+
+#CHECK: wfmsdb %f0, %f0, %f0, %f0
+0xe7 0x00 0x03 0x08 0x00 0x8e
+
+#CHECK: wfmsdb %f3, %v20, %f5, %v22
+0xe7 0x34 0x53 0x08 0x65 0x8e
+
+#CHECK: wfmsdb %v31, %v31, %v31, %v31
+0xe7 0xff 0xf3 0x08 0xff 0x8e
+
+#CHECK: wfsdb %f0, %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xe2
+
+#CHECK: wfsdb %v18, %f3, %v20
+0xe7 0x23 0x40 0x08 0x3a 0xe2
+
+#CHECK: wfsdb %v31, %v31, %v31
+0xe7 0xff 0xf0 0x08 0x3e 0xe2
+
+#CHECK: wfsqdb %f0, %f0
+0xe7 0x00 0x00 0x08 0x30 0xce
+
+#CHECK: wfsqdb %v19, %f14
+0xe7 0x3e 0x00 0x08 0x38 0xce
+
+#CHECK: wfsqdb %v31, %v31
+0xe7 0xff 0x00 0x08 0x3c 0xce
+
+#CHECK: wftcidb %f0, %f0, 0
+0xe7 0x00 0x00 0x08 0x30 0x4a
+
+#CHECK: wftcidb %v19, %f4, 1383
+0xe7 0x34 0x56 0x78 0x38 0x4a
+
+#CHECK: wftcidb %v31, %v31, 4095
+0xe7 0xff 0xff 0xf8 0x3c 0x4a
+
+#CHECK: wldeb %f0, %f0
+0xe7 0x00 0x00 0x08 0x20 0xc4
+
+#CHECK: wldeb %v19, %f14
+0xe7 0x3e 0x00 0x08 0x28 0xc4
+
+#CHECK: wldeb %v31, %v31
+0xe7 0xff 0x00 0x08 0x2c 0xc4
+
+#CHECK: wledb %f0, %f0, 0, 0
+0xe7 0x00 0x00 0x08 0x30 0xc5
+
+#CHECK: wledb %v19, %f14, 4, 10
+0xe7 0x3e 0x00 0xac 0x38 0xc5
+
+#CHECK: wledb %v31, %v31, 7, 15
+0xe7 0xff 0x00 0xff 0x3c 0xc5
diff --git a/llvm/test/MC/SystemZ/insn-bad-z13.s b/llvm/test/MC/SystemZ/insn-bad-z13.s
new file mode 100644
index 00000000000..6468e3ae2ba
--- /dev/null
+++ b/llvm/test/MC/SystemZ/insn-bad-z13.s
@@ -0,0 +1,1201 @@
+# For z13 only.
+# RUN: not llvm-mc -triple s390x-linux-gnu -mcpu=z13 < %s 2> %t
+# RUN: FileCheck < %t %s
+
+#CHECK: error: invalid operand
+#CHECK: lcbb %r0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: lcbb %r0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: lcbb %r0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: lcbb %r0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: lcbb %r0, 0(%v1,%r2), 0
+
+ lcbb %r0, 0, -1
+ lcbb %r0, 0, 16
+ lcbb %r0, -1, 0
+ lcbb %r0, 4096, 0
+ lcbb %r0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vcdgb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vcdgb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vcdgb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vcdgb %v0, %v0, 16, 0
+
+ vcdgb %v0, %v0, 0, -1
+ vcdgb %v0, %v0, 0, 16
+ vcdgb %v0, %v0, -1, 0
+ vcdgb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: vcdlgb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vcdlgb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vcdlgb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vcdlgb %v0, %v0, 16, 0
+
+ vcdlgb %v0, %v0, 0, -1
+ vcdlgb %v0, %v0, 0, 16
+ vcdlgb %v0, %v0, -1, 0
+ vcdlgb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: vcgdb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vcgdb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vcgdb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vcgdb %v0, %v0, 16, 0
+
+ vcgdb %v0, %v0, 0, -1
+ vcgdb %v0, %v0, 0, 16
+ vcgdb %v0, %v0, -1, 0
+ vcgdb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: vclgdb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vclgdb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vclgdb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vclgdb %v0, %v0, 16, 0
+
+ vclgdb %v0, %v0, 0, -1
+ vclgdb %v0, %v0, 0, 16
+ vclgdb %v0, %v0, -1, 0
+ vclgdb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: verimb %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verimb %v0, %v0, %v0, 256
+
+ verimb %v0, %v0, %v0, -1
+ verimb %v0, %v0, %v0, 256
+
+#CHECK: error: invalid operand
+#CHECK: verimf %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verimf %v0, %v0, %v0, 256
+
+ verimf %v0, %v0, %v0, -1
+ verimf %v0, %v0, %v0, 256
+
+#CHECK: error: invalid operand
+#CHECK: verimg %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verimg %v0, %v0, %v0, 256
+
+ verimg %v0, %v0, %v0, -1
+ verimg %v0, %v0, %v0, 256
+
+#CHECK: error: invalid operand
+#CHECK: verimh %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verimh %v0, %v0, %v0, 256
+
+ verimh %v0, %v0, %v0, -1
+ verimh %v0, %v0, %v0, 256
+
+#CHECK: error: invalid operand
+#CHECK: verllb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verllb %v0, %v0, 4096
+
+ verllb %v0, %v0, -1
+ verllb %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: verllf %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verllf %v0, %v0, 4096
+
+ verllf %v0, %v0, -1
+ verllf %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: verllg %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verllg %v0, %v0, 4096
+
+ verllg %v0, %v0, -1
+ verllg %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: verllh %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: verllh %v0, %v0, 4096
+
+ verllh %v0, %v0, -1
+ verllh %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: veslb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: veslb %v0, %v0, 4096
+
+ veslb %v0, %v0, -1
+ veslb %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: veslf %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: veslf %v0, %v0, 4096
+
+ veslf %v0, %v0, -1
+ veslf %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: veslg %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: veslg %v0, %v0, 4096
+
+ veslg %v0, %v0, -1
+ veslg %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: veslh %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: veslh %v0, %v0, 4096
+
+ veslh %v0, %v0, -1
+ veslh %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrab %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrab %v0, %v0, 4096
+
+ vesrab %v0, %v0, -1
+ vesrab %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesraf %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesraf %v0, %v0, 4096
+
+ vesraf %v0, %v0, -1
+ vesraf %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrag %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrag %v0, %v0, 4096
+
+ vesrag %v0, %v0, -1
+ vesrag %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrah %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrah %v0, %v0, 4096
+
+ vesrah %v0, %v0, -1
+ vesrah %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrlb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrlb %v0, %v0, 4096
+
+ vesrlb %v0, %v0, -1
+ vesrlb %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrlf %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrlf %v0, %v0, 4096
+
+ vesrlf %v0, %v0, -1
+ vesrlf %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrlg %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrlg %v0, %v0, 4096
+
+ vesrlg %v0, %v0, -1
+ vesrlg %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vesrlh %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vesrlh %v0, %v0, 4096
+
+ vesrlh %v0, %v0, -1
+ vesrlh %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vfaeb %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaeb %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaeb %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaeb %v0, %v0, %v0, 0, 0
+
+ vfaeb %v0, %v0, %v0, -1
+ vfaeb %v0, %v0, %v0, 16
+ vfaeb %v0, %v0
+ vfaeb %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfaebs %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaebs %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaebs %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaebs %v0, %v0, %v0, 0, 0
+
+ vfaebs %v0, %v0, %v0, -1
+ vfaebs %v0, %v0, %v0, 16
+ vfaebs %v0, %v0
+ vfaebs %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfaef %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaef %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaef %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaef %v0, %v0, %v0, 0, 0
+
+ vfaef %v0, %v0, %v0, -1
+ vfaef %v0, %v0, %v0, 16
+ vfaef %v0, %v0
+ vfaef %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfaeh %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaeh %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaeh %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaeh %v0, %v0, %v0, 0, 0
+
+ vfaeh %v0, %v0, %v0, -1
+ vfaeh %v0, %v0, %v0, 16
+ vfaeh %v0, %v0
+ vfaeh %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfaezh %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaezh %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaezh %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaezh %v0, %v0, %v0, 0, 0
+
+ vfaezh %v0, %v0, %v0, -1
+ vfaezh %v0, %v0, %v0, 16
+ vfaezh %v0, %v0
+ vfaezh %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfaezfs %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vfaezfs %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vfaezfs %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vfaezfs %v0, %v0, %v0, 0, 0
+
+ vfaezfs %v0, %v0, %v0, -1
+ vfaezfs %v0, %v0, %v0, 16
+ vfaezfs %v0, %v0
+ vfaezfs %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vfidb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vfidb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vfidb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vfidb %v0, %v0, 16, 0
+
+ vfidb %v0, %v0, 0, -1
+ vfidb %v0, %v0, 0, 16
+ vfidb %v0, %v0, -1, 0
+ vfidb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: vftcidb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vftcidb %v0, %v0, 4096
+
+ vftcidb %v0, %v0, -1
+ vftcidb %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vgbm %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vgbm %v0, 0x10000
+
+ vgbm %v0, -1
+ vgbm %v0, 0x10000
+
+#CHECK: error: vector index required
+#CHECK: vgef %v0, 0(%r1), 0
+#CHECK: error: vector index required
+#CHECK: vgef %v0, 0(%r2,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vgef %v0, 0(%v0,%r1), -1
+#CHECK: error: invalid operand
+#CHECK: vgef %v0, 0(%v0,%r1), 4
+#CHECK: error: invalid operand
+#CHECK: vgef %v0, -1(%v0,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vgef %v0, 4096(%v0,%r1), 0
+
+ vgef %v0, 0(%r1), 0
+ vgef %v0, 0(%r2,%r1), 0
+ vgef %v0, 0(%v0,%r1), -1
+ vgef %v0, 0(%v0,%r1), 4
+ vgef %v0, -1(%v0,%r1), 0
+ vgef %v0, 4096(%v0,%r1), 0
+
+#CHECK: error: vector index required
+#CHECK: vgeg %v0, 0(%r1), 0
+#CHECK: error: vector index required
+#CHECK: vgeg %v0, 0(%r2,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vgeg %v0, 0(%v0,%r1), -1
+#CHECK: error: invalid operand
+#CHECK: vgeg %v0, 0(%v0,%r1), 2
+#CHECK: error: invalid operand
+#CHECK: vgeg %v0, -1(%v0,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vgeg %v0, 4096(%v0,%r1), 0
+
+ vgeg %v0, 0(%r1), 0
+ vgeg %v0, 0(%r2,%r1), 0
+ vgeg %v0, 0(%v0,%r1), -1
+ vgeg %v0, 0(%v0,%r1), 2
+ vgeg %v0, -1(%v0,%r1), 0
+ vgeg %v0, 4096(%v0,%r1), 0
+
+#CHECK: error: invalid operand
+#CHECK: vgmb %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmb %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmb %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vgmb %v0, 256, 0
+
+ vgmb %v0, 0, -1
+ vgmb %v0, 0, -1
+ vgmb %v0, -1, 0
+ vgmb %v0, 256, 0
+
+#CHECK: error: invalid operand
+#CHECK: vgmf %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmf %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmf %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vgmf %v0, 256, 0
+
+ vgmf %v0, 0, -1
+ vgmf %v0, 0, -1
+ vgmf %v0, -1, 0
+ vgmf %v0, 256, 0
+
+#CHECK: error: invalid operand
+#CHECK: vgmg %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmg %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmg %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vgmg %v0, 256, 0
+
+ vgmg %v0, 0, -1
+ vgmg %v0, 0, -1
+ vgmg %v0, -1, 0
+ vgmg %v0, 256, 0
+
+#CHECK: error: invalid operand
+#CHECK: vgmh %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmh %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vgmh %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vgmh %v0, 256, 0
+
+ vgmh %v0, 0, -1
+ vgmh %v0, 0, -1
+ vgmh %v0, -1, 0
+ vgmh %v0, 256, 0
+
+#CHECK: error: invalid operand
+#CHECK: vl %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vl %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vl %v0, 0(%v1,%r2)
+
+ vl %v0, -1
+ vl %v0, 4096
+ vl %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlbb %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vlbb %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vlbb %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vlbb %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlbb %v0, 0(%v1,%r2), 0
+
+ vlbb %v0, 0, -1
+ vlbb %v0, 0, 16
+ vlbb %v0, -1, 0
+ vlbb %v0, 4096, 0
+ vlbb %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vleb %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleb %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vleb %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vleb %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vleb %v0, 0(%v1,%r2), 0
+
+ vleb %v0, 0, -1
+ vleb %v0, 0, 16
+ vleb %v0, -1, 0
+ vleb %v0, 4096, 0
+ vleb %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vledb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vledb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vledb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vledb %v0, %v0, 16, 0
+
+ vledb %v0, %v0, 0, -1
+ vledb %v0, %v0, 0, 16
+ vledb %v0, %v0, -1, 0
+ vledb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: vlef %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vlef %v0, 0, 4
+#CHECK: error: invalid operand
+#CHECK: vlef %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vlef %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlef %v0, 0(%v1,%r2), 0
+
+ vlef %v0, 0, -1
+ vlef %v0, 0, 4
+ vlef %v0, -1, 0
+ vlef %v0, 4096, 0
+ vlef %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vleg %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleg %v0, 0, 2
+#CHECK: error: invalid operand
+#CHECK: vleg %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vleg %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vleg %v0, 0(%v1,%r2), 0
+
+ vleg %v0, 0, -1
+ vleg %v0, 0, 2
+ vleg %v0, -1, 0
+ vleg %v0, 4096, 0
+ vleg %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vleh %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleh %v0, 0, 8
+#CHECK: error: invalid operand
+#CHECK: vleh %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vleh %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vleh %v0, 0(%v1,%r2), 0
+
+ vleh %v0, 0, -1
+ vleh %v0, 0, 8
+ vleh %v0, -1, 0
+ vleh %v0, 4096, 0
+ vleh %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vleib %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleib %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vleib %v0, -32769, 0
+#CHECK: error: invalid operand
+#CHECK: vleib %v0, 32768, 0
+
+ vleib %v0, 0, -1
+ vleib %v0, 0, 16
+ vleib %v0, -32769, 0
+ vleib %v0, 32768, 0
+
+#CHECK: error: invalid operand
+#CHECK: vleif %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleif %v0, 0, 4
+#CHECK: error: invalid operand
+#CHECK: vleif %v0, -32769, 0
+#CHECK: error: invalid operand
+#CHECK: vleif %v0, 32768, 0
+
+ vleif %v0, 0, -1
+ vleif %v0, 0, 4
+ vleif %v0, -32769, 0
+ vleif %v0, 32768, 0
+
+#CHECK: error: invalid operand
+#CHECK: vleig %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleig %v0, 0, 2
+#CHECK: error: invalid operand
+#CHECK: vleig %v0, -32769, 0
+#CHECK: error: invalid operand
+#CHECK: vleig %v0, 32768, 0
+
+ vleig %v0, 0, -1
+ vleig %v0, 0, 2
+ vleig %v0, -32769, 0
+ vleig %v0, 32768, 0
+
+#CHECK: error: invalid operand
+#CHECK: vleih %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vleih %v0, 0, 8
+#CHECK: error: invalid operand
+#CHECK: vleih %v0, -32769, 0
+#CHECK: error: invalid operand
+#CHECK: vleih %v0, 32768, 0
+
+ vleih %v0, 0, -1
+ vleih %v0, 0, 8
+ vleih %v0, -32769, 0
+ vleih %v0, 32768, 0
+
+#CHECK: error: invalid operand
+#CHECK: vlgvb %r0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlgvb %r0, %v0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlgvb %r0, %v0, 0(%r0)
+
+ vlgvb %r0, %v0, -1
+ vlgvb %r0, %v0, 4096
+ vlgvb %r0, %v0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlgvf %r0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlgvf %r0, %v0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlgvf %r0, %v0, 0(%r0)
+
+ vlgvf %r0, %v0, -1
+ vlgvf %r0, %v0, 4096
+ vlgvf %r0, %v0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlgvg %r0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlgvg %r0, %v0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlgvg %r0, %v0, 0(%r0)
+
+ vlgvg %r0, %v0, -1
+ vlgvg %r0, %v0, 4096
+ vlgvg %r0, %v0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlgvh %r0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlgvh %r0, %v0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlgvh %r0, %v0, 0(%r0)
+
+ vlgvh %r0, %v0, -1
+ vlgvh %r0, %v0, 4096
+ vlgvh %r0, %v0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vll %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vll %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vll %v0, %r0, 0(%r0)
+
+ vll %v0, %r0, -1
+ vll %v0, %r0, 4096
+ vll %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vllezb %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vllezb %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vllezb %v0, 0(%v1,%r2)
+
+ vllezb %v0, -1
+ vllezb %v0, 4096
+ vllezb %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vllezf %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vllezf %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vllezf %v0, 0(%v1,%r2)
+
+ vllezf %v0, -1
+ vllezf %v0, 4096
+ vllezf %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vllezg %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vllezg %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vllezg %v0, 0(%v1,%r2)
+
+ vllezg %v0, -1
+ vllezg %v0, 4096
+ vllezg %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vllezh %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vllezh %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vllezh %v0, 0(%v1,%r2)
+
+ vllezh %v0, -1
+ vllezh %v0, 4096
+ vllezh %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlm %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlm %v0, %v0, 4096
+
+ vlm %v0, %v0, -1
+ vlm %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vlrepb %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlrepb %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlrepb %v0, 0(%v1,%r2)
+
+ vlrepb %v0, -1
+ vlrepb %v0, 4096
+ vlrepb %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlrepf %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlrepf %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlrepf %v0, 0(%v1,%r2)
+
+ vlrepf %v0, -1
+ vlrepf %v0, 4096
+ vlrepf %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlrepg %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlrepg %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlrepg %v0, 0(%v1,%r2)
+
+ vlrepg %v0, -1
+ vlrepg %v0, 4096
+ vlrepg %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlreph %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vlreph %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vlreph %v0, 0(%v1,%r2)
+
+ vlreph %v0, -1
+ vlreph %v0, 4096
+ vlreph %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vlvgb %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vlvgb %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlvgb %v0, %r0, 0(%r0)
+
+ vlvgb %v0, %r0, -1
+ vlvgb %v0, %r0, 4096
+ vlvgb %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlvgf %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vlvgf %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlvgf %v0, %r0, 0(%r0)
+
+ vlvgf %v0, %r0, -1
+ vlvgf %v0, %r0, 4096
+ vlvgf %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlvgg %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vlvgg %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlvgg %v0, %r0, 0(%r0)
+
+ vlvgg %v0, %r0, -1
+ vlvgg %v0, %r0, 4096
+ vlvgg %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vlvgh %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vlvgh %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vlvgh %v0, %r0, 0(%r0)
+
+ vlvgh %v0, %r0, -1
+ vlvgh %v0, %r0, 4096
+ vlvgh %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vpdi %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vpdi %v0, %v0, %v0, 16
+
+ vpdi %v0, %v0, %v0, -1
+ vpdi %v0, %v0, %v0, 16
+
+#CHECK: error: invalid operand
+#CHECK: vrepb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vrepb %v0, %v0, 65536
+
+ vrepb %v0, %v0, -1
+ vrepb %v0, %v0, 65536
+
+#CHECK: error: invalid operand
+#CHECK: vrepf %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vrepf %v0, %v0, 65536
+
+ vrepf %v0, %v0, -1
+ vrepf %v0, %v0, 65536
+
+#CHECK: error: invalid operand
+#CHECK: vrepg %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vrepg %v0, %v0, 65536
+
+ vrepg %v0, %v0, -1
+ vrepg %v0, %v0, 65536
+
+#CHECK: error: invalid operand
+#CHECK: vreph %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vreph %v0, %v0, 65536
+
+ vreph %v0, %v0, -1
+ vreph %v0, %v0, 65536
+
+#CHECK: error: invalid operand
+#CHECK: vrepib %v0, -32769
+#CHECK: error: invalid operand
+#CHECK: vrepib %v0, 32768
+
+ vrepib %v0, -32769
+ vrepib %v0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: vrepif %v0, -32769
+#CHECK: error: invalid operand
+#CHECK: vrepif %v0, 32768
+
+ vrepif %v0, -32769
+ vrepif %v0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: vrepig %v0, -32769
+#CHECK: error: invalid operand
+#CHECK: vrepig %v0, 32768
+
+ vrepig %v0, -32769
+ vrepig %v0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: vrepih %v0, -32769
+#CHECK: error: invalid operand
+#CHECK: vrepih %v0, 32768
+
+ vrepih %v0, -32769
+ vrepih %v0, 32768
+
+#CHECK: error: vector index required
+#CHECK: vscef %v0, 0(%r1), 0
+#CHECK: error: vector index required
+#CHECK: vscef %v0, 0(%r2,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vscef %v0, 0(%v0,%r1), -1
+#CHECK: error: invalid operand
+#CHECK: vscef %v0, 0(%v0,%r1), 4
+#CHECK: error: invalid operand
+#CHECK: vscef %v0, -1(%v0,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vscef %v0, 4096(%v0,%r1), 0
+
+ vscef %v0, 0(%r1), 0
+ vscef %v0, 0(%r2,%r1), 0
+ vscef %v0, 0(%v0,%r1), -1
+ vscef %v0, 0(%v0,%r1), 4
+ vscef %v0, -1(%v0,%r1), 0
+ vscef %v0, 4096(%v0,%r1), 0
+
+#CHECK: error: vector index required
+#CHECK: vsceg %v0, 0(%r1), 0
+#CHECK: error: vector index required
+#CHECK: vsceg %v0, 0(%r2,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vsceg %v0, 0(%v0,%r1), -1
+#CHECK: error: invalid operand
+#CHECK: vsceg %v0, 0(%v0,%r1), 2
+#CHECK: error: invalid operand
+#CHECK: vsceg %v0, -1(%v0,%r1), 0
+#CHECK: error: invalid operand
+#CHECK: vsceg %v0, 4096(%v0,%r1), 0
+
+ vsceg %v0, 0(%r1), 0
+ vsceg %v0, 0(%r2,%r1), 0
+ vsceg %v0, 0(%v0,%r1), -1
+ vsceg %v0, 0(%v0,%r1), 2
+ vsceg %v0, -1(%v0,%r1), 0
+ vsceg %v0, 4096(%v0,%r1), 0
+
+#CHECK: error: invalid operand
+#CHECK: vsldb %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vsldb %v0, %v0, %v0, 256
+
+ vsldb %v0, %v0, %v0, -1
+ vsldb %v0, %v0, %v0, 256
+
+#CHECK: error: invalid operand
+#CHECK: vst %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vst %v0, 4096
+#CHECK: error: invalid use of vector addressing
+#CHECK: vst %v0, 0(%v1,%r2)
+
+ vst %v0, -1
+ vst %v0, 4096
+ vst %v0, 0(%v1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: vsteb %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vsteb %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: vsteb %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vsteb %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vsteb %v0, 0(%v1,%r2), 0
+
+ vsteb %v0, 0, -1
+ vsteb %v0, 0, 16
+ vsteb %v0, -1, 0
+ vsteb %v0, 4096, 0
+ vsteb %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vstef %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vstef %v0, 0, 4
+#CHECK: error: invalid operand
+#CHECK: vstef %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vstef %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vstef %v0, 0(%v1,%r2), 0
+
+ vstef %v0, 0, -1
+ vstef %v0, 0, 4
+ vstef %v0, -1, 0
+ vstef %v0, 4096, 0
+ vstef %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vsteg %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vsteg %v0, 0, 2
+#CHECK: error: invalid operand
+#CHECK: vsteg %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vsteg %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vsteg %v0, 0(%v1,%r2), 0
+
+ vsteg %v0, 0, -1
+ vsteg %v0, 0, 2
+ vsteg %v0, -1, 0
+ vsteg %v0, 4096, 0
+ vsteg %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vsteh %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: vsteh %v0, 0, 8
+#CHECK: error: invalid operand
+#CHECK: vsteh %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: vsteh %v0, 4096, 0
+#CHECK: error: invalid use of vector addressing
+#CHECK: vsteh %v0, 0(%v1,%r2), 0
+
+ vsteh %v0, 0, -1
+ vsteh %v0, 0, 8
+ vsteh %v0, -1, 0
+ vsteh %v0, 4096, 0
+ vsteh %v0, 0(%v1,%r2), 0
+
+#CHECK: error: invalid operand
+#CHECK: vstl %v0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: vstl %v0, %r0, 4096
+#CHECK: error: %r0 used in an address
+#CHECK: vstl %v0, %r0, 0(%r0)
+
+ vstl %v0, %r0, -1
+ vstl %v0, %r0, 4096
+ vstl %v0, %r0, 0(%r0)
+
+#CHECK: error: invalid operand
+#CHECK: vstm %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstm %v0, %v0, 4096
+
+ vstm %v0, %v0, -1
+ vstm %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: vstrcb %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrcb %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 0, 0
+
+ vstrcb %v0, %v0, %v0, %v0, -1
+ vstrcb %v0, %v0, %v0, %v0, 16
+ vstrcb %v0, %v0, %v0
+ vstrcb %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vstrcbs %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrcbs %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrcbs %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrcbs %v0, %v0, %v0, %v0, 0, 0
+
+ vstrcbs %v0, %v0, %v0, %v0, -1
+ vstrcbs %v0, %v0, %v0, %v0, 16
+ vstrcbs %v0, %v0, %v0
+ vstrcbs %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vstrcf %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrcf %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 0, 0
+
+ vstrcf %v0, %v0, %v0, %v0, -1
+ vstrcf %v0, %v0, %v0, %v0, 16
+ vstrcf %v0, %v0, %v0
+ vstrcf %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vstrch %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrch %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrch %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrch %v0, %v0, %v0, %v0, 0, 0
+
+ vstrch %v0, %v0, %v0, %v0, -1
+ vstrch %v0, %v0, %v0, %v0, 16
+ vstrch %v0, %v0, %v0
+ vstrch %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vstrczh %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrczh %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrczh %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrczh %v0, %v0, %v0, %v0, 0, 0
+
+ vstrczh %v0, %v0, %v0, %v0, -1
+ vstrczh %v0, %v0, %v0, %v0, 16
+ vstrczh %v0, %v0, %v0
+ vstrczh %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: vstrczfs %v0, %v0, %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: vstrczfs %v0, %v0, %v0, %v0, 16
+#CHECK: error: too few operands
+#CHECK: vstrczfs %v0, %v0, %v0
+#CHECK: error: invalid operand
+#CHECK: vstrczfs %v0, %v0, %v0, %v0, 0, 0
+
+ vstrczfs %v0, %v0, %v0, %v0, -1
+ vstrczfs %v0, %v0, %v0, %v0, 16
+ vstrczfs %v0, %v0, %v0
+ vstrczfs %v0, %v0, %v0, %v0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: wcdgb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wcdgb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wcdgb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wcdgb %v0, %v0, 16, 0
+
+ wcdgb %v0, %v0, 0, -1
+ wcdgb %v0, %v0, 0, 16
+ wcdgb %v0, %v0, -1, 0
+ wcdgb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: wcdlgb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wcdlgb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wcdlgb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wcdlgb %v0, %v0, 16, 0
+
+ wcdlgb %v0, %v0, 0, -1
+ wcdlgb %v0, %v0, 0, 16
+ wcdlgb %v0, %v0, -1, 0
+ wcdlgb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: wcgdb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wcgdb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wcgdb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wcgdb %v0, %v0, 16, 0
+
+ wcgdb %v0, %v0, 0, -1
+ wcgdb %v0, %v0, 0, 16
+ wcgdb %v0, %v0, -1, 0
+ wcgdb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: wclgdb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wclgdb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wclgdb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wclgdb %v0, %v0, 16, 0
+
+ wclgdb %v0, %v0, 0, -1
+ wclgdb %v0, %v0, 0, 16
+ wclgdb %v0, %v0, -1, 0
+ wclgdb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: wfidb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wfidb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wfidb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wfidb %v0, %v0, 16, 0
+
+ wfidb %v0, %v0, 0, -1
+ wfidb %v0, %v0, 0, 16
+ wfidb %v0, %v0, -1, 0
+ wfidb %v0, %v0, 16, 0
+
+#CHECK: error: invalid operand
+#CHECK: wftcidb %v0, %v0, -1
+#CHECK: error: invalid operand
+#CHECK: wftcidb %v0, %v0, 4096
+
+ wftcidb %v0, %v0, -1
+ wftcidb %v0, %v0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: wledb %v0, %v0, 0, -1
+#CHECK: error: invalid operand
+#CHECK: wledb %v0, %v0, 0, 16
+#CHECK: error: invalid operand
+#CHECK: wledb %v0, %v0, -1, 0
+#CHECK: error: invalid operand
+#CHECK: wledb %v0, %v0, 16, 0
+
+ wledb %v0, %v0, 0, -1
+ wledb %v0, %v0, 0, 16
+ wledb %v0, %v0, -1, 0
+ wledb %v0, %v0, 16, 0
diff --git a/llvm/test/MC/SystemZ/insn-bad-zEC12.s b/llvm/test/MC/SystemZ/insn-bad-zEC12.s
index d96e35d885b..ee31f5707af 100644
--- a/llvm/test/MC/SystemZ/insn-bad-zEC12.s
+++ b/llvm/test/MC/SystemZ/insn-bad-zEC12.s
@@ -2,6 +2,11 @@
# RUN: not llvm-mc -triple s390x-linux-gnu -mcpu=zEC12 < %s 2> %t
# RUN: FileCheck < %t %s
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: lcbb %r0, 0, 0
+
+ lcbb %r0, 0, 0
+
#CHECK: error: invalid operand
#CHECK: ntstg %r0, -524289
#CHECK: error: invalid operand
@@ -82,3 +87,1492 @@
tbeginc 0(%r1,%r2), 0
tbeginc 0, -1
tbeginc 0, 65536
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vab %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vag %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vah %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaq %v0, %v0, %v0
+
+ vab %v0, %v0, %v0
+ vaf %v0, %v0, %v0
+ vag %v0, %v0, %v0
+ vah %v0, %v0, %v0
+ vaq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaccb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaccf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaccg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vacch %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vaccq %v0, %v0, %v0
+
+ vaccb %v0, %v0, %v0
+ vaccf %v0, %v0, %v0
+ vaccg %v0, %v0, %v0
+ vacch %v0, %v0, %v0
+ vaccq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vacccq %v0, %v0, %v0
+
+ vacccq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vacq %v0, %v0, %v0
+
+ vacq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavgb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavgf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavgg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavgh %v0, %v0, %v0
+
+ vavgb %v0, %v0, %v0
+ vavgf %v0, %v0, %v0
+ vavgg %v0, %v0, %v0
+ vavgh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavglb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavglf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavglg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vavglh %v0, %v0, %v0
+
+ vavglb %v0, %v0, %v0
+ vavglf %v0, %v0, %v0
+ vavglg %v0, %v0, %v0
+ vavglh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vcdgb %v0, %v0, 0, 0
+
+ vcdgb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vcdlgb %v0, %v0, 0, 0
+
+ vcdlgb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqfs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vceqgs %v0, %v0, %v0
+
+ vceqb %v0, %v0, %v0
+ vceqf %v0, %v0, %v0
+ vceqg %v0, %v0, %v0
+ vceqh %v0, %v0, %v0
+ vceqbs %v0, %v0, %v0
+ vceqhs %v0, %v0, %v0
+ vceqfs %v0, %v0, %v0
+ vceqgs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vcgdb %v0, %v0, 0, 0
+
+ vcgdb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchfs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchgs %v0, %v0, %v0
+
+ vchb %v0, %v0, %v0
+ vchf %v0, %v0, %v0
+ vchg %v0, %v0, %v0
+ vchh %v0, %v0, %v0
+ vchbs %v0, %v0, %v0
+ vchhs %v0, %v0, %v0
+ vchfs %v0, %v0, %v0
+ vchgs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlfs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vchlgs %v0, %v0, %v0
+
+ vchlb %v0, %v0, %v0
+ vchlf %v0, %v0, %v0
+ vchlg %v0, %v0, %v0
+ vchlh %v0, %v0, %v0
+ vchlbs %v0, %v0, %v0
+ vchlhs %v0, %v0, %v0
+ vchlfs %v0, %v0, %v0
+ vchlgs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vcksm %v0, %v0, %v0
+
+ vcksm %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vclgdb %v0, %v0, 0, 0
+
+ vclgdb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vclzb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vclzf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vclzg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vclzh %v0, %v0
+
+ vclzb %v0, %v0
+ vclzf %v0, %v0
+ vclzg %v0, %v0
+ vclzh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vctzb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vctzf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vctzg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vctzh %v0, %v0
+
+ vctzb %v0, %v0
+ vctzf %v0, %v0
+ vctzg %v0, %v0
+ vctzh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vecb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vecf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vecg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vech %v0, %v0
+
+ vecb %v0, %v0
+ vecf %v0, %v0
+ vecg %v0, %v0
+ vech %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verimb %v0, %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verimf %v0, %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verimg %v0, %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verimh %v0, %v0, %v0, 0
+
+ verimb %v0, %v0, %v0, 0
+ verimf %v0, %v0, %v0, 0
+ verimg %v0, %v0, %v0, 0
+ verimh %v0, %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veclb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veclf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veclg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veclh %v0, %v0
+
+ veclb %v0, %v0
+ veclf %v0, %v0
+ veclg %v0, %v0
+ veclh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllvb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllvf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllvg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllvh %v0, %v0, %v0
+
+ verllvb %v0, %v0, %v0
+ verllvf %v0, %v0, %v0
+ verllvg %v0, %v0, %v0
+ verllvh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllb %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllf %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllg %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: verllh %v0, %v0, 0
+
+ verllb %v0, %v0, 0
+ verllf %v0, %v0, 0
+ verllg %v0, %v0, 0
+ verllh %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslvb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslvf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslvg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslvh %v0, %v0, %v0
+
+ veslvb %v0, %v0, %v0
+ veslvf %v0, %v0, %v0
+ veslvg %v0, %v0, %v0
+ veslvh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslb %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslf %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslg %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: veslh %v0, %v0, 0
+
+ veslb %v0, %v0, 0
+ veslf %v0, %v0, 0
+ veslg %v0, %v0, 0
+ veslh %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesravb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesravf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesravg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesravh %v0, %v0, %v0
+
+ vesravb %v0, %v0, %v0
+ vesravf %v0, %v0, %v0
+ vesravg %v0, %v0, %v0
+ vesravh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrab %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesraf %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrag %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrah %v0, %v0, 0
+
+ vesrab %v0, %v0, 0
+ vesraf %v0, %v0, 0
+ vesrag %v0, %v0, 0
+ vesrah %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlvb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlvf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlvg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlvh %v0, %v0, %v0
+
+ vesrlvb %v0, %v0, %v0
+ vesrlvf %v0, %v0, %v0
+ vesrlvg %v0, %v0, %v0
+ vesrlvh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlb %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlf %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlg %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vesrlh %v0, %v0, 0
+
+ vesrlb %v0, %v0, 0
+ vesrlf %v0, %v0, 0
+ vesrlg %v0, %v0, 0
+ vesrlh %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfadb %v0, %v0, %v0
+
+ vfadb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfcedb %v0, %v0, %v0
+#CHECK: vfcedbs %v0, %v0, %v0
+
+ vfcedb %v0, %v0, %v0
+ vfcedbs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfchdb %v0, %v0, %v0
+#CHECK: vfchdbs %v0, %v0, %v0
+
+ vfchdb %v0, %v0, %v0
+ vfchdbs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfddb %v0, %v0, %v0
+
+ vfddb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaeb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaebs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaeh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaehs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaef %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaefs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfaezfs %v0, %v0, %v0
+
+ vfaeb %v0, %v0, %v0
+ vfaezb %v0, %v0, %v0
+ vfaebs %v0, %v0, %v0
+ vfaezbs %v0, %v0, %v0
+ vfaeh %v0, %v0, %v0
+ vfaezh %v0, %v0, %v0
+ vfaehs %v0, %v0, %v0
+ vfaezhs %v0, %v0, %v0
+ vfaef %v0, %v0, %v0
+ vfaezf %v0, %v0, %v0
+ vfaefs %v0, %v0, %v0
+ vfaezfs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeeb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeebs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeeh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeehs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeef %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeefs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeezfs %v0, %v0, %v0
+
+ vfeeb %v0, %v0, %v0
+ vfeezb %v0, %v0, %v0
+ vfeebs %v0, %v0, %v0
+ vfeezbs %v0, %v0, %v0
+ vfeeh %v0, %v0, %v0
+ vfeezh %v0, %v0, %v0
+ vfeehs %v0, %v0, %v0
+ vfeezhs %v0, %v0, %v0
+ vfeef %v0, %v0, %v0
+ vfeezf %v0, %v0, %v0
+ vfeefs %v0, %v0, %v0
+ vfeezfs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeneb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenebs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezbs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfeneh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenehs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezhs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenef %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenefs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfenezfs %v0, %v0, %v0
+
+ vfeneb %v0, %v0, %v0
+ vfenezb %v0, %v0, %v0
+ vfenebs %v0, %v0, %v0
+ vfenezbs %v0, %v0, %v0
+ vfeneh %v0, %v0, %v0
+ vfenezh %v0, %v0, %v0
+ vfenehs %v0, %v0, %v0
+ vfenezhs %v0, %v0, %v0
+ vfenef %v0, %v0, %v0
+ vfenezf %v0, %v0, %v0
+ vfenefs %v0, %v0, %v0
+ vfenezfs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfidb %v0, %v0, 0, 0
+
+ vfidb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrbs %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrh %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrhs %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vistrfs %v0, %v0
+
+ vistrb %v0, %v0
+ vistrbs %v0, %v0
+ vistrh %v0, %v0
+ vistrhs %v0, %v0
+ vistrf %v0, %v0
+ vistrfs %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vflcdb %v0, %v0
+
+ vflcdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vflndb %v0, %v0
+
+ vflndb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vflpdb %v0, %v0
+
+ vflpdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfmadb %v0, %v0, %v0, %v0
+
+ vfmadb %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfmdb %v0, %v0, %v0
+
+ vfmdb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfmsdb %v0, %v0, %v0, %v0
+
+ vfmsdb %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfsdb %v0, %v0, %v0
+
+ vfsdb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vfsqdb %v0, %v0
+
+ vfsqdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vftcidb %v0, %v0, 0
+
+ vftcidb %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgbm %v0, 0
+
+ vgbm %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgef %v0, 0(%v0, %r1), 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgeg %v0, 0(%v0, %r1), 0
+
+ vgef %v0, 0(%v0, %r1), 0
+ vgeg %v0, 0(%v0, %r1), 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmab %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmaf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmag %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmah %v0, %v0, %v0, %v0
+
+ vgfmab %v0, %v0, %v0, %v0
+ vgfmaf %v0, %v0, %v0, %v0
+ vgfmag %v0, %v0, %v0, %v0
+ vgfmah %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgfmh %v0, %v0, %v0
+
+ vgfmb %v0, %v0, %v0
+ vgfmf %v0, %v0, %v0
+ vgfmg %v0, %v0, %v0
+ vgfmh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgmb %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgmf %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgmg %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vgmh %v0, 0, 0
+
+ vgmb %v0, 0, 0
+ vgmf %v0, 0, 0
+ vgmg %v0, 0, 0
+ vgmh %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vl %v0, 0
+
+ vl %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlbb %v0, 0, 0
+
+ vlbb %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlcb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlcf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlcg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlch %v0, %v0
+
+ vlcb %v0, %v0
+ vlcf %v0, %v0
+ vlcg %v0, %v0
+ vlch %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vldeb %v0, %v0
+
+ vldeb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleb %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlef %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleg %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleh %v0, 0, 0
+
+ vleb %v0, 0, 0
+ vlef %v0, 0, 0
+ vleg %v0, 0, 0
+ vleh %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vledb %v0, %v0, 0, 0
+
+ vledb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleib %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleif %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleig %v0, 0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vleih %v0, 0, 0
+
+ vleib %v0, 0, 0
+ vleif %v0, 0, 0
+ vleig %v0, 0, 0
+ vleih %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlgvb %r0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlgvf %r0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlgvg %r0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlgvh %r0, %v0, 0
+
+ vlgvb %r0, %v0, 0
+ vlgvf %r0, %v0, 0
+ vlgvg %r0, %v0, 0
+ vlgvh %r0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vll %v0, %r0, 0
+
+ vll %v0, %r0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vllezb %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vllezf %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vllezg %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vllezh %v0, 0
+
+ vllezb %v0, 0
+ vllezf %v0, 0
+ vllezg %v0, 0
+ vllezh %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlm %v0, %v0, 0
+
+ vlm %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlpb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlpf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlpg %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlph %v0, %v0
+
+ vlpb %v0, %v0
+ vlpf %v0, %v0
+ vlpg %v0, %v0
+ vlph %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlr %v0, %v0
+
+ vlr %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlrepb %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlrepf %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlrepg %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlreph %v0, 0
+
+ vlrepb %v0, 0
+ vlrepf %v0, 0
+ vlrepg %v0, 0
+ vlreph %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlvgb %v0, %r0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlvgf %v0, %r0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlvgg %v0, %r0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlvgh %v0, %r0, 0
+
+ vlvgb %v0, %r0, 0
+ vlvgf %v0, %r0, 0
+ vlvgg %v0, %r0, 0
+ vlvgh %v0, %r0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vlvgp %v0, %r0, %r0
+
+ vlvgp %v0, %r0, %r0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaeb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaef %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaeh %v0, %v0, %v0, %v0
+
+ vmaeb %v0, %v0, %v0, %v0
+ vmaef %v0, %v0, %v0, %v0
+ vmaeh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmahb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmahf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmahh %v0, %v0, %v0, %v0
+
+ vmahb %v0, %v0, %v0, %v0
+ vmahf %v0, %v0, %v0, %v0
+ vmahh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalhw %v0, %v0, %v0, %v0
+
+ vmalb %v0, %v0, %v0, %v0
+ vmalf %v0, %v0, %v0, %v0
+ vmalhw %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaleb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalef %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaleh %v0, %v0, %v0, %v0
+
+ vmaleb %v0, %v0, %v0, %v0
+ vmalef %v0, %v0, %v0, %v0
+ vmaleh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalhb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalhf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalhh %v0, %v0, %v0, %v0
+
+ vmalhb %v0, %v0, %v0, %v0
+ vmalhf %v0, %v0, %v0, %v0
+ vmalhh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalob %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmalof %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaloh %v0, %v0, %v0, %v0
+
+ vmalob %v0, %v0, %v0, %v0
+ vmalof %v0, %v0, %v0, %v0
+ vmaloh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaob %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaof %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmaoh %v0, %v0, %v0, %v0
+
+ vmaob %v0, %v0, %v0, %v0
+ vmaof %v0, %v0, %v0, %v0
+ vmaoh %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmeb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmef %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmeh %v0, %v0, %v0
+
+ vmeb %v0, %v0, %v0
+ vmef %v0, %v0, %v0
+ vmeh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmhb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmhf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmhh %v0, %v0, %v0
+
+ vmhb %v0, %v0, %v0
+ vmhf %v0, %v0, %v0
+ vmhh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlh %v0, %v0, %v0
+
+ vmlb %v0, %v0, %v0
+ vmlf %v0, %v0, %v0
+ vmlh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmleb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlef %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmleh %v0, %v0, %v0
+
+ vmleb %v0, %v0, %v0
+ vmlef %v0, %v0, %v0
+ vmleh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlhb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlhf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlhh %v0, %v0, %v0
+
+ vmlhb %v0, %v0, %v0
+ vmlhf %v0, %v0, %v0
+ vmlhh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlob %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmlof %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmloh %v0, %v0, %v0
+
+ vmlob %v0, %v0, %v0
+ vmlof %v0, %v0, %v0
+ vmloh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmng %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnh %v0, %v0, %v0
+
+ vmnb %v0, %v0, %v0
+ vmnf %v0, %v0, %v0
+ vmng %v0, %v0, %v0
+ vmnh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnlb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnlf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnlg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmnlh %v0, %v0, %v0
+
+ vmnlb %v0, %v0, %v0
+ vmnlf %v0, %v0, %v0
+ vmnlg %v0, %v0, %v0
+ vmnlh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmob %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmof %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmoh %v0, %v0, %v0
+
+ vmob %v0, %v0, %v0
+ vmof %v0, %v0, %v0
+ vmoh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrhb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrhf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrhg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrhh %v0, %v0, %v0
+
+ vmrhb %v0, %v0, %v0
+ vmrhf %v0, %v0, %v0
+ vmrhg %v0, %v0, %v0
+ vmrhh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrlb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrlf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrlg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmrlh %v0, %v0, %v0
+
+ vmrlb %v0, %v0, %v0
+ vmrlf %v0, %v0, %v0
+ vmrlg %v0, %v0, %v0
+ vmrlh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxh %v0, %v0, %v0
+
+ vmxb %v0, %v0, %v0
+ vmxf %v0, %v0, %v0
+ vmxg %v0, %v0, %v0
+ vmxh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxlb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxlf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxlg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vmxlh %v0, %v0, %v0
+
+ vmxlb %v0, %v0, %v0
+ vmxlf %v0, %v0, %v0
+ vmxlg %v0, %v0, %v0
+ vmxlh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vn %v0, %v0, %v0
+
+ vn %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vnc %v0, %v0, %v0
+
+ vnc %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vno %v0, %v0, %v0
+
+ vno %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vo %v0, %v0, %v0
+
+ vo %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vone %v0
+
+ vone %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpdi %v0, %v0, %v0, 0
+
+ vpdi %v0, %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vperm %v0, %v0, %v0, %v0
+
+ vperm %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpkf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpkg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpkh %v0, %v0, %v0
+
+ vpkf %v0, %v0, %v0
+ vpkg %v0, %v0, %v0
+ vpkh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpksf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpksg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpksh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpksfs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpksgs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpkshs %v0, %v0, %v0
+
+ vpksf %v0, %v0, %v0
+ vpksg %v0, %v0, %v0
+ vpksh %v0, %v0, %v0
+ vpksfs %v0, %v0, %v0
+ vpksgs %v0, %v0, %v0
+ vpkshs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklsf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklsg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklsh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklsfs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklsgs %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpklshs %v0, %v0, %v0
+
+ vpklsf %v0, %v0, %v0
+ vpklsg %v0, %v0, %v0
+ vpklsh %v0, %v0, %v0
+ vpklsfs %v0, %v0, %v0
+ vpklsgs %v0, %v0, %v0
+ vpklshs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vpopct %v0, %v0
+
+ vpopct %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepb %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepf %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepg %v0, %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vreph %v0, %v0, 0
+
+ vrepb %v0, %v0, 0
+ vrepf %v0, %v0, 0
+ vrepg %v0, %v0, 0
+ vreph %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepib %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepif %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepig %v0, 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vrepih %v0, 0
+
+ vrepib %v0, 0
+ vrepif %v0, 0
+ vrepig %v0, 0
+ vrepih %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsg %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsq %v0, %v0, %v0
+
+ vsb %v0, %v0, %v0
+ vsf %v0, %v0, %v0
+ vsg %v0, %v0, %v0
+ vsh %v0, %v0, %v0
+ vsq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsbcbiq %v0, %v0, %v0
+
+ vsbcbiq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsbiq %v0, %v0, %v0
+
+ vsbiq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscbib %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscbif %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscbig %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscbih %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscbiq %v0, %v0, %v0
+
+ vscbib %v0, %v0, %v0
+ vscbif %v0, %v0, %v0
+ vscbig %v0, %v0, %v0
+ vscbih %v0, %v0, %v0
+ vscbiq %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vscef %v0, 0(%v0, %r1), 0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsceg %v0, 0(%v0, %r1), 0
+
+ vscef %v0, 0(%v0, %r1), 0
+ vsceg %v0, 0(%v0, %r1), 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsegb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsegf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsegh %v0, %v0
+
+ vsegb %v0, %v0
+ vsegf %v0, %v0
+ vsegh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsel %v0, %v0, %v0, %v0
+
+ vsel %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsl %v0, %v0, %v0
+
+ vsl %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vslb %v0, %v0, %v0
+
+ vslb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsldb %v0, %v0, %v0, 0
+
+ vsldb %v0, %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsra %v0, %v0, %v0
+
+ vsra %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsrab %v0, %v0, %v0
+
+ vsrab %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsrl %v0, %v0, %v0
+
+ vsrl %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsrlb %v0, %v0, %v0
+
+ vsrlb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vst %v0, 0
+
+ vst %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstl %v0, %r0, 0
+
+ vstl %v0, %r0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstm %v0, %v0, 0
+
+ vstm %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrcb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczb %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrcbs %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczbs %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrch %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczh %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrchs %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczhs %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrcf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczf %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrcfs %v0, %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vstrczfs %v0, %v0, %v0, %v0
+
+ vstrcb %v0, %v0, %v0, %v0
+ vstrczb %v0, %v0, %v0, %v0
+ vstrcbs %v0, %v0, %v0, %v0
+ vstrczbs %v0, %v0, %v0, %v0
+ vstrch %v0, %v0, %v0, %v0
+ vstrczh %v0, %v0, %v0, %v0
+ vstrchs %v0, %v0, %v0, %v0
+ vstrczhs %v0, %v0, %v0, %v0
+ vstrcf %v0, %v0, %v0, %v0
+ vstrczf %v0, %v0, %v0, %v0
+ vstrcfs %v0, %v0, %v0, %v0
+ vstrczfs %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumgh %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumgf %v0, %v0, %v0
+
+ vsumgh %v0, %v0, %v0
+ vsumgf %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumqf %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumqg %v0, %v0, %v0
+
+ vsumqf %v0, %v0, %v0
+ vsumqg %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumb %v0, %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vsumh %v0, %v0, %v0
+
+ vsumb %v0, %v0, %v0
+ vsumh %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vtm %v0, %v0
+
+ vtm %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuphb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuphf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuphh %v0, %v0
+
+ vuphb %v0, %v0
+ vuphf %v0, %v0
+ vuphh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplhb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplhf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplhh %v0, %v0
+
+ vuplhb %v0, %v0
+ vuplhf %v0, %v0
+ vuplhh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vuplhw %v0, %v0
+
+ vuplb %v0, %v0
+ vuplf %v0, %v0
+ vuplhw %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vupllb %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vupllf %v0, %v0
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vupllh %v0, %v0
+
+ vupllb %v0, %v0
+ vupllf %v0, %v0
+ vupllh %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vx %v0, %v0, %v0
+
+ vx %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: vzero %v0
+
+ vzero %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wcdgb %v0, %v0, 0, 0
+
+ wcdgb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wcdlgb %v0, %v0, 0, 0
+
+ wcdlgb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wcgdb %v0, %v0, 0, 0
+
+ wcgdb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wclgdb %v0, %v0, 0, 0
+
+ wclgdb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfadb %v0, %v0, %v0
+
+ wfadb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfcdb %v0, %v0
+
+ wfcdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfcedb %v0, %v0, %v0
+#CHECK: wfcedbs %v0, %v0, %v0
+
+ wfcedb %v0, %v0, %v0
+ wfcedbs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfchdb %v0, %v0, %v0
+#CHECK: wfchdbs %v0, %v0, %v0
+
+ wfchdb %v0, %v0, %v0
+ wfchdbs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfchedb %v0, %v0, %v0
+#CHECK: wfchedbs %v0, %v0, %v0
+
+ wfchedb %v0, %v0, %v0
+ wfchedbs %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfddb %v0, %v0, %v0
+
+ wfddb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfidb %v0, %v0, 0, 0
+
+ wfidb %v0, %v0, 0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfkdb %v0, %v0
+
+ wfkdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wflcdb %v0, %v0
+
+ wflcdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wflndb %v0, %v0
+
+ wflndb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wflpdb %v0, %v0
+
+ wflpdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfmadb %v0, %v0, %v0, %v0
+
+ wfmadb %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfmdb %v0, %v0, %v0
+
+ wfmdb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfmsdb %v0, %v0, %v0, %v0
+
+ wfmsdb %v0, %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfsdb %v0, %v0, %v0
+
+ wfsdb %v0, %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wfsqdb %v0, %v0
+
+ wfsqdb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wftcidb %v0, %v0, 0
+
+ wftcidb %v0, %v0, 0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wldeb %v0, %v0
+
+ wldeb %v0, %v0
+
+#CHECK: error: {{(instruction requires: vector)?}}
+#CHECK: wledb %v0, %v0, 0, 0
+
+ wledb %v0, %v0, 0, 0
diff --git a/llvm/test/MC/SystemZ/insn-good-z13.s b/llvm/test/MC/SystemZ/insn-good-z13.s
new file mode 100644
index 00000000000..621b946d19d
--- /dev/null
+++ b/llvm/test/MC/SystemZ/insn-good-z13.s
@@ -0,0 +1,5039 @@
+# For z13 and above.
+# RUN: llvm-mc -triple s390x-linux-gnu -mcpu=z13 -show-encoding %s \
+# RUN: | FileCheck %s
+
+#CHECK: lcbb %r0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x27]
+#CHECK: lcbb %r0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x27]
+#CHECK: lcbb %r0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x27]
+#CHECK: lcbb %r0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x27]
+#CHECK: lcbb %r0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x27]
+#CHECK: lcbb %r15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x27]
+#CHECK: lcbb %r2, 1383(%r3,%r4), 8 # encoding: [0xe7,0x23,0x45,0x67,0x80,0x27]
+
+ lcbb %r0, 0, 0
+ lcbb %r0, 0, 15
+ lcbb %r0, 4095, 0
+ lcbb %r0, 0(%r15), 0
+ lcbb %r0, 0(%r15,%r1), 0
+ lcbb %r15, 0, 0
+ lcbb %r2, 1383(%r3,%r4), 8
+
+#CHECK: vab %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf3]
+#CHECK: vab %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf3]
+#CHECK: vab %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf3]
+#CHECK: vab %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf3]
+#CHECK: vab %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf3]
+
+ vab %v0, %v0, %v0
+ vab %v0, %v0, %v31
+ vab %v0, %v31, %v0
+ vab %v31, %v0, %v0
+ vab %v18, %v3, %v20
+
+#CHECK: vaccb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf1]
+#CHECK: vaccb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf1]
+#CHECK: vaccb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf1]
+#CHECK: vaccb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf1]
+#CHECK: vaccb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf1]
+
+ vaccb %v0, %v0, %v0
+ vaccb %v0, %v0, %v31
+ vaccb %v0, %v31, %v0
+ vaccb %v31, %v0, %v0
+ vaccb %v18, %v3, %v20
+
+#CHECK: vacccq %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x04,0x00,0x00,0xb9]
+#CHECK: vacccq %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x04,0x00,0xf1,0xb9]
+#CHECK: vacccq %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf4,0x00,0x02,0xb9]
+#CHECK: vacccq %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x04,0x00,0x04,0xb9]
+#CHECK: vacccq %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x04,0x00,0x08,0xb9]
+#CHECK: vacccq %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x54,0x00,0x97,0xb9]
+
+ vacccq %v0, %v0, %v0, %v0
+ vacccq %v0, %v0, %v0, %v31
+ vacccq %v0, %v0, %v31, %v0
+ vacccq %v0, %v31, %v0, %v0
+ vacccq %v31, %v0, %v0, %v0
+ vacccq %v13, %v17, %v21, %v25
+
+#CHECK: vaccf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf1]
+#CHECK: vaccf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf1]
+#CHECK: vaccf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf1]
+#CHECK: vaccf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf1]
+#CHECK: vaccf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf1]
+
+ vaccf %v0, %v0, %v0
+ vaccf %v0, %v0, %v31
+ vaccf %v0, %v31, %v0
+ vaccf %v31, %v0, %v0
+ vaccf %v18, %v3, %v20
+
+#CHECK: vaccg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf1]
+#CHECK: vaccg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf1]
+#CHECK: vaccg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf1]
+#CHECK: vaccg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf1]
+#CHECK: vaccg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf1]
+
+ vaccg %v0, %v0, %v0
+ vaccg %v0, %v0, %v31
+ vaccg %v0, %v31, %v0
+ vaccg %v31, %v0, %v0
+ vaccg %v18, %v3, %v20
+
+#CHECK: vacch %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf1]
+#CHECK: vacch %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf1]
+#CHECK: vacch %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf1]
+#CHECK: vacch %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf1]
+#CHECK: vacch %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf1]
+
+ vacch %v0, %v0, %v0
+ vacch %v0, %v0, %v31
+ vacch %v0, %v31, %v0
+ vacch %v31, %v0, %v0
+ vacch %v18, %v3, %v20
+
+#CHECK: vaccq %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x40,0xf1]
+#CHECK: vaccq %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x42,0xf1]
+#CHECK: vaccq %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x44,0xf1]
+#CHECK: vaccq %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x48,0xf1]
+#CHECK: vaccq %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x4a,0xf1]
+
+ vaccq %v0, %v0, %v0
+ vaccq %v0, %v0, %v31
+ vaccq %v0, %v31, %v0
+ vaccq %v31, %v0, %v0
+ vaccq %v18, %v3, %v20
+
+#CHECK: vacq %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x04,0x00,0x00,0xbb]
+#CHECK: vacq %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x04,0x00,0xf1,0xbb]
+#CHECK: vacq %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf4,0x00,0x02,0xbb]
+#CHECK: vacq %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x04,0x00,0x04,0xbb]
+#CHECK: vacq %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x04,0x00,0x08,0xbb]
+#CHECK: vacq %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x54,0x00,0x97,0xbb]
+
+ vacq %v0, %v0, %v0, %v0
+ vacq %v0, %v0, %v0, %v31
+ vacq %v0, %v0, %v31, %v0
+ vacq %v0, %v31, %v0, %v0
+ vacq %v31, %v0, %v0, %v0
+ vacq %v13, %v17, %v21, %v25
+
+#CHECK: vaf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf3]
+#CHECK: vaf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf3]
+#CHECK: vaf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf3]
+#CHECK: vaf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf3]
+#CHECK: vaf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf3]
+
+ vaf %v0, %v0, %v0
+ vaf %v0, %v0, %v31
+ vaf %v0, %v31, %v0
+ vaf %v31, %v0, %v0
+ vaf %v18, %v3, %v20
+
+#CHECK: vag %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf3]
+#CHECK: vag %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf3]
+#CHECK: vag %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf3]
+#CHECK: vag %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf3]
+#CHECK: vag %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf3]
+
+ vag %v0, %v0, %v0
+ vag %v0, %v0, %v31
+ vag %v0, %v31, %v0
+ vag %v31, %v0, %v0
+ vag %v18, %v3, %v20
+
+#CHECK: vah %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf3]
+#CHECK: vah %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf3]
+#CHECK: vah %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf3]
+#CHECK: vah %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf3]
+#CHECK: vah %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf3]
+
+ vah %v0, %v0, %v0
+ vah %v0, %v0, %v31
+ vah %v0, %v31, %v0
+ vah %v31, %v0, %v0
+ vah %v18, %v3, %v20
+
+#CHECK: vaq %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x40,0xf3]
+#CHECK: vaq %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x42,0xf3]
+#CHECK: vaq %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x44,0xf3]
+#CHECK: vaq %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x48,0xf3]
+#CHECK: vaq %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x4a,0xf3]
+
+ vaq %v0, %v0, %v0
+ vaq %v0, %v0, %v31
+ vaq %v0, %v31, %v0
+ vaq %v31, %v0, %v0
+ vaq %v18, %v3, %v20
+
+#CHECK: vavgb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf2]
+#CHECK: vavgb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf2]
+#CHECK: vavgb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf2]
+#CHECK: vavgb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf2]
+#CHECK: vavgb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf2]
+
+ vavgb %v0, %v0, %v0
+ vavgb %v0, %v0, %v31
+ vavgb %v0, %v31, %v0
+ vavgb %v31, %v0, %v0
+ vavgb %v18, %v3, %v20
+
+#CHECK: vavgf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf2]
+#CHECK: vavgf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf2]
+#CHECK: vavgf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf2]
+#CHECK: vavgf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf2]
+#CHECK: vavgf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf2]
+
+ vavgf %v0, %v0, %v0
+ vavgf %v0, %v0, %v31
+ vavgf %v0, %v31, %v0
+ vavgf %v31, %v0, %v0
+ vavgf %v18, %v3, %v20
+
+#CHECK: vavgg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf2]
+#CHECK: vavgg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf2]
+#CHECK: vavgg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf2]
+#CHECK: vavgg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf2]
+#CHECK: vavgg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf2]
+
+ vavgg %v0, %v0, %v0
+ vavgg %v0, %v0, %v31
+ vavgg %v0, %v31, %v0
+ vavgg %v31, %v0, %v0
+ vavgg %v18, %v3, %v20
+
+#CHECK: vavgh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf2]
+#CHECK: vavgh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf2]
+#CHECK: vavgh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf2]
+#CHECK: vavgh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf2]
+#CHECK: vavgh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf2]
+
+ vavgh %v0, %v0, %v0
+ vavgh %v0, %v0, %v31
+ vavgh %v0, %v31, %v0
+ vavgh %v31, %v0, %v0
+ vavgh %v18, %v3, %v20
+
+#CHECK: vavglb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf0]
+#CHECK: vavglb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf0]
+#CHECK: vavglb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf0]
+#CHECK: vavglb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf0]
+#CHECK: vavglb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf0]
+
+ vavglb %v0, %v0, %v0
+ vavglb %v0, %v0, %v31
+ vavglb %v0, %v31, %v0
+ vavglb %v31, %v0, %v0
+ vavglb %v18, %v3, %v20
+
+#CHECK: vavglf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf0]
+#CHECK: vavglf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf0]
+#CHECK: vavglf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf0]
+#CHECK: vavglf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf0]
+#CHECK: vavglf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf0]
+
+ vavglf %v0, %v0, %v0
+ vavglf %v0, %v0, %v31
+ vavglf %v0, %v31, %v0
+ vavglf %v31, %v0, %v0
+ vavglf %v18, %v3, %v20
+
+#CHECK: vavglg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf0]
+#CHECK: vavglg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf0]
+#CHECK: vavglg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf0]
+#CHECK: vavglg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf0]
+#CHECK: vavglg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf0]
+
+ vavglg %v0, %v0, %v0
+ vavglg %v0, %v0, %v31
+ vavglg %v0, %v31, %v0
+ vavglg %v31, %v0, %v0
+ vavglg %v18, %v3, %v20
+
+#CHECK: vavglh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf0]
+#CHECK: vavglh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf0]
+#CHECK: vavglh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf0]
+#CHECK: vavglh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf0]
+#CHECK: vavglh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf0]
+
+ vavglh %v0, %v0, %v0
+ vavglh %v0, %v0, %v31
+ vavglh %v0, %v31, %v0
+ vavglh %v31, %v0, %v0
+ vavglh %v18, %v3, %v20
+
+#CHECK: vcdgb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc3]
+#CHECK: vcdgb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc3]
+#CHECK: vcdgb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc3]
+#CHECK: vcdgb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc3]
+#CHECK: vcdgb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc3]
+#CHECK: vcdgb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc3]
+#CHECK: vcdgb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc3]
+
+ vcdgb %v0, %v0, 0, 0
+ vcdgb %v0, %v0, 0, 15
+ vcdgb %v0, %v0, 4, 0
+ vcdgb %v0, %v0, 12, 0
+ vcdgb %v0, %v31, 0, 0
+ vcdgb %v31, %v0, 0, 0
+ vcdgb %v14, %v17, 4, 10
+
+#CHECK: vcdlgb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc1]
+#CHECK: vcdlgb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc1]
+#CHECK: vcdlgb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc1]
+#CHECK: vcdlgb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc1]
+#CHECK: vcdlgb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc1]
+#CHECK: vcdlgb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc1]
+#CHECK: vcdlgb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc1]
+
+ vcdlgb %v0, %v0, 0, 0
+ vcdlgb %v0, %v0, 0, 15
+ vcdlgb %v0, %v0, 4, 0
+ vcdlgb %v0, %v0, 12, 0
+ vcdlgb %v0, %v31, 0, 0
+ vcdlgb %v31, %v0, 0, 0
+ vcdlgb %v14, %v17, 4, 10
+
+#CHECK: vcksm %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x66]
+#CHECK: vcksm %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x66]
+#CHECK: vcksm %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x66]
+#CHECK: vcksm %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x66]
+#CHECK: vcksm %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x66]
+
+ vcksm %v0, %v0, %v0
+ vcksm %v0, %v0, %v31
+ vcksm %v0, %v31, %v0
+ vcksm %v31, %v0, %v0
+ vcksm %v18, %v3, %v20
+
+#CHECK: vceqb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf8]
+#CHECK: vceqb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf8]
+#CHECK: vceqb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf8]
+#CHECK: vceqb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf8]
+#CHECK: vceqb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf8]
+#CHECK: vceqbs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x04,0xf8]
+
+ vceqb %v0, %v0, %v0
+ vceqb %v0, %v0, %v31
+ vceqb %v0, %v31, %v0
+ vceqb %v31, %v0, %v0
+ vceqb %v18, %v3, %v20
+ vceqbs %v5, %v22, %v7
+
+#CHECK: vceqf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf8]
+#CHECK: vceqf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf8]
+#CHECK: vceqf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf8]
+#CHECK: vceqf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf8]
+#CHECK: vceqf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf8]
+#CHECK: vceqfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0xf8]
+
+ vceqf %v0, %v0, %v0
+ vceqf %v0, %v0, %v31
+ vceqf %v0, %v31, %v0
+ vceqf %v31, %v0, %v0
+ vceqf %v18, %v3, %v20
+ vceqfs %v5, %v22, %v7
+
+#CHECK: vceqg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf8]
+#CHECK: vceqg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf8]
+#CHECK: vceqg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf8]
+#CHECK: vceqg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf8]
+#CHECK: vceqg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf8]
+#CHECK: vceqgs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x34,0xf8]
+
+ vceqg %v0, %v0, %v0
+ vceqg %v0, %v0, %v31
+ vceqg %v0, %v31, %v0
+ vceqg %v31, %v0, %v0
+ vceqg %v18, %v3, %v20
+ vceqgs %v5, %v22, %v7
+
+#CHECK: vceqh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf8]
+#CHECK: vceqh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf8]
+#CHECK: vceqh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf8]
+#CHECK: vceqh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf8]
+#CHECK: vceqh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf8]
+#CHECK: vceqhs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0xf8]
+
+ vceqh %v0, %v0, %v0
+ vceqh %v0, %v0, %v31
+ vceqh %v0, %v31, %v0
+ vceqh %v31, %v0, %v0
+ vceqh %v18, %v3, %v20
+ vceqhs %v5, %v22, %v7
+
+#CHECK: vcgdb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc2]
+#CHECK: vcgdb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc2]
+#CHECK: vcgdb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc2]
+#CHECK: vcgdb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc2]
+#CHECK: vcgdb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc2]
+#CHECK: vcgdb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc2]
+#CHECK: vcgdb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc2]
+
+ vcgdb %v0, %v0, 0, 0
+ vcgdb %v0, %v0, 0, 15
+ vcgdb %v0, %v0, 4, 0
+ vcgdb %v0, %v0, 12, 0
+ vcgdb %v0, %v31, 0, 0
+ vcgdb %v31, %v0, 0, 0
+ vcgdb %v14, %v17, 4, 10
+
+#CHECK: vchb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xfb]
+#CHECK: vchb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xfb]
+#CHECK: vchb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xfb]
+#CHECK: vchb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xfb]
+#CHECK: vchb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xfb]
+#CHECK: vchbs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x04,0xfb]
+
+ vchb %v0, %v0, %v0
+ vchb %v0, %v0, %v31
+ vchb %v0, %v31, %v0
+ vchb %v31, %v0, %v0
+ vchb %v18, %v3, %v20
+ vchbs %v5, %v22, %v7
+
+#CHECK: vchf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xfb]
+#CHECK: vchf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xfb]
+#CHECK: vchf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xfb]
+#CHECK: vchf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xfb]
+#CHECK: vchf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xfb]
+#CHECK: vchfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0xfb]
+
+ vchf %v0, %v0, %v0
+ vchf %v0, %v0, %v31
+ vchf %v0, %v31, %v0
+ vchf %v31, %v0, %v0
+ vchf %v18, %v3, %v20
+ vchfs %v5, %v22, %v7
+
+#CHECK: vchg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xfb]
+#CHECK: vchg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xfb]
+#CHECK: vchg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xfb]
+#CHECK: vchg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xfb]
+#CHECK: vchg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xfb]
+#CHECK: vchgs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x34,0xfb]
+
+ vchg %v0, %v0, %v0
+ vchg %v0, %v0, %v31
+ vchg %v0, %v31, %v0
+ vchg %v31, %v0, %v0
+ vchg %v18, %v3, %v20
+ vchgs %v5, %v22, %v7
+
+#CHECK: vchh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xfb]
+#CHECK: vchh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xfb]
+#CHECK: vchh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xfb]
+#CHECK: vchh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xfb]
+#CHECK: vchh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xfb]
+#CHECK: vchhs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0xfb]
+
+ vchh %v0, %v0, %v0
+ vchh %v0, %v0, %v31
+ vchh %v0, %v31, %v0
+ vchh %v31, %v0, %v0
+ vchh %v18, %v3, %v20
+ vchhs %v5, %v22, %v7
+
+#CHECK: vchlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf9]
+#CHECK: vchlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf9]
+#CHECK: vchlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf9]
+#CHECK: vchlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf9]
+#CHECK: vchlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf9]
+#CHECK: vchlbs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x04,0xf9]
+
+ vchlb %v0, %v0, %v0
+ vchlb %v0, %v0, %v31
+ vchlb %v0, %v31, %v0
+ vchlb %v31, %v0, %v0
+ vchlb %v18, %v3, %v20
+ vchlbs %v5, %v22, %v7
+
+#CHECK: vchlf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf9]
+#CHECK: vchlf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf9]
+#CHECK: vchlf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf9]
+#CHECK: vchlf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf9]
+#CHECK: vchlf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf9]
+#CHECK: vchlfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0xf9]
+
+ vchlf %v0, %v0, %v0
+ vchlf %v0, %v0, %v31
+ vchlf %v0, %v31, %v0
+ vchlf %v31, %v0, %v0
+ vchlf %v18, %v3, %v20
+ vchlfs %v5, %v22, %v7
+
+#CHECK: vchlg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf9]
+#CHECK: vchlg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf9]
+#CHECK: vchlg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf9]
+#CHECK: vchlg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf9]
+#CHECK: vchlg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf9]
+#CHECK: vchlgs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x34,0xf9]
+
+ vchlg %v0, %v0, %v0
+ vchlg %v0, %v0, %v31
+ vchlg %v0, %v31, %v0
+ vchlg %v31, %v0, %v0
+ vchlg %v18, %v3, %v20
+ vchlgs %v5, %v22, %v7
+
+#CHECK: vchlh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf9]
+#CHECK: vchlh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf9]
+#CHECK: vchlh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf9]
+#CHECK: vchlh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf9]
+#CHECK: vchlh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf9]
+#CHECK: vchlhs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0xf9]
+
+ vchlh %v0, %v0, %v0
+ vchlh %v0, %v0, %v31
+ vchlh %v0, %v31, %v0
+ vchlh %v31, %v0, %v0
+ vchlh %v18, %v3, %v20
+ vchlhs %v5, %v22, %v7
+
+#CHECK: vclgdb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc0]
+#CHECK: vclgdb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc0]
+#CHECK: vclgdb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc0]
+#CHECK: vclgdb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc0]
+#CHECK: vclgdb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc0]
+#CHECK: vclgdb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc0]
+#CHECK: vclgdb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc0]
+
+ vclgdb %v0, %v0, 0, 0
+ vclgdb %v0, %v0, 0, 15
+ vclgdb %v0, %v0, 4, 0
+ vclgdb %v0, %v0, 12, 0
+ vclgdb %v0, %v31, 0, 0
+ vclgdb %v31, %v0, 0, 0
+ vclgdb %v14, %v17, 4, 10
+
+#CHECK: vclzb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x53]
+#CHECK: vclzb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x53]
+#CHECK: vclzb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x53]
+#CHECK: vclzb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x53]
+#CHECK: vclzb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x53]
+#CHECK: vclzb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0x53]
+
+ vclzb %v0, %v0
+ vclzb %v0, %v15
+ vclzb %v0, %v31
+ vclzb %v15, %v0
+ vclzb %v31, %v0
+ vclzb %v14, %v17
+
+#CHECK: vclzf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x53]
+#CHECK: vclzf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x53]
+#CHECK: vclzf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x53]
+#CHECK: vclzf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x53]
+#CHECK: vclzf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x53]
+#CHECK: vclzf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0x53]
+
+ vclzf %v0, %v0
+ vclzf %v0, %v15
+ vclzf %v0, %v31
+ vclzf %v15, %v0
+ vclzf %v31, %v0
+ vclzf %v14, %v17
+
+#CHECK: vclzg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x53]
+#CHECK: vclzg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x53]
+#CHECK: vclzg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x53]
+#CHECK: vclzg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x53]
+#CHECK: vclzg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x53]
+#CHECK: vclzg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0x53]
+
+ vclzg %v0, %v0
+ vclzg %v0, %v15
+ vclzg %v0, %v31
+ vclzg %v15, %v0
+ vclzg %v31, %v0
+ vclzg %v14, %v17
+
+#CHECK: vclzh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x53]
+#CHECK: vclzh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x53]
+#CHECK: vclzh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x53]
+#CHECK: vclzh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x53]
+#CHECK: vclzh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x53]
+#CHECK: vclzh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0x53]
+
+ vclzh %v0, %v0
+ vclzh %v0, %v15
+ vclzh %v0, %v31
+ vclzh %v15, %v0
+ vclzh %v31, %v0
+ vclzh %v14, %v17
+
+#CHECK: vctzb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x52]
+#CHECK: vctzb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x52]
+#CHECK: vctzb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x52]
+#CHECK: vctzb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x52]
+#CHECK: vctzb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x52]
+#CHECK: vctzb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0x52]
+
+ vctzb %v0, %v0
+ vctzb %v0, %v15
+ vctzb %v0, %v31
+ vctzb %v15, %v0
+ vctzb %v31, %v0
+ vctzb %v14, %v17
+
+#CHECK: vctzf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x52]
+#CHECK: vctzf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x52]
+#CHECK: vctzf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x52]
+#CHECK: vctzf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x52]
+#CHECK: vctzf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x52]
+#CHECK: vctzf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0x52]
+
+ vctzf %v0, %v0
+ vctzf %v0, %v15
+ vctzf %v0, %v31
+ vctzf %v15, %v0
+ vctzf %v31, %v0
+ vctzf %v14, %v17
+
+#CHECK: vctzg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x52]
+#CHECK: vctzg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x52]
+#CHECK: vctzg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x52]
+#CHECK: vctzg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x52]
+#CHECK: vctzg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x52]
+#CHECK: vctzg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0x52]
+
+ vctzg %v0, %v0
+ vctzg %v0, %v15
+ vctzg %v0, %v31
+ vctzg %v15, %v0
+ vctzg %v31, %v0
+ vctzg %v14, %v17
+
+#CHECK: vctzh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x52]
+#CHECK: vctzh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x52]
+#CHECK: vctzh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x52]
+#CHECK: vctzh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x52]
+#CHECK: vctzh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x52]
+#CHECK: vctzh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0x52]
+
+ vctzh %v0, %v0
+ vctzh %v0, %v15
+ vctzh %v0, %v31
+ vctzh %v15, %v0
+ vctzh %v31, %v0
+ vctzh %v14, %v17
+
+#CHECK: vecb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xdb]
+#CHECK: vecb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xdb]
+#CHECK: vecb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xdb]
+#CHECK: vecb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xdb]
+#CHECK: vecb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xdb]
+#CHECK: vecb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xdb]
+
+ vecb %v0, %v0
+ vecb %v0, %v15
+ vecb %v0, %v31
+ vecb %v15, %v0
+ vecb %v31, %v0
+ vecb %v14, %v17
+
+#CHECK: vecf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xdb]
+#CHECK: vecf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xdb]
+#CHECK: vecf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xdb]
+#CHECK: vecf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xdb]
+#CHECK: vecf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xdb]
+#CHECK: vecf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xdb]
+
+ vecf %v0, %v0
+ vecf %v0, %v15
+ vecf %v0, %v31
+ vecf %v15, %v0
+ vecf %v31, %v0
+ vecf %v14, %v17
+
+#CHECK: vecg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xdb]
+#CHECK: vecg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xdb]
+#CHECK: vecg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xdb]
+#CHECK: vecg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xdb]
+#CHECK: vecg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xdb]
+#CHECK: vecg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xdb]
+
+ vecg %v0, %v0
+ vecg %v0, %v15
+ vecg %v0, %v31
+ vecg %v15, %v0
+ vecg %v31, %v0
+ vecg %v14, %v17
+
+#CHECK: vech %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xdb]
+#CHECK: vech %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xdb]
+#CHECK: vech %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xdb]
+#CHECK: vech %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xdb]
+#CHECK: vech %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xdb]
+#CHECK: vech %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xdb]
+
+ vech %v0, %v0
+ vech %v0, %v15
+ vech %v0, %v31
+ vech %v15, %v0
+ vech %v31, %v0
+ vech %v14, %v17
+
+#CHECK: veclb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd9]
+#CHECK: veclb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd9]
+#CHECK: veclb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd9]
+#CHECK: veclb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd9]
+#CHECK: veclb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd9]
+#CHECK: veclb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd9]
+
+ veclb %v0, %v0
+ veclb %v0, %v15
+ veclb %v0, %v31
+ veclb %v15, %v0
+ veclb %v31, %v0
+ veclb %v14, %v17
+
+#CHECK: veclf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xd9]
+#CHECK: veclf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xd9]
+#CHECK: veclf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xd9]
+#CHECK: veclf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xd9]
+#CHECK: veclf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xd9]
+#CHECK: veclf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xd9]
+
+ veclf %v0, %v0
+ veclf %v0, %v15
+ veclf %v0, %v31
+ veclf %v15, %v0
+ veclf %v31, %v0
+ veclf %v14, %v17
+
+#CHECK: veclg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xd9]
+#CHECK: veclg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xd9]
+#CHECK: veclg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xd9]
+#CHECK: veclg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xd9]
+#CHECK: veclg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xd9]
+#CHECK: veclg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xd9]
+
+ veclg %v0, %v0
+ veclg %v0, %v15
+ veclg %v0, %v31
+ veclg %v15, %v0
+ veclg %v31, %v0
+ veclg %v14, %v17
+
+#CHECK: veclh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xd9]
+#CHECK: veclh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xd9]
+#CHECK: veclh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xd9]
+#CHECK: veclh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xd9]
+#CHECK: veclh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xd9]
+#CHECK: veclh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xd9]
+
+ veclh %v0, %v0
+ veclh %v0, %v15
+ veclh %v0, %v31
+ veclh %v15, %v0
+ veclh %v31, %v0
+ veclh %v14, %v17
+
+#CHECK: verimb %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x72]
+#CHECK: verimb %v0, %v0, %v0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x00,0x72]
+#CHECK: verimb %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x72]
+#CHECK: verimb %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x72]
+#CHECK: verimb %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x72]
+#CHECK: verimb %v13, %v17, %v21, 121 # encoding: [0xe7,0xd1,0x50,0x79,0x06,0x72]
+
+ verimb %v0, %v0, %v0, 0
+ verimb %v0, %v0, %v0, 255
+ verimb %v0, %v0, %v31, 0
+ verimb %v0, %v31, %v0, 0
+ verimb %v31, %v0, %v0, 0
+ verimb %v13, %v17, %v21, 0x79
+
+#CHECK: verimf %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x72]
+#CHECK: verimf %v0, %v0, %v0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x20,0x72]
+#CHECK: verimf %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x72]
+#CHECK: verimf %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x72]
+#CHECK: verimf %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x72]
+#CHECK: verimf %v13, %v17, %v21, 121 # encoding: [0xe7,0xd1,0x50,0x79,0x26,0x72]
+
+ verimf %v0, %v0, %v0, 0
+ verimf %v0, %v0, %v0, 255
+ verimf %v0, %v0, %v31, 0
+ verimf %v0, %v31, %v0, 0
+ verimf %v31, %v0, %v0, 0
+ verimf %v13, %v17, %v21, 0x79
+
+#CHECK: verimg %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x72]
+#CHECK: verimg %v0, %v0, %v0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x30,0x72]
+#CHECK: verimg %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x72]
+#CHECK: verimg %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x72]
+#CHECK: verimg %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x72]
+#CHECK: verimg %v13, %v17, %v21, 121 # encoding: [0xe7,0xd1,0x50,0x79,0x36,0x72]
+
+ verimg %v0, %v0, %v0, 0
+ verimg %v0, %v0, %v0, 255
+ verimg %v0, %v0, %v31, 0
+ verimg %v0, %v31, %v0, 0
+ verimg %v31, %v0, %v0, 0
+ verimg %v13, %v17, %v21, 0x79
+
+#CHECK: verimh %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x72]
+#CHECK: verimh %v0, %v0, %v0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x10,0x72]
+#CHECK: verimh %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x72]
+#CHECK: verimh %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x72]
+#CHECK: verimh %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x72]
+#CHECK: verimh %v13, %v17, %v21, 121 # encoding: [0xe7,0xd1,0x50,0x79,0x16,0x72]
+
+ verimh %v0, %v0, %v0, 0
+ verimh %v0, %v0, %v0, 255
+ verimh %v0, %v0, %v31, 0
+ verimh %v0, %v31, %v0, 0
+ verimh %v31, %v0, %v0, 0
+ verimh %v13, %v17, %v21, 0x79
+
+#CHECK: verllvb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x73]
+#CHECK: verllvb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x73]
+#CHECK: verllvb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x73]
+#CHECK: verllvb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x73]
+#CHECK: verllvb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x73]
+
+ verllvb %v0, %v0, %v0
+ verllvb %v0, %v0, %v31
+ verllvb %v0, %v31, %v0
+ verllvb %v31, %v0, %v0
+ verllvb %v18, %v3, %v20
+
+#CHECK: verllvf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x73]
+#CHECK: verllvf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x73]
+#CHECK: verllvf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x73]
+#CHECK: verllvf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x73]
+#CHECK: verllvf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x73]
+
+ verllvf %v0, %v0, %v0
+ verllvf %v0, %v0, %v31
+ verllvf %v0, %v31, %v0
+ verllvf %v31, %v0, %v0
+ verllvf %v18, %v3, %v20
+
+#CHECK: verllvg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x73]
+#CHECK: verllvg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x73]
+#CHECK: verllvg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x73]
+#CHECK: verllvg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x73]
+#CHECK: verllvg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x73]
+
+ verllvg %v0, %v0, %v0
+ verllvg %v0, %v0, %v31
+ verllvg %v0, %v31, %v0
+ verllvg %v31, %v0, %v0
+ verllvg %v18, %v3, %v20
+
+#CHECK: verllvh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x73]
+#CHECK: verllvh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x73]
+#CHECK: verllvh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x73]
+#CHECK: verllvh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x73]
+#CHECK: verllvh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x73]
+
+ verllvh %v0, %v0, %v0
+ verllvh %v0, %v0, %v31
+ verllvh %v0, %v31, %v0
+ verllvh %v31, %v0, %v0
+ verllvh %v18, %v3, %v20
+
+#CHECK: verllb %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x33]
+#CHECK: verllb %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x33]
+#CHECK: verllb %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x33]
+#CHECK: verllb %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x33]
+#CHECK: verllb %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x33]
+#CHECK: verllb %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x33]
+
+ verllb %v0, %v0, 0
+ verllb %v0, %v0, 4095
+ verllb %v0, %v0, 0(%r15)
+ verllb %v0, %v31, 0
+ verllb %v31, %v0, 0
+ verllb %v14, %v17, 1074(%r5)
+
+#CHECK: verllf %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x33]
+#CHECK: verllf %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x33]
+#CHECK: verllf %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x33]
+#CHECK: verllf %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x33]
+#CHECK: verllf %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x33]
+#CHECK: verllf %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x24,0x33]
+
+ verllf %v0, %v0, 0
+ verllf %v0, %v0, 4095
+ verllf %v0, %v0, 0(%r15)
+ verllf %v0, %v31, 0
+ verllf %v31, %v0, 0
+ verllf %v14, %v17, 1074(%r5)
+
+#CHECK: verllg %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x33]
+#CHECK: verllg %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x33]
+#CHECK: verllg %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x33]
+#CHECK: verllg %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x33]
+#CHECK: verllg %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x33]
+#CHECK: verllg %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x34,0x33]
+
+ verllg %v0, %v0, 0
+ verllg %v0, %v0, 4095
+ verllg %v0, %v0, 0(%r15)
+ verllg %v0, %v31, 0
+ verllg %v31, %v0, 0
+ verllg %v14, %v17, 1074(%r5)
+
+#CHECK: verllh %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x33]
+#CHECK: verllh %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x33]
+#CHECK: verllh %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x33]
+#CHECK: verllh %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x33]
+#CHECK: verllh %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x33]
+#CHECK: verllh %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x14,0x33]
+
+ verllh %v0, %v0, 0
+ verllh %v0, %v0, 4095
+ verllh %v0, %v0, 0(%r15)
+ verllh %v0, %v31, 0
+ verllh %v31, %v0, 0
+ verllh %v14, %v17, 1074(%r5)
+
+#CHECK: veslvb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x70]
+#CHECK: veslvb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x70]
+#CHECK: veslvb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x70]
+#CHECK: veslvb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x70]
+#CHECK: veslvb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x70]
+
+ veslvb %v0, %v0, %v0
+ veslvb %v0, %v0, %v31
+ veslvb %v0, %v31, %v0
+ veslvb %v31, %v0, %v0
+ veslvb %v18, %v3, %v20
+
+#CHECK: veslvf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x70]
+#CHECK: veslvf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x70]
+#CHECK: veslvf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x70]
+#CHECK: veslvf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x70]
+#CHECK: veslvf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x70]
+
+ veslvf %v0, %v0, %v0
+ veslvf %v0, %v0, %v31
+ veslvf %v0, %v31, %v0
+ veslvf %v31, %v0, %v0
+ veslvf %v18, %v3, %v20
+
+#CHECK: veslvg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x70]
+#CHECK: veslvg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x70]
+#CHECK: veslvg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x70]
+#CHECK: veslvg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x70]
+#CHECK: veslvg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x70]
+
+ veslvg %v0, %v0, %v0
+ veslvg %v0, %v0, %v31
+ veslvg %v0, %v31, %v0
+ veslvg %v31, %v0, %v0
+ veslvg %v18, %v3, %v20
+
+#CHECK: veslvh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x70]
+#CHECK: veslvh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x70]
+#CHECK: veslvh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x70]
+#CHECK: veslvh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x70]
+#CHECK: veslvh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x70]
+
+ veslvh %v0, %v0, %v0
+ veslvh %v0, %v0, %v31
+ veslvh %v0, %v31, %v0
+ veslvh %v31, %v0, %v0
+ veslvh %v18, %v3, %v20
+
+#CHECK: veslb %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x30]
+#CHECK: veslb %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x30]
+#CHECK: veslb %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x30]
+#CHECK: veslb %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x30]
+#CHECK: veslb %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x30]
+#CHECK: veslb %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x30]
+
+ veslb %v0, %v0, 0
+ veslb %v0, %v0, 4095
+ veslb %v0, %v0, 0(%r15)
+ veslb %v0, %v31, 0
+ veslb %v31, %v0, 0
+ veslb %v14, %v17, 1074(%r5)
+
+#CHECK: veslf %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x30]
+#CHECK: veslf %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x30]
+#CHECK: veslf %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x30]
+#CHECK: veslf %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x30]
+#CHECK: veslf %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x30]
+#CHECK: veslf %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x24,0x30]
+
+ veslf %v0, %v0, 0
+ veslf %v0, %v0, 4095
+ veslf %v0, %v0, 0(%r15)
+ veslf %v0, %v31, 0
+ veslf %v31, %v0, 0
+ veslf %v14, %v17, 1074(%r5)
+
+#CHECK: veslg %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x30]
+#CHECK: veslg %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x30]
+#CHECK: veslg %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x30]
+#CHECK: veslg %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x30]
+#CHECK: veslg %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x30]
+#CHECK: veslg %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x34,0x30]
+
+ veslg %v0, %v0, 0
+ veslg %v0, %v0, 4095
+ veslg %v0, %v0, 0(%r15)
+ veslg %v0, %v31, 0
+ veslg %v31, %v0, 0
+ veslg %v14, %v17, 1074(%r5)
+
+#CHECK: veslh %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x30]
+#CHECK: veslh %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x30]
+#CHECK: veslh %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x30]
+#CHECK: veslh %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x30]
+#CHECK: veslh %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x30]
+#CHECK: veslh %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x14,0x30]
+
+ veslh %v0, %v0, 0
+ veslh %v0, %v0, 4095
+ veslh %v0, %v0, 0(%r15)
+ veslh %v0, %v31, 0
+ veslh %v31, %v0, 0
+ veslh %v14, %v17, 1074(%r5)
+
+#CHECK: vesravb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x7a]
+#CHECK: vesravb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x7a]
+#CHECK: vesravb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x7a]
+#CHECK: vesravb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x7a]
+#CHECK: vesravb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x7a]
+
+ vesravb %v0, %v0, %v0
+ vesravb %v0, %v0, %v31
+ vesravb %v0, %v31, %v0
+ vesravb %v31, %v0, %v0
+ vesravb %v18, %v3, %v20
+
+#CHECK: vesravf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x7a]
+#CHECK: vesravf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x7a]
+#CHECK: vesravf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x7a]
+#CHECK: vesravf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x7a]
+#CHECK: vesravf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x7a]
+
+ vesravf %v0, %v0, %v0
+ vesravf %v0, %v0, %v31
+ vesravf %v0, %v31, %v0
+ vesravf %v31, %v0, %v0
+ vesravf %v18, %v3, %v20
+
+#CHECK: vesravg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x7a]
+#CHECK: vesravg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x7a]
+#CHECK: vesravg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x7a]
+#CHECK: vesravg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x7a]
+#CHECK: vesravg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x7a]
+
+ vesravg %v0, %v0, %v0
+ vesravg %v0, %v0, %v31
+ vesravg %v0, %v31, %v0
+ vesravg %v31, %v0, %v0
+ vesravg %v18, %v3, %v20
+
+#CHECK: vesravh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x7a]
+#CHECK: vesravh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x7a]
+#CHECK: vesravh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x7a]
+#CHECK: vesravh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x7a]
+#CHECK: vesravh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x7a]
+
+ vesravh %v0, %v0, %v0
+ vesravh %v0, %v0, %v31
+ vesravh %v0, %v31, %v0
+ vesravh %v31, %v0, %v0
+ vesravh %v18, %v3, %v20
+
+#CHECK: vesrab %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x3a]
+#CHECK: vesrab %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x3a]
+#CHECK: vesrab %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x3a]
+#CHECK: vesrab %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x3a]
+#CHECK: vesrab %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x3a]
+#CHECK: vesrab %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x3a]
+
+ vesrab %v0, %v0, 0
+ vesrab %v0, %v0, 4095
+ vesrab %v0, %v0, 0(%r15)
+ vesrab %v0, %v31, 0
+ vesrab %v31, %v0, 0
+ vesrab %v14, %v17, 1074(%r5)
+
+#CHECK: vesraf %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x3a]
+#CHECK: vesraf %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x3a]
+#CHECK: vesraf %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x3a]
+#CHECK: vesraf %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x3a]
+#CHECK: vesraf %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x3a]
+#CHECK: vesraf %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x24,0x3a]
+
+ vesraf %v0, %v0, 0
+ vesraf %v0, %v0, 4095
+ vesraf %v0, %v0, 0(%r15)
+ vesraf %v0, %v31, 0
+ vesraf %v31, %v0, 0
+ vesraf %v14, %v17, 1074(%r5)
+
+#CHECK: vesrag %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x3a]
+#CHECK: vesrag %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x3a]
+#CHECK: vesrag %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x3a]
+#CHECK: vesrag %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x3a]
+#CHECK: vesrag %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x3a]
+#CHECK: vesrag %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x34,0x3a]
+
+ vesrag %v0, %v0, 0
+ vesrag %v0, %v0, 4095
+ vesrag %v0, %v0, 0(%r15)
+ vesrag %v0, %v31, 0
+ vesrag %v31, %v0, 0
+ vesrag %v14, %v17, 1074(%r5)
+
+#CHECK: vesrah %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x3a]
+#CHECK: vesrah %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x3a]
+#CHECK: vesrah %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x3a]
+#CHECK: vesrah %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x3a]
+#CHECK: vesrah %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x3a]
+#CHECK: vesrah %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x14,0x3a]
+
+ vesrah %v0, %v0, 0
+ vesrah %v0, %v0, 4095
+ vesrah %v0, %v0, 0(%r15)
+ vesrah %v0, %v31, 0
+ vesrah %v31, %v0, 0
+ vesrah %v14, %v17, 1074(%r5)
+
+#CHECK: vesrlvb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x78]
+#CHECK: vesrlvb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x78]
+#CHECK: vesrlvb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x78]
+#CHECK: vesrlvb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x78]
+#CHECK: vesrlvb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x78]
+
+ vesrlvb %v0, %v0, %v0
+ vesrlvb %v0, %v0, %v31
+ vesrlvb %v0, %v31, %v0
+ vesrlvb %v31, %v0, %v0
+ vesrlvb %v18, %v3, %v20
+
+#CHECK: vesrlvf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x78]
+#CHECK: vesrlvf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x78]
+#CHECK: vesrlvf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x78]
+#CHECK: vesrlvf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x78]
+#CHECK: vesrlvf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x78]
+
+ vesrlvf %v0, %v0, %v0
+ vesrlvf %v0, %v0, %v31
+ vesrlvf %v0, %v31, %v0
+ vesrlvf %v31, %v0, %v0
+ vesrlvf %v18, %v3, %v20
+
+#CHECK: vesrlvg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x78]
+#CHECK: vesrlvg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x78]
+#CHECK: vesrlvg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x78]
+#CHECK: vesrlvg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x78]
+#CHECK: vesrlvg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x78]
+
+ vesrlvg %v0, %v0, %v0
+ vesrlvg %v0, %v0, %v31
+ vesrlvg %v0, %v31, %v0
+ vesrlvg %v31, %v0, %v0
+ vesrlvg %v18, %v3, %v20
+
+#CHECK: vesrlvh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x78]
+#CHECK: vesrlvh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x78]
+#CHECK: vesrlvh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x78]
+#CHECK: vesrlvh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x78]
+#CHECK: vesrlvh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x78]
+
+ vesrlvh %v0, %v0, %v0
+ vesrlvh %v0, %v0, %v31
+ vesrlvh %v0, %v31, %v0
+ vesrlvh %v31, %v0, %v0
+ vesrlvh %v18, %v3, %v20
+
+#CHECK: vesrlb %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x38]
+#CHECK: vesrlb %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x38]
+#CHECK: vesrlb %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x38]
+#CHECK: vesrlb %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x38]
+#CHECK: vesrlb %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x38]
+#CHECK: vesrlb %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x38]
+
+ vesrlb %v0, %v0, 0
+ vesrlb %v0, %v0, 4095
+ vesrlb %v0, %v0, 0(%r15)
+ vesrlb %v0, %v31, 0
+ vesrlb %v31, %v0, 0
+ vesrlb %v14, %v17, 1074(%r5)
+
+#CHECK: vesrlf %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x38]
+#CHECK: vesrlf %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x38]
+#CHECK: vesrlf %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x38]
+#CHECK: vesrlf %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x38]
+#CHECK: vesrlf %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x38]
+#CHECK: vesrlf %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x24,0x38]
+
+ vesrlf %v0, %v0, 0
+ vesrlf %v0, %v0, 4095
+ vesrlf %v0, %v0, 0(%r15)
+ vesrlf %v0, %v31, 0
+ vesrlf %v31, %v0, 0
+ vesrlf %v14, %v17, 1074(%r5)
+
+#CHECK: vesrlg %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x38]
+#CHECK: vesrlg %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x38]
+#CHECK: vesrlg %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x38]
+#CHECK: vesrlg %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x38]
+#CHECK: vesrlg %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x38]
+#CHECK: vesrlg %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x34,0x38]
+
+ vesrlg %v0, %v0, 0
+ vesrlg %v0, %v0, 4095
+ vesrlg %v0, %v0, 0(%r15)
+ vesrlg %v0, %v31, 0
+ vesrlg %v31, %v0, 0
+ vesrlg %v14, %v17, 1074(%r5)
+
+#CHECK: vesrlh %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x38]
+#CHECK: vesrlh %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x38]
+#CHECK: vesrlh %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x38]
+#CHECK: vesrlh %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x38]
+#CHECK: vesrlh %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x38]
+#CHECK: vesrlh %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x14,0x38]
+
+ vesrlh %v0, %v0, 0
+ vesrlh %v0, %v0, 4095
+ vesrlh %v0, %v0, 0(%r15)
+ vesrlh %v0, %v31, 0
+ vesrlh %v31, %v0, 0
+ vesrlh %v14, %v17, 1074(%r5)
+
+#CHECK: vfadb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xe3]
+#CHECK: vfadb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xe3]
+#CHECK: vfadb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xe3]
+#CHECK: vfadb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xe3]
+#CHECK: vfadb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xe3]
+
+ vfadb %v0, %v0, %v0
+ vfadb %v0, %v0, %v31
+ vfadb %v0, %v31, %v0
+ vfadb %v31, %v0, %v0
+ vfadb %v18, %v3, %v20
+
+#CHECK: vfaeb %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x82]
+#CHECK: vfaeb %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x82]
+#CHECK: vfaeb %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x00,0xc0,0x00,0x82]
+#CHECK: vfaeb %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x82]
+#CHECK: vfaeb %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x82]
+#CHECK: vfaeb %v0, %v15, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x82]
+#CHECK: vfaeb %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x82]
+#CHECK: vfaeb %v15, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x82]
+#CHECK: vfaeb %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x82]
+#CHECK: vfaeb %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x40,0x0a,0x82]
+#CHECK: vfaeb %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x0a,0x82]
+#CHECK: vfaebs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0x90,0x0a,0x82]
+#CHECK: vfaezb %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x60,0x0a,0x82]
+#CHECK: vfaezbs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0xb0,0x0a,0x82]
+#CHECK: vfaezbs %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x0a,0x82]
+
+ vfaeb %v0, %v0, %v0
+ vfaeb %v0, %v0, %v0, 0
+ vfaeb %v0, %v0, %v0, 12
+ vfaeb %v0, %v0, %v15
+ vfaeb %v0, %v0, %v31
+ vfaeb %v0, %v15, %v0
+ vfaeb %v0, %v31, %v0
+ vfaeb %v15, %v0, %v0
+ vfaeb %v31, %v0, %v0
+ vfaeb %v18, %v3, %v20, 4
+ vfaeb %v18, %v3, %v20, 15
+ vfaebs %v18, %v3, %v20, 8
+ vfaezb %v18, %v3, %v20, 4
+ vfaezbs %v18, %v3, %v20, 8
+ vfaezbs %v18, %v3, %v20, 15
+
+#CHECK: vfaef %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x82]
+#CHECK: vfaef %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x82]
+#CHECK: vfaef %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x00,0xc0,0x20,0x82]
+#CHECK: vfaef %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x82]
+#CHECK: vfaef %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x82]
+#CHECK: vfaef %v0, %v15, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x82]
+#CHECK: vfaef %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x82]
+#CHECK: vfaef %v15, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x82]
+#CHECK: vfaef %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x82]
+#CHECK: vfaef %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x40,0x2a,0x82]
+#CHECK: vfaef %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x2a,0x82]
+#CHECK: vfaefs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0x90,0x2a,0x82]
+#CHECK: vfaezf %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x60,0x2a,0x82]
+#CHECK: vfaezfs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0xb0,0x2a,0x82]
+#CHECK: vfaezfs %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x2a,0x82]
+
+ vfaef %v0, %v0, %v0
+ vfaef %v0, %v0, %v0, 0
+ vfaef %v0, %v0, %v0, 12
+ vfaef %v0, %v0, %v15
+ vfaef %v0, %v0, %v31
+ vfaef %v0, %v15, %v0
+ vfaef %v0, %v31, %v0
+ vfaef %v15, %v0, %v0
+ vfaef %v31, %v0, %v0
+ vfaef %v18, %v3, %v20, 4
+ vfaef %v18, %v3, %v20, 15
+ vfaefs %v18, %v3, %v20, 8
+ vfaezf %v18, %v3, %v20, 4
+ vfaezfs %v18, %v3, %v20, 8
+ vfaezfs %v18, %v3, %v20, 15
+
+#CHECK: vfaeh %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x82]
+#CHECK: vfaeh %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x82]
+#CHECK: vfaeh %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x00,0xc0,0x10,0x82]
+#CHECK: vfaeh %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x82]
+#CHECK: vfaeh %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x82]
+#CHECK: vfaeh %v0, %v15, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x82]
+#CHECK: vfaeh %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x82]
+#CHECK: vfaeh %v15, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x82]
+#CHECK: vfaeh %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x82]
+#CHECK: vfaeh %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x40,0x1a,0x82]
+#CHECK: vfaeh %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x1a,0x82]
+#CHECK: vfaehs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0x90,0x1a,0x82]
+#CHECK: vfaezh %v18, %v3, %v20, 4 # encoding: [0xe7,0x23,0x40,0x60,0x1a,0x82]
+#CHECK: vfaezhs %v18, %v3, %v20, 8 # encoding: [0xe7,0x23,0x40,0xb0,0x1a,0x82]
+#CHECK: vfaezhs %v18, %v3, %v20, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x1a,0x82]
+
+ vfaeh %v0, %v0, %v0
+ vfaeh %v0, %v0, %v0, 0
+ vfaeh %v0, %v0, %v0, 12
+ vfaeh %v0, %v0, %v15
+ vfaeh %v0, %v0, %v31
+ vfaeh %v0, %v15, %v0
+ vfaeh %v0, %v31, %v0
+ vfaeh %v15, %v0, %v0
+ vfaeh %v31, %v0, %v0
+ vfaeh %v18, %v3, %v20, 4
+ vfaeh %v18, %v3, %v20, 15
+ vfaehs %v18, %v3, %v20, 8
+ vfaezh %v18, %v3, %v20, 4
+ vfaezhs %v18, %v3, %v20, 8
+ vfaezhs %v18, %v3, %v20, 15
+
+#CHECK: vfcedb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xe8]
+#CHECK: vfcedb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xe8]
+#CHECK: vfcedb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xe8]
+#CHECK: vfcedb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xe8]
+#CHECK: vfcedb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xe8]
+
+ vfcedb %v0, %v0, %v0
+ vfcedb %v0, %v0, %v31
+ vfcedb %v0, %v31, %v0
+ vfcedb %v31, %v0, %v0
+ vfcedb %v18, %v3, %v20
+
+#CHECK: vfcedbs %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x10,0x30,0xe8]
+#CHECK: vfcedbs %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x10,0x32,0xe8]
+#CHECK: vfcedbs %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x10,0x34,0xe8]
+#CHECK: vfcedbs %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x10,0x38,0xe8]
+#CHECK: vfcedbs %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x10,0x3a,0xe8]
+
+ vfcedbs %v0, %v0, %v0
+ vfcedbs %v0, %v0, %v31
+ vfcedbs %v0, %v31, %v0
+ vfcedbs %v31, %v0, %v0
+ vfcedbs %v18, %v3, %v20
+
+#CHECK: vfchdb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xeb]
+#CHECK: vfchdb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xeb]
+#CHECK: vfchdb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xeb]
+#CHECK: vfchdb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xeb]
+#CHECK: vfchdb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xeb]
+
+ vfchdb %v0, %v0, %v0
+ vfchdb %v0, %v0, %v31
+ vfchdb %v0, %v31, %v0
+ vfchdb %v31, %v0, %v0
+ vfchdb %v18, %v3, %v20
+
+#CHECK: vfchdbs %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x10,0x30,0xeb]
+#CHECK: vfchdbs %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x10,0x32,0xeb]
+#CHECK: vfchdbs %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x10,0x34,0xeb]
+#CHECK: vfchdbs %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x10,0x38,0xeb]
+#CHECK: vfchdbs %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x10,0x3a,0xeb]
+
+ vfchdbs %v0, %v0, %v0
+ vfchdbs %v0, %v0, %v31
+ vfchdbs %v0, %v31, %v0
+ vfchdbs %v31, %v0, %v0
+ vfchdbs %v18, %v3, %v20
+
+#CHECK: vfchedb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xea]
+#CHECK: vfchedb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xea]
+#CHECK: vfchedb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xea]
+#CHECK: vfchedb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xea]
+#CHECK: vfchedb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xea]
+
+ vfchedb %v0, %v0, %v0
+ vfchedb %v0, %v0, %v31
+ vfchedb %v0, %v31, %v0
+ vfchedb %v31, %v0, %v0
+ vfchedb %v18, %v3, %v20
+
+#CHECK: vfchedbs %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x10,0x30,0xea]
+#CHECK: vfchedbs %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x10,0x32,0xea]
+#CHECK: vfchedbs %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x10,0x34,0xea]
+#CHECK: vfchedbs %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x10,0x38,0xea]
+#CHECK: vfchedbs %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x10,0x3a,0xea]
+
+ vfchedbs %v0, %v0, %v0
+ vfchedbs %v0, %v0, %v31
+ vfchedbs %v0, %v31, %v0
+ vfchedbs %v31, %v0, %v0
+ vfchedbs %v18, %v3, %v20
+
+#CHECK: vfddb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xe5]
+#CHECK: vfddb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xe5]
+#CHECK: vfddb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xe5]
+#CHECK: vfddb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xe5]
+#CHECK: vfddb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xe5]
+
+ vfddb %v0, %v0, %v0
+ vfddb %v0, %v0, %v31
+ vfddb %v0, %v31, %v0
+ vfddb %v31, %v0, %v0
+ vfddb %v18, %v3, %v20
+
+#CHECK: vfeeb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x80]
+#CHECK: vfeeb %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x80]
+#CHECK: vfeeb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x80]
+#CHECK: vfeeb %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x80]
+#CHECK: vfeeb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x80]
+#CHECK: vfeeb %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x80]
+#CHECK: vfeeb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x80]
+#CHECK: vfeeb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x80]
+#CHECK: vfeebs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x04,0x80]
+#CHECK: vfeezb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x0a,0x80]
+#CHECK: vfeezbs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x04,0x80]
+
+ vfeeb %v0, %v0, %v0
+ vfeeb %v0, %v0, %v15
+ vfeeb %v0, %v0, %v31
+ vfeeb %v0, %v15, %v0
+ vfeeb %v0, %v31, %v0
+ vfeeb %v15, %v0, %v0
+ vfeeb %v31, %v0, %v0
+ vfeeb %v18, %v3, %v20
+ vfeebs %v5, %v22, %v7
+ vfeezb %v18, %v3, %v20
+ vfeezbs %v5, %v22, %v7
+
+#CFECK: vfeef %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x80]
+#CFECK: vfeef %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x80]
+#CFECK: vfeef %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x80]
+#CFECK: vfeef %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x80]
+#CFECK: vfeef %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x80]
+#CFECK: vfeef %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x80]
+#CFECK: vfeef %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x80]
+#CFECK: vfeef %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x80]
+#CFECK: vfeefs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0x80]
+#CFECK: vfeezf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x2a,0x80]
+#CFECK: vfeezfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x24,0x80]
+
+ vfeef %v0, %v0, %v0
+ vfeef %v0, %v0, %v15
+ vfeef %v0, %v0, %v31
+ vfeef %v0, %v15, %v0
+ vfeef %v0, %v31, %v0
+ vfeef %v15, %v0, %v0
+ vfeef %v31, %v0, %v0
+ vfeef %v18, %v3, %v20
+ vfeefs %v5, %v22, %v7
+ vfeezf %v18, %v3, %v20
+ vfeezfs %v5, %v22, %v7
+
+#CHECK: vfeeh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x80]
+#CHECK: vfeeh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x80]
+#CHECK: vfeeh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x80]
+#CHECK: vfeeh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x80]
+#CHECK: vfeeh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x80]
+#CHECK: vfeeh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x80]
+#CHECK: vfeeh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x80]
+#CHECK: vfeeh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x80]
+#CHECK: vfeehs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0x80]
+#CHECK: vfeezh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x1a,0x80]
+#CHECK: vfeezhs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x14,0x80]
+
+ vfeeh %v0, %v0, %v0
+ vfeeh %v0, %v0, %v15
+ vfeeh %v0, %v0, %v31
+ vfeeh %v0, %v15, %v0
+ vfeeh %v0, %v31, %v0
+ vfeeh %v15, %v0, %v0
+ vfeeh %v31, %v0, %v0
+ vfeeh %v18, %v3, %v20
+ vfeehs %v5, %v22, %v7
+ vfeezh %v18, %v3, %v20
+ vfeezhs %v5, %v22, %v7
+
+#CHECK: vfeneb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x81]
+#CHECK: vfeneb %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x81]
+#CHECK: vfeneb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x81]
+#CHECK: vfeneb %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x81]
+#CHECK: vfeneb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x81]
+#CHECK: vfeneb %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x81]
+#CHECK: vfeneb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x81]
+#CHECK: vfeneb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x81]
+#CHECK: vfenebs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x04,0x81]
+#CHECK: vfenezb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x0a,0x81]
+#CHECK: vfenezbs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x04,0x81]
+
+ vfeneb %v0, %v0, %v0
+ vfeneb %v0, %v0, %v15
+ vfeneb %v0, %v0, %v31
+ vfeneb %v0, %v15, %v0
+ vfeneb %v0, %v31, %v0
+ vfeneb %v15, %v0, %v0
+ vfeneb %v31, %v0, %v0
+ vfeneb %v18, %v3, %v20
+ vfenebs %v5, %v22, %v7
+ vfenezb %v18, %v3, %v20
+ vfenezbs %v5, %v22, %v7
+
+#CFECK: vfenef %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x81]
+#CFECK: vfenef %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x81]
+#CFECK: vfenef %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x81]
+#CFECK: vfenef %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x81]
+#CFECK: vfenef %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x81]
+#CFECK: vfenef %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x81]
+#CFECK: vfenef %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x81]
+#CFECK: vfenef %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x81]
+#CFECK: vfenefs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0x81]
+#CFECK: vfenezf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x2a,0x81]
+#CFECK: vfenezfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x24,0x81]
+
+ vfenef %v0, %v0, %v0
+ vfenef %v0, %v0, %v15
+ vfenef %v0, %v0, %v31
+ vfenef %v0, %v15, %v0
+ vfenef %v0, %v31, %v0
+ vfenef %v15, %v0, %v0
+ vfenef %v31, %v0, %v0
+ vfenef %v18, %v3, %v20
+ vfenefs %v5, %v22, %v7
+ vfenezf %v18, %v3, %v20
+ vfenezfs %v5, %v22, %v7
+
+#CHECK: vfeneh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x81]
+#CHECK: vfeneh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x81]
+#CHECK: vfeneh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x81]
+#CHECK: vfeneh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x81]
+#CHECK: vfeneh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x81]
+#CHECK: vfeneh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x81]
+#CHECK: vfeneh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x81]
+#CHECK: vfeneh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x81]
+#CHECK: vfenehs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0x81]
+#CHECK: vfenezh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x20,0x1a,0x81]
+#CHECK: vfenezhs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x30,0x14,0x81]
+
+ vfeneh %v0, %v0, %v0
+ vfeneh %v0, %v0, %v15
+ vfeneh %v0, %v0, %v31
+ vfeneh %v0, %v15, %v0
+ vfeneh %v0, %v31, %v0
+ vfeneh %v15, %v0, %v0
+ vfeneh %v31, %v0, %v0
+ vfeneh %v18, %v3, %v20
+ vfenehs %v5, %v22, %v7
+ vfenezh %v18, %v3, %v20
+ vfenezhs %v5, %v22, %v7
+
+#CHECK: vfidb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc7]
+#CHECK: vfidb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc7]
+#CHECK: vfidb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc7]
+#CHECK: vfidb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc7]
+#CHECK: vfidb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc7]
+#CHECK: vfidb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc7]
+#CHECK: vfidb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc7]
+
+ vfidb %v0, %v0, 0, 0
+ vfidb %v0, %v0, 0, 15
+ vfidb %v0, %v0, 4, 0
+ vfidb %v0, %v0, 12, 0
+ vfidb %v0, %v31, 0, 0
+ vfidb %v31, %v0, 0, 0
+ vfidb %v14, %v17, 4, 10
+
+#CHECK: vistrb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x5c]
+#CHECK: vistrb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x5c]
+#CHECK: vistrb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x5c]
+#CHECK: vistrb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x5c]
+#CHECK: vistrb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x5c]
+#CHECK: vistrb %v18, %v3 # encoding: [0xe7,0x23,0x00,0x00,0x08,0x5c]
+#CHECK: vistrbs %v5, %v22 # encoding: [0xe7,0x56,0x00,0x10,0x04,0x5c]
+
+ vistrb %v0, %v0
+ vistrb %v0, %v15
+ vistrb %v0, %v31
+ vistrb %v15, %v0
+ vistrb %v31, %v0
+ vistrb %v18, %v3
+ vistrbs %v5, %v22
+
+#CBECK: vistrf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x5c]
+#CBECK: vistrf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x5c]
+#CBECK: vistrf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x5c]
+#CBECK: vistrf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x5c]
+#CBECK: vistrf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x5c]
+#CBECK: vistrf %v18, %v3 # encoding: [0xe7,0x23,0x00,0x00,0x28,0x5c]
+#CBECK: vistrfs %v5, %v22 # encoding: [0xe7,0x56,0x00,0x10,0x24,0x5c]
+
+ vistrf %v0, %v0
+ vistrf %v0, %v15
+ vistrf %v0, %v31
+ vistrf %v15, %v0
+ vistrf %v31, %v0
+ vistrf %v18, %v3
+ vistrfs %v5, %v22
+
+#CHECK: vistrh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x5c]
+#CHECK: vistrh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x5c]
+#CHECK: vistrh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x5c]
+#CHECK: vistrh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x5c]
+#CHECK: vistrh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x5c]
+#CHECK: vistrh %v18, %v3 # encoding: [0xe7,0x23,0x00,0x00,0x18,0x5c]
+#CHECK: vistrhs %v5, %v22 # encoding: [0xe7,0x56,0x00,0x10,0x14,0x5c]
+
+ vistrh %v0, %v0
+ vistrh %v0, %v15
+ vistrh %v0, %v31
+ vistrh %v15, %v0
+ vistrh %v31, %v0
+ vistrh %v18, %v3
+ vistrhs %v5, %v22
+
+#CHECK: vflcdb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xcc]
+#CHECK: vflcdb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xcc]
+#CHECK: vflcdb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xcc]
+#CHECK: vflcdb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xcc]
+#CHECK: vflcdb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xcc]
+#CHECK: vflcdb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xcc]
+
+ vflcdb %v0, %v0
+ vflcdb %v0, %v15
+ vflcdb %v0, %v31
+ vflcdb %v15, %v0
+ vflcdb %v31, %v0
+ vflcdb %v14, %v17
+
+#CHECK: vflndb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x10,0x30,0xcc]
+#CHECK: vflndb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x10,0x30,0xcc]
+#CHECK: vflndb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x10,0x34,0xcc]
+#CHECK: vflndb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x10,0x30,0xcc]
+#CHECK: vflndb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x10,0x38,0xcc]
+#CHECK: vflndb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x10,0x34,0xcc]
+
+ vflndb %v0, %v0
+ vflndb %v0, %v15
+ vflndb %v0, %v31
+ vflndb %v15, %v0
+ vflndb %v31, %v0
+ vflndb %v14, %v17
+
+#CHECK: vflpdb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x20,0x30,0xcc]
+#CHECK: vflpdb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x20,0x30,0xcc]
+#CHECK: vflpdb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x20,0x34,0xcc]
+#CHECK: vflpdb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x20,0x30,0xcc]
+#CHECK: vflpdb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x20,0x38,0xcc]
+#CHECK: vflpdb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x20,0x34,0xcc]
+
+ vflpdb %v0, %v0
+ vflpdb %v0, %v15
+ vflpdb %v0, %v31
+ vflpdb %v15, %v0
+ vflpdb %v31, %v0
+ vflpdb %v14, %v17
+
+#CHECK: vfmadb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x03,0x00,0x00,0x8f]
+#CHECK: vfmadb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x03,0x00,0xf1,0x8f]
+#CHECK: vfmadb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf3,0x00,0x02,0x8f]
+#CHECK: vfmadb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x03,0x00,0x04,0x8f]
+#CHECK: vfmadb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x03,0x00,0x08,0x8f]
+#CHECK: vfmadb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x53,0x00,0x97,0x8f]
+
+ vfmadb %v0, %v0, %v0, %v0
+ vfmadb %v0, %v0, %v0, %v31
+ vfmadb %v0, %v0, %v31, %v0
+ vfmadb %v0, %v31, %v0, %v0
+ vfmadb %v31, %v0, %v0, %v0
+ vfmadb %v13, %v17, %v21, %v25
+
+#CHECK: vfmdb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xe7]
+#CHECK: vfmdb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xe7]
+#CHECK: vfmdb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xe7]
+#CHECK: vfmdb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xe7]
+#CHECK: vfmdb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xe7]
+
+ vfmdb %v0, %v0, %v0
+ vfmdb %v0, %v0, %v31
+ vfmdb %v0, %v31, %v0
+ vfmdb %v31, %v0, %v0
+ vfmdb %v18, %v3, %v20
+
+#CHECK: vfmsdb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x03,0x00,0x00,0x8e]
+#CHECK: vfmsdb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x03,0x00,0xf1,0x8e]
+#CHECK: vfmsdb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf3,0x00,0x02,0x8e]
+#CHECK: vfmsdb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x03,0x00,0x04,0x8e]
+#CHECK: vfmsdb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x03,0x00,0x08,0x8e]
+#CHECK: vfmsdb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x53,0x00,0x97,0x8e]
+
+ vfmsdb %v0, %v0, %v0, %v0
+ vfmsdb %v0, %v0, %v0, %v31
+ vfmsdb %v0, %v0, %v31, %v0
+ vfmsdb %v0, %v31, %v0, %v0
+ vfmsdb %v31, %v0, %v0, %v0
+ vfmsdb %v13, %v17, %v21, %v25
+
+#CHECK: vfsdb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xe2]
+#CHECK: vfsdb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xe2]
+#CHECK: vfsdb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xe2]
+#CHECK: vfsdb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xe2]
+#CHECK: vfsdb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xe2]
+
+ vfsdb %v0, %v0, %v0
+ vfsdb %v0, %v0, %v31
+ vfsdb %v0, %v31, %v0
+ vfsdb %v31, %v0, %v0
+ vfsdb %v18, %v3, %v20
+
+#CHECK: vfsqdb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xce]
+#CHECK: vfsqdb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xce]
+#CHECK: vfsqdb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xce]
+#CHECK: vfsqdb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xce]
+#CHECK: vfsqdb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xce]
+#CHECK: vfsqdb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xce]
+
+ vfsqdb %v0, %v0
+ vfsqdb %v0, %v15
+ vfsqdb %v0, %v31
+ vfsqdb %v15, %v0
+ vfsqdb %v31, %v0
+ vfsqdb %v14, %v17
+
+#CHECK: vftcidb %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x4a]
+#CHECK: vftcidb %v0, %v0, 4095 # encoding: [0xe7,0x00,0xff,0xf0,0x30,0x4a]
+#CHECK: vftcidb %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x4a]
+#CHECK: vftcidb %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x4a]
+#CHECK: vftcidb %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x4a]
+#CHECK: vftcidb %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x4a]
+#CHECK: vftcidb %v4, %v21, 1656 # encoding: [0xe7,0x45,0x67,0x80,0x34,0x4a]
+
+ vftcidb %v0, %v0, 0
+ vftcidb %v0, %v0, 4095
+ vftcidb %v0, %v15, 0
+ vftcidb %v0, %v31, 0
+ vftcidb %v15, %v0, 0
+ vftcidb %v31, %v0, 0
+ vftcidb %v4, %v21, 0x678
+
+#CHECK: vgbm %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x44]
+#CHECK: vgbm %v0, 65535 # encoding: [0xe7,0x00,0xff,0xff,0x00,0x44]
+#CHECK: vgbm %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x44]
+#CHECK: vgbm %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x44]
+#CHECK: vgbm %v17, 4660 # encoding: [0xe7,0x10,0x12,0x34,0x08,0x44]
+
+ vgbm %v0, 0
+ vgbm %v0, 0xffff
+ vgbm %v15, 0
+ vgbm %v31, 0
+ vgbm %v17, 0x1234
+
+#CHECK: vgef %v0, 0(%v0), 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x13]
+#CHECK: vgef %v0, 0(%v0,%r1), 0 # encoding: [0xe7,0x00,0x10,0x00,0x00,0x13]
+#CHECK: vgef %v0, 0(%v0,%r1), 3 # encoding: [0xe7,0x00,0x10,0x00,0x30,0x13]
+#CHECK: vgef %v0, 0(%v0,%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x13]
+#CHECK: vgef %v0, 0(%v15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x13]
+#CHECK: vgef %v0, 0(%v31,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x04,0x13]
+#CHECK: vgef %v0, 4095(%v0,%r1), 0 # encoding: [0xe7,0x00,0x1f,0xff,0x00,0x13]
+#CHECK: vgef %v15, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x00,0x13]
+#CHECK: vgef %v31, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x08,0x13]
+#CHECK: vgef %v10, 1000(%v19,%r7), 1 # encoding: [0xe7,0xa3,0x73,0xe8,0x14,0x13]
+
+ vgef %v0, 0(%v0), 0
+ vgef %v0, 0(%v0,%r1), 0
+ vgef %v0, 0(%v0,%r1), 3
+ vgef %v0, 0(%v0,%r15), 0
+ vgef %v0, 0(%v15,%r1), 0
+ vgef %v0, 0(%v31,%r1), 0
+ vgef %v0, 4095(%v0, %r1), 0
+ vgef %v15, 0(%v0,%r1), 0
+ vgef %v31, 0(%v0,%r1), 0
+ vgef %v10, 1000(%v19,%r7), 1
+
+#CHECK: vgeg %v0, 0(%v0), 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x12]
+#CHECK: vgeg %v0, 0(%v0,%r1), 0 # encoding: [0xe7,0x00,0x10,0x00,0x00,0x12]
+#CHECK: vgeg %v0, 0(%v0,%r1), 1 # encoding: [0xe7,0x00,0x10,0x00,0x10,0x12]
+#CHECK: vgeg %v0, 0(%v0,%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x12]
+#CHECK: vgeg %v0, 0(%v15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x12]
+#CHECK: vgeg %v0, 0(%v31,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x04,0x12]
+#CHECK: vgeg %v0, 4095(%v0,%r1), 0 # encoding: [0xe7,0x00,0x1f,0xff,0x00,0x12]
+#CHECK: vgeg %v15, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x00,0x12]
+#CHECK: vgeg %v31, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x08,0x12]
+#CHECK: vgeg %v10, 1000(%v19,%r7), 1 # encoding: [0xe7,0xa3,0x73,0xe8,0x14,0x12]
+
+ vgeg %v0, 0(%v0), 0
+ vgeg %v0, 0(%v0,%r1), 0
+ vgeg %v0, 0(%v0,%r1), 1
+ vgeg %v0, 0(%v0,%r15), 0
+ vgeg %v0, 0(%v15,%r1), 0
+ vgeg %v0, 0(%v31,%r1), 0
+ vgeg %v0, 4095(%v0,%r1), 0
+ vgeg %v15, 0(%v0,%r1), 0
+ vgeg %v31, 0(%v0,%r1), 0
+ vgeg %v10, 1000(%v19,%r7), 1
+
+#CHECK: vgfmab %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xbc]
+#CHECK: vgfmab %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xbc]
+#CHECK: vgfmab %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xbc]
+#CHECK: vgfmab %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xbc]
+#CHECK: vgfmab %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xbc]
+#CHECK: vgfmab %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xbc]
+
+ vgfmab %v0, %v0, %v0, %v0
+ vgfmab %v0, %v0, %v0, %v31
+ vgfmab %v0, %v0, %v31, %v0
+ vgfmab %v0, %v31, %v0, %v0
+ vgfmab %v31, %v0, %v0, %v0
+ vgfmab %v13, %v17, %v21, %v25
+
+#CHECK: vgfmaf %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xbc]
+#CHECK: vgfmaf %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xbc]
+#CHECK: vgfmaf %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xbc]
+#CHECK: vgfmaf %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xbc]
+#CHECK: vgfmaf %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xbc]
+#CHECK: vgfmaf %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xbc]
+
+ vgfmaf %v0, %v0, %v0, %v0
+ vgfmaf %v0, %v0, %v0, %v31
+ vgfmaf %v0, %v0, %v31, %v0
+ vgfmaf %v0, %v31, %v0, %v0
+ vgfmaf %v31, %v0, %v0, %v0
+ vgfmaf %v13, %v17, %v21, %v25
+
+#CHECK: vgfmag %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x03,0x00,0x00,0xbc]
+#CHECK: vgfmag %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x03,0x00,0xf1,0xbc]
+#CHECK: vgfmag %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf3,0x00,0x02,0xbc]
+#CHECK: vgfmag %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x03,0x00,0x04,0xbc]
+#CHECK: vgfmag %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x03,0x00,0x08,0xbc]
+#CHECK: vgfmag %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x53,0x00,0x97,0xbc]
+
+ vgfmag %v0, %v0, %v0, %v0
+ vgfmag %v0, %v0, %v0, %v31
+ vgfmag %v0, %v0, %v31, %v0
+ vgfmag %v0, %v31, %v0, %v0
+ vgfmag %v31, %v0, %v0, %v0
+ vgfmag %v13, %v17, %v21, %v25
+
+#CHECK: vgfmah %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xbc]
+#CHECK: vgfmah %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xbc]
+#CHECK: vgfmah %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xbc]
+#CHECK: vgfmah %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xbc]
+#CHECK: vgfmah %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xbc]
+#CHECK: vgfmah %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xbc]
+
+ vgfmah %v0, %v0, %v0, %v0
+ vgfmah %v0, %v0, %v0, %v31
+ vgfmah %v0, %v0, %v31, %v0
+ vgfmah %v0, %v31, %v0, %v0
+ vgfmah %v31, %v0, %v0, %v0
+ vgfmah %v13, %v17, %v21, %v25
+
+#CHECK: vgfmb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xb4]
+#CHECK: vgfmb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xb4]
+#CHECK: vgfmb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xb4]
+#CHECK: vgfmb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xb4]
+#CHECK: vgfmb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xb4]
+
+ vgfmb %v0, %v0, %v0
+ vgfmb %v0, %v0, %v31
+ vgfmb %v0, %v31, %v0
+ vgfmb %v31, %v0, %v0
+ vgfmb %v18, %v3, %v20
+
+#CHECK: vgfmf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xb4]
+#CHECK: vgfmf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xb4]
+#CHECK: vgfmf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xb4]
+#CHECK: vgfmf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xb4]
+#CHECK: vgfmf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xb4]
+
+ vgfmf %v0, %v0, %v0
+ vgfmf %v0, %v0, %v31
+ vgfmf %v0, %v31, %v0
+ vgfmf %v31, %v0, %v0
+ vgfmf %v18, %v3, %v20
+
+#CHECK: vgfmg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xb4]
+#CHECK: vgfmg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xb4]
+#CHECK: vgfmg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xb4]
+#CHECK: vgfmg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xb4]
+#CHECK: vgfmg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xb4]
+
+ vgfmg %v0, %v0, %v0
+ vgfmg %v0, %v0, %v31
+ vgfmg %v0, %v31, %v0
+ vgfmg %v31, %v0, %v0
+ vgfmg %v18, %v3, %v20
+
+#CHECK: vgfmh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xb4]
+#CHECK: vgfmh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xb4]
+#CHECK: vgfmh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xb4]
+#CHECK: vgfmh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xb4]
+#CHECK: vgfmh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xb4]
+
+ vgfmh %v0, %v0, %v0
+ vgfmh %v0, %v0, %v31
+ vgfmh %v0, %v31, %v0
+ vgfmh %v31, %v0, %v0
+ vgfmh %v18, %v3, %v20
+
+#CHECK: vgmb %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x46]
+#CHECK: vgmb %v0, 0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x00,0x46]
+#CHECK: vgmb %v0, 255, 0 # encoding: [0xe7,0x00,0xff,0x00,0x00,0x46]
+#CHECK: vgmb %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x46]
+#CHECK: vgmb %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x46]
+#CHECK: vgmb %v21, 2, 3 # encoding: [0xe7,0x50,0x02,0x03,0x08,0x46]
+
+ vgmb %v0, 0, 0
+ vgmb %v0, 0, 255
+ vgmb %v0, 255, 0
+ vgmb %v15, 0, 0
+ vgmb %v31, 0, 0
+ vgmb %v21, 2, 3
+
+#CHECK: vgmf %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x46]
+#CHECK: vgmf %v0, 0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x20,0x46]
+#CHECK: vgmf %v0, 255, 0 # encoding: [0xe7,0x00,0xff,0x00,0x20,0x46]
+#CHECK: vgmf %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x46]
+#CHECK: vgmf %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x46]
+#CHECK: vgmf %v21, 2, 3 # encoding: [0xe7,0x50,0x02,0x03,0x28,0x46]
+
+ vgmf %v0, 0, 0
+ vgmf %v0, 0, 255
+ vgmf %v0, 255, 0
+ vgmf %v15, 0, 0
+ vgmf %v31, 0, 0
+ vgmf %v21, 2, 3
+
+#CHECK: vgmg %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x46]
+#CHECK: vgmg %v0, 0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x30,0x46]
+#CHECK: vgmg %v0, 255, 0 # encoding: [0xe7,0x00,0xff,0x00,0x30,0x46]
+#CHECK: vgmg %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x46]
+#CHECK: vgmg %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x46]
+#CHECK: vgmg %v21, 2, 3 # encoding: [0xe7,0x50,0x02,0x03,0x38,0x46]
+
+ vgmg %v0, 0, 0
+ vgmg %v0, 0, 255
+ vgmg %v0, 255, 0
+ vgmg %v15, 0, 0
+ vgmg %v31, 0, 0
+ vgmg %v21, 2, 3
+
+#CHECK: vgmh %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x46]
+#CHECK: vgmh %v0, 0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x10,0x46]
+#CHECK: vgmh %v0, 255, 0 # encoding: [0xe7,0x00,0xff,0x00,0x10,0x46]
+#CHECK: vgmh %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x46]
+#CHECK: vgmh %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x46]
+#CHECK: vgmh %v21, 2, 3 # encoding: [0xe7,0x50,0x02,0x03,0x18,0x46]
+
+ vgmh %v0, 0, 0
+ vgmh %v0, 0, 255
+ vgmh %v0, 255, 0
+ vgmh %v15, 0, 0
+ vgmh %v31, 0, 0
+ vgmh %v21, 2, 3
+
+#CHECK: vl %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x06]
+#CHECK: vl %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x06]
+#CHECK: vl %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x06]
+#CHECK: vl %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x06]
+#CHECK: vl %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x06]
+#CHECK: vl %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x06]
+#CHECK: vl %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x06]
+
+ vl %v0, 0
+ vl %v0, 4095
+ vl %v0, 0(%r15)
+ vl %v0, 0(%r15,%r1)
+ vl %v15, 0
+ vl %v31, 0
+ vl %v18, 0x567(%r3,%r4)
+
+#CHECK: vlbb %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x07]
+#CHECK: vlbb %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x07]
+#CHECK: vlbb %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x07]
+#CHECK: vlbb %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x07]
+#CHECK: vlbb %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x07]
+#CHECK: vlbb %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x07]
+#CHECK: vlbb %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x07]
+#CHECK: vlbb %v18, 1383(%r3,%r4), 8 # encoding: [0xe7,0x23,0x45,0x67,0x88,0x07]
+
+ vlbb %v0, 0, 0
+ vlbb %v0, 0, 15
+ vlbb %v0, 4095, 0
+ vlbb %v0, 0(%r15), 0
+ vlbb %v0, 0(%r15,%r1), 0
+ vlbb %v15, 0, 0
+ vlbb %v31, 0, 0
+ vlbb %v18, 1383(%r3,%r4), 8
+
+#CHECK: vlcb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xde]
+#CHECK: vlcb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xde]
+#CHECK: vlcb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xde]
+#CHECK: vlcb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xde]
+#CHECK: vlcb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xde]
+#CHECK: vlcb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xde]
+
+ vlcb %v0, %v0
+ vlcb %v0, %v15
+ vlcb %v0, %v31
+ vlcb %v15, %v0
+ vlcb %v31, %v0
+ vlcb %v14, %v17
+
+#CHECK: vlcf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xde]
+#CHECK: vlcf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xde]
+#CHECK: vlcf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xde]
+#CHECK: vlcf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xde]
+#CHECK: vlcf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xde]
+#CHECK: vlcf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xde]
+
+ vlcf %v0, %v0
+ vlcf %v0, %v15
+ vlcf %v0, %v31
+ vlcf %v15, %v0
+ vlcf %v31, %v0
+ vlcf %v14, %v17
+
+#CHECK: vlcg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xde]
+#CHECK: vlcg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xde]
+#CHECK: vlcg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xde]
+#CHECK: vlcg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xde]
+#CHECK: vlcg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xde]
+#CHECK: vlcg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xde]
+
+ vlcg %v0, %v0
+ vlcg %v0, %v15
+ vlcg %v0, %v31
+ vlcg %v15, %v0
+ vlcg %v31, %v0
+ vlcg %v14, %v17
+
+#CHECK: vlch %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xde]
+#CHECK: vlch %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xde]
+#CHECK: vlch %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xde]
+#CHECK: vlch %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xde]
+#CHECK: vlch %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xde]
+#CHECK: vlch %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xde]
+
+ vlch %v0, %v0
+ vlch %v0, %v15
+ vlch %v0, %v31
+ vlch %v15, %v0
+ vlch %v31, %v0
+ vlch %v14, %v17
+
+#CHECK: vldeb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xc4]
+#CHECK: vldeb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xc4]
+#CHECK: vldeb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xc4]
+#CHECK: vldeb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xc4]
+#CHECK: vldeb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xc4]
+#CHECK: vldeb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xc4]
+
+ vldeb %v0, %v0
+ vldeb %v0, %v15
+ vldeb %v0, %v31
+ vldeb %v15, %v0
+ vldeb %v31, %v0
+ vldeb %v14, %v17
+
+#CHECK: vleb %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x00]
+#CHECK: vleb %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x00]
+#CHECK: vleb %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x00]
+#CHECK: vleb %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x00]
+#CHECK: vleb %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x00]
+#CHECK: vleb %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x00]
+#CHECK: vleb %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x00]
+#CHECK: vleb %v18, 1383(%r3,%r4), 8 # encoding: [0xe7,0x23,0x45,0x67,0x88,0x00]
+
+ vleb %v0, 0, 0
+ vleb %v0, 0, 15
+ vleb %v0, 4095, 0
+ vleb %v0, 0(%r15), 0
+ vleb %v0, 0(%r15,%r1), 0
+ vleb %v15, 0, 0
+ vleb %v31, 0, 0
+ vleb %v18, 1383(%r3,%r4), 8
+
+#CHECK: vledb %v0, %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xc5]
+#CHECK: vledb %v0, %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf0,0x30,0xc5]
+#CHECK: vledb %v0, %v0, 4, 0 # encoding: [0xe7,0x00,0x00,0x04,0x30,0xc5]
+#CHECK: vledb %v0, %v0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc5]
+#CHECK: vledb %v0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xc5]
+#CHECK: vledb %v31, %v0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xc5]
+#CHECK: vledb %v14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xa4,0x34,0xc5]
+
+ vledb %v0, %v0, 0, 0
+ vledb %v0, %v0, 0, 15
+ vledb %v0, %v0, 4, 0
+ vledb %v0, %v0, 12, 0
+ vledb %v0, %v31, 0, 0
+ vledb %v31, %v0, 0, 0
+ vledb %v14, %v17, 4, 10
+
+#CHECK: vlef %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x03]
+#CHECK: vlef %v0, 0, 3 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x03]
+#CHECK: vlef %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x03]
+#CHECK: vlef %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x03]
+#CHECK: vlef %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x03]
+#CHECK: vlef %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x03]
+#CHECK: vlef %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x03]
+#CHECK: vlef %v18, 1383(%r3,%r4), 2 # encoding: [0xe7,0x23,0x45,0x67,0x28,0x03]
+
+ vlef %v0, 0, 0
+ vlef %v0, 0, 3
+ vlef %v0, 4095, 0
+ vlef %v0, 0(%r15), 0
+ vlef %v0, 0(%r15,%r1), 0
+ vlef %v15, 0, 0
+ vlef %v31, 0, 0
+ vlef %v18, 1383(%r3,%r4), 2
+
+#CHECK: vleg %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x02]
+#CHECK: vleg %v0, 0, 1 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x02]
+#CHECK: vleg %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x02]
+#CHECK: vleg %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x02]
+#CHECK: vleg %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x02]
+#CHECK: vleg %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x02]
+#CHECK: vleg %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x02]
+#CHECK: vleg %v18, 1383(%r3,%r4), 1 # encoding: [0xe7,0x23,0x45,0x67,0x18,0x02]
+
+ vleg %v0, 0, 0
+ vleg %v0, 0, 1
+ vleg %v0, 4095, 0
+ vleg %v0, 0(%r15), 0
+ vleg %v0, 0(%r15,%r1), 0
+ vleg %v15, 0, 0
+ vleg %v31, 0, 0
+ vleg %v18, 1383(%r3,%r4), 1
+
+#CHECK: vleh %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x01]
+#CHECK: vleh %v0, 0, 7 # encoding: [0xe7,0x00,0x00,0x00,0x70,0x01]
+#CHECK: vleh %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x01]
+#CHECK: vleh %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x01]
+#CHECK: vleh %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x01]
+#CHECK: vleh %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x01]
+#CHECK: vleh %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x01]
+#CHECK: vleh %v18, 1383(%r3,%r4), 4 # encoding: [0xe7,0x23,0x45,0x67,0x48,0x01]
+
+ vleh %v0, 0, 0
+ vleh %v0, 0, 7
+ vleh %v0, 4095, 0
+ vleh %v0, 0(%r15), 0
+ vleh %v0, 0(%r15,%r1), 0
+ vleh %v15, 0, 0
+ vleh %v31, 0, 0
+ vleh %v18, 1383(%r3,%r4), 4
+
+#CHECK: vleib %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x40]
+#CHECK: vleib %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x40]
+#CHECK: vleib %v0, -32768, 0 # encoding: [0xe7,0x00,0x80,0x00,0x00,0x40]
+#CHECK: vleib %v0, 32767, 0 # encoding: [0xe7,0x00,0x7f,0xff,0x00,0x40]
+#CHECK: vleib %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x40]
+#CHECK: vleib %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x40]
+#CHECK: vleib %v18, 13398, 11 # encoding: [0xe7,0x20,0x34,0x56,0xb8,0x40]
+
+ vleib %v0, 0, 0
+ vleib %v0, 0, 15
+ vleib %v0, -32768, 0
+ vleib %v0, 32767, 0
+ vleib %v15, 0, 0
+ vleib %v31, 0, 0
+ vleib %v18, 0x3456, 11
+
+#CHECK: vleif %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x43]
+#CHECK: vleif %v0, 0, 3 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x43]
+#CHECK: vleif %v0, -32768, 0 # encoding: [0xe7,0x00,0x80,0x00,0x00,0x43]
+#CHECK: vleif %v0, 32767, 0 # encoding: [0xe7,0x00,0x7f,0xff,0x00,0x43]
+#CHECK: vleif %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x43]
+#CHECK: vleif %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x43]
+#CHECK: vleif %v18, 13398, 3 # encoding: [0xe7,0x20,0x34,0x56,0x38,0x43]
+
+ vleif %v0, 0, 0
+ vleif %v0, 0, 3
+ vleif %v0, -32768, 0
+ vleif %v0, 32767, 0
+ vleif %v15, 0, 0
+ vleif %v31, 0, 0
+ vleif %v18, 0x3456, 3
+
+#CHECK: vleig %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x42]
+#CHECK: vleig %v0, 0, 1 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x42]
+#CHECK: vleig %v0, -32768, 0 # encoding: [0xe7,0x00,0x80,0x00,0x00,0x42]
+#CHECK: vleig %v0, 32767, 0 # encoding: [0xe7,0x00,0x7f,0xff,0x00,0x42]
+#CHECK: vleig %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x42]
+#CHECK: vleig %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x42]
+#CHECK: vleig %v18, 13398, 1 # encoding: [0xe7,0x20,0x34,0x56,0x18,0x42]
+
+ vleig %v0, 0, 0
+ vleig %v0, 0, 1
+ vleig %v0, -32768, 0
+ vleig %v0, 32767, 0
+ vleig %v15, 0, 0
+ vleig %v31, 0, 0
+ vleig %v18, 0x3456, 1
+
+#CHECK: vleih %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x41]
+#CHECK: vleih %v0, 0, 7 # encoding: [0xe7,0x00,0x00,0x00,0x70,0x41]
+#CHECK: vleih %v0, -32768, 0 # encoding: [0xe7,0x00,0x80,0x00,0x00,0x41]
+#CHECK: vleih %v0, 32767, 0 # encoding: [0xe7,0x00,0x7f,0xff,0x00,0x41]
+#CHECK: vleih %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x41]
+#CHECK: vleih %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x41]
+#CHECK: vleih %v18, 13398, 7 # encoding: [0xe7,0x20,0x34,0x56,0x78,0x41]
+
+ vleih %v0, 0, 0
+ vleih %v0, 0, 7
+ vleih %v0, -32768, 0
+ vleih %v0, 32767, 0
+ vleih %v15, 0, 0
+ vleih %v31, 0, 0
+ vleih %v18, 0x3456, 7
+
+#CHECK: vlgvb %r0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x21]
+#CHECK: vlgvb %r0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x21]
+#CHECK: vlgvb %r0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x21]
+#CHECK: vlgvb %r0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x21]
+#CHECK: vlgvb %r0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x21]
+#CHECK: vlgvb %r15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x21]
+#CHECK: vlgvb %r2, %v19, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x04,0x21]
+
+ vlgvb %r0, %v0, 0
+ vlgvb %r0, %v0, 4095
+ vlgvb %r0, %v0, 0(%r15)
+ vlgvb %r0, %v15, 0
+ vlgvb %r0, %v31, 0
+ vlgvb %r15, %v0, 0
+ vlgvb %r2, %v19, 1383(%r4)
+
+#CHECK: vlgvf %r0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x21]
+#CHECK: vlgvf %r0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x21]
+#CHECK: vlgvf %r0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x21]
+#CHECK: vlgvf %r0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x21]
+#CHECK: vlgvf %r0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x21]
+#CHECK: vlgvf %r15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x21]
+#CHECK: vlgvf %r2, %v19, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x24,0x21]
+
+ vlgvf %r0, %v0, 0
+ vlgvf %r0, %v0, 4095
+ vlgvf %r0, %v0, 0(%r15)
+ vlgvf %r0, %v15, 0
+ vlgvf %r0, %v31, 0
+ vlgvf %r15, %v0, 0
+ vlgvf %r2, %v19, 1383(%r4)
+
+#CHECK: vlgvg %r0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x21]
+#CHECK: vlgvg %r0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x21]
+#CHECK: vlgvg %r0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x21]
+#CHECK: vlgvg %r0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x21]
+#CHECK: vlgvg %r0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x21]
+#CHECK: vlgvg %r15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x21]
+#CHECK: vlgvg %r2, %v19, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x34,0x21]
+
+ vlgvg %r0, %v0, 0
+ vlgvg %r0, %v0, 4095
+ vlgvg %r0, %v0, 0(%r15)
+ vlgvg %r0, %v15, 0
+ vlgvg %r0, %v31, 0
+ vlgvg %r15, %v0, 0
+ vlgvg %r2, %v19, 1383(%r4)
+
+#CHECK: vlgvh %r0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x21]
+#CHECK: vlgvh %r0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x21]
+#CHECK: vlgvh %r0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x21]
+#CHECK: vlgvh %r0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x21]
+#CHECK: vlgvh %r0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x21]
+#CHECK: vlgvh %r15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x21]
+#CHECK: vlgvh %r2, %v19, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x14,0x21]
+
+ vlgvh %r0, %v0, 0
+ vlgvh %r0, %v0, 4095
+ vlgvh %r0, %v0, 0(%r15)
+ vlgvh %r0, %v15, 0
+ vlgvh %r0, %v31, 0
+ vlgvh %r15, %v0, 0
+ vlgvh %r2, %v19, 1383(%r4)
+
+#CHECK: vll %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x37]
+#CHECK: vll %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x37]
+#CHECK: vll %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x37]
+#CHECK: vll %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x37]
+#CHECK: vll %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x37]
+#CHECK: vll %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x37]
+#CHECK: vll %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x37]
+
+ vll %v0, %r0, 0
+ vll %v0, %r0, 4095
+ vll %v0, %r0, 0(%r15)
+ vll %v0, %r15, 0
+ vll %v15, %r0, 0
+ vll %v31, %r0, 0
+ vll %v18, %r3, 1383(%r4)
+
+#CHECK: vllezb %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x04]
+#CHECK: vllezb %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x04]
+#CHECK: vllezb %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x04]
+#CHECK: vllezb %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x04]
+#CHECK: vllezb %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x04]
+#CHECK: vllezb %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x04]
+#CHECK: vllezb %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x04]
+
+ vllezb %v0, 0
+ vllezb %v0, 4095
+ vllezb %v0, 0(%r15)
+ vllezb %v0, 0(%r15,%r1)
+ vllezb %v15, 0
+ vllezb %v31, 0
+ vllezb %v18, 0x567(%r3,%r4)
+
+#CHECK: vllezf %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x04]
+#CHECK: vllezf %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x04]
+#CHECK: vllezf %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x04]
+#CHECK: vllezf %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x20,0x04]
+#CHECK: vllezf %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x04]
+#CHECK: vllezf %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x04]
+#CHECK: vllezf %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x28,0x04]
+
+ vllezf %v0, 0
+ vllezf %v0, 4095
+ vllezf %v0, 0(%r15)
+ vllezf %v0, 0(%r15,%r1)
+ vllezf %v15, 0
+ vllezf %v31, 0
+ vllezf %v18, 0x567(%r3,%r4)
+
+#CHECK: vllezg %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x04]
+#CHECK: vllezg %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x04]
+#CHECK: vllezg %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x04]
+#CHECK: vllezg %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x30,0x04]
+#CHECK: vllezg %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x04]
+#CHECK: vllezg %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x04]
+#CHECK: vllezg %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x38,0x04]
+
+ vllezg %v0, 0
+ vllezg %v0, 4095
+ vllezg %v0, 0(%r15)
+ vllezg %v0, 0(%r15,%r1)
+ vllezg %v15, 0
+ vllezg %v31, 0
+ vllezg %v18, 0x567(%r3,%r4)
+
+#CHECK: vllezh %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x04]
+#CHECK: vllezh %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x04]
+#CHECK: vllezh %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x04]
+#CHECK: vllezh %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x10,0x04]
+#CHECK: vllezh %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x04]
+#CHECK: vllezh %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x04]
+#CHECK: vllezh %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x18,0x04]
+
+ vllezh %v0, 0
+ vllezh %v0, 4095
+ vllezh %v0, 0(%r15)
+ vllezh %v0, 0(%r15,%r1)
+ vllezh %v15, 0
+ vllezh %v31, 0
+ vllezh %v18, 0x567(%r3,%r4)
+
+#CHECK: vlm %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x36]
+#CHECK: vlm %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x36]
+#CHECK: vlm %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x36]
+#CHECK: vlm %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x36]
+#CHECK: vlm %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x36]
+#CHECK: vlm %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x36]
+
+ vlm %v0, %v0, 0
+ vlm %v0, %v0, 4095
+ vlm %v0, %v0, 0(%r15)
+ vlm %v0, %v31, 0
+ vlm %v31, %v0, 0
+ vlm %v14, %v17, 1074(%r5)
+
+#CHECK: vlpb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xdf]
+#CHECK: vlpb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xdf]
+#CHECK: vlpb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xdf]
+#CHECK: vlpb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xdf]
+#CHECK: vlpb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xdf]
+#CHECK: vlpb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xdf]
+
+ vlpb %v0, %v0
+ vlpb %v0, %v15
+ vlpb %v0, %v31
+ vlpb %v15, %v0
+ vlpb %v31, %v0
+ vlpb %v14, %v17
+
+#CHECK: vlpf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xdf]
+#CHECK: vlpf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xdf]
+#CHECK: vlpf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xdf]
+#CHECK: vlpf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xdf]
+#CHECK: vlpf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xdf]
+#CHECK: vlpf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xdf]
+
+ vlpf %v0, %v0
+ vlpf %v0, %v15
+ vlpf %v0, %v31
+ vlpf %v15, %v0
+ vlpf %v31, %v0
+ vlpf %v14, %v17
+
+#CHECK: vlpg %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xdf]
+#CHECK: vlpg %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xdf]
+#CHECK: vlpg %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xdf]
+#CHECK: vlpg %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xdf]
+#CHECK: vlpg %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xdf]
+#CHECK: vlpg %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xdf]
+
+ vlpg %v0, %v0
+ vlpg %v0, %v15
+ vlpg %v0, %v31
+ vlpg %v15, %v0
+ vlpg %v31, %v0
+ vlpg %v14, %v17
+
+#CHECK: vlph %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xdf]
+#CHECK: vlph %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xdf]
+#CHECK: vlph %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xdf]
+#CHECK: vlph %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xdf]
+#CHECK: vlph %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xdf]
+#CHECK: vlph %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xdf]
+
+ vlph %v0, %v0
+ vlph %v0, %v15
+ vlph %v0, %v31
+ vlph %v15, %v0
+ vlph %v31, %v0
+ vlph %v14, %v17
+
+#CHECK: vlr %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x56]
+#CHECK: vlr %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x56]
+#CHECK: vlr %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x56]
+#CHECK: vlr %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x56]
+#CHECK: vlr %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x56]
+#CHECK: vlr %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0x56]
+
+ vlr %v0, %v0
+ vlr %v0, %v15
+ vlr %v0, %v31
+ vlr %v15, %v0
+ vlr %v31, %v0
+ vlr %v14, %v17
+
+#CHECK: vlrepb %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x05]
+#CHECK: vlrepb %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x05]
+#CHECK: vlrepb %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x05]
+#CHECK: vlrepb %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x05]
+#CHECK: vlrepb %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x05]
+#CHECK: vlrepb %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x05]
+#CHECK: vlrepb %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x05]
+
+ vlrepb %v0, 0
+ vlrepb %v0, 4095
+ vlrepb %v0, 0(%r15)
+ vlrepb %v0, 0(%r15,%r1)
+ vlrepb %v15, 0
+ vlrepb %v31, 0
+ vlrepb %v18, 0x567(%r3,%r4)
+
+#CHECK: vlrepf %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x05]
+#CHECK: vlrepf %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x05]
+#CHECK: vlrepf %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x05]
+#CHECK: vlrepf %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x20,0x05]
+#CHECK: vlrepf %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x05]
+#CHECK: vlrepf %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x05]
+#CHECK: vlrepf %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x28,0x05]
+
+ vlrepf %v0, 0
+ vlrepf %v0, 4095
+ vlrepf %v0, 0(%r15)
+ vlrepf %v0, 0(%r15,%r1)
+ vlrepf %v15, 0
+ vlrepf %v31, 0
+ vlrepf %v18, 0x567(%r3,%r4)
+
+#CHECK: vlrepg %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x05]
+#CHECK: vlrepg %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x05]
+#CHECK: vlrepg %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x05]
+#CHECK: vlrepg %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x30,0x05]
+#CHECK: vlrepg %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x05]
+#CHECK: vlrepg %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x05]
+#CHECK: vlrepg %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x38,0x05]
+
+ vlrepg %v0, 0
+ vlrepg %v0, 4095
+ vlrepg %v0, 0(%r15)
+ vlrepg %v0, 0(%r15,%r1)
+ vlrepg %v15, 0
+ vlrepg %v31, 0
+ vlrepg %v18, 0x567(%r3,%r4)
+
+#CHECK: vlreph %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x05]
+#CHECK: vlreph %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x05]
+#CHECK: vlreph %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x05]
+#CHECK: vlreph %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x10,0x05]
+#CHECK: vlreph %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x05]
+#CHECK: vlreph %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x05]
+#CHECK: vlreph %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x18,0x05]
+
+ vlreph %v0, 0
+ vlreph %v0, 4095
+ vlreph %v0, 0(%r15)
+ vlreph %v0, 0(%r15,%r1)
+ vlreph %v15, 0
+ vlreph %v31, 0
+ vlreph %v18, 0x567(%r3,%r4)
+
+#CHECK: vlvgb %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x22]
+#CHECK: vlvgb %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x22]
+#CHECK: vlvgb %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x22]
+#CHECK: vlvgb %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x22]
+#CHECK: vlvgb %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x22]
+#CHECK: vlvgb %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x22]
+#CHECK: vlvgb %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x22]
+
+ vlvgb %v0, %r0, 0
+ vlvgb %v0, %r0, 4095
+ vlvgb %v0, %r0, 0(%r15)
+ vlvgb %v0, %r15, 0
+ vlvgb %v15, %r0, 0
+ vlvgb %v31, %r0, 0
+ vlvgb %v18, %r3, 1383(%r4)
+
+#CHECK: vlvgf %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x22]
+#CHECK: vlvgf %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x20,0x22]
+#CHECK: vlvgf %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x22]
+#CHECK: vlvgf %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x22]
+#CHECK: vlvgf %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x22]
+#CHECK: vlvgf %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x22]
+#CHECK: vlvgf %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x28,0x22]
+
+ vlvgf %v0, %r0, 0
+ vlvgf %v0, %r0, 4095
+ vlvgf %v0, %r0, 0(%r15)
+ vlvgf %v0, %r15, 0
+ vlvgf %v15, %r0, 0
+ vlvgf %v31, %r0, 0
+ vlvgf %v18, %r3, 1383(%r4)
+
+#CHECK: vlvgg %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x22]
+#CHECK: vlvgg %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x30,0x22]
+#CHECK: vlvgg %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x22]
+#CHECK: vlvgg %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x22]
+#CHECK: vlvgg %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x22]
+#CHECK: vlvgg %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x22]
+#CHECK: vlvgg %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x38,0x22]
+
+ vlvgg %v0, %r0, 0
+ vlvgg %v0, %r0, 4095
+ vlvgg %v0, %r0, 0(%r15)
+ vlvgg %v0, %r15, 0
+ vlvgg %v15, %r0, 0
+ vlvgg %v31, %r0, 0
+ vlvgg %v18, %r3, 1383(%r4)
+
+#CHECK: vlvgh %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x22]
+#CHECK: vlvgh %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x10,0x22]
+#CHECK: vlvgh %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x22]
+#CHECK: vlvgh %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x22]
+#CHECK: vlvgh %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x22]
+#CHECK: vlvgh %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x22]
+#CHECK: vlvgh %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x18,0x22]
+
+ vlvgh %v0, %r0, 0
+ vlvgh %v0, %r0, 4095
+ vlvgh %v0, %r0, 0(%r15)
+ vlvgh %v0, %r15, 0
+ vlvgh %v15, %r0, 0
+ vlvgh %v31, %r0, 0
+ vlvgh %v18, %r3, 1383(%r4)
+
+#CHECK: vlvgp %v0, %r0, %r0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x62]
+#CHECK: vlvgp %v0, %r0, %r15 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x62]
+#CHECK: vlvgp %v0, %r15, %r0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x62]
+#CHECK: vlvgp %v15, %r0, %r0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x62]
+#CHECK: vlvgp %v31, %r0, %r0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x62]
+#CHECK: vlvgp %v18, %r3, %r4 # encoding: [0xe7,0x23,0x40,0x00,0x08,0x62]
+
+ vlvgp %v0, %r0, %r0
+ vlvgp %v0, %r0, %r15
+ vlvgp %v0, %r15, %r0
+ vlvgp %v15, %r0, %r0
+ vlvgp %v31, %r0, %r0
+ vlvgp %v18, %r3, %r4
+
+#CHECK: vmaeb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xae]
+#CHECK: vmaeb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xae]
+#CHECK: vmaeb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xae]
+#CHECK: vmaeb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xae]
+#CHECK: vmaeb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xae]
+#CHECK: vmaeb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xae]
+
+ vmaeb %v0, %v0, %v0, %v0
+ vmaeb %v0, %v0, %v0, %v31
+ vmaeb %v0, %v0, %v31, %v0
+ vmaeb %v0, %v31, %v0, %v0
+ vmaeb %v31, %v0, %v0, %v0
+ vmaeb %v13, %v17, %v21, %v25
+
+#CHECK: vmaef %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xae]
+#CHECK: vmaef %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xae]
+#CHECK: vmaef %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xae]
+#CHECK: vmaef %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xae]
+#CHECK: vmaef %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xae]
+#CHECK: vmaef %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xae]
+
+ vmaef %v0, %v0, %v0, %v0
+ vmaef %v0, %v0, %v0, %v31
+ vmaef %v0, %v0, %v31, %v0
+ vmaef %v0, %v31, %v0, %v0
+ vmaef %v31, %v0, %v0, %v0
+ vmaef %v13, %v17, %v21, %v25
+
+#CHECK: vmaeh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xae]
+#CHECK: vmaeh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xae]
+#CHECK: vmaeh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xae]
+#CHECK: vmaeh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xae]
+#CHECK: vmaeh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xae]
+#CHECK: vmaeh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xae]
+
+ vmaeh %v0, %v0, %v0, %v0
+ vmaeh %v0, %v0, %v0, %v31
+ vmaeh %v0, %v0, %v31, %v0
+ vmaeh %v0, %v31, %v0, %v0
+ vmaeh %v31, %v0, %v0, %v0
+ vmaeh %v13, %v17, %v21, %v25
+
+#CHECK: vmahb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xab]
+#CHECK: vmahb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xab]
+#CHECK: vmahb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xab]
+#CHECK: vmahb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xab]
+#CHECK: vmahb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xab]
+#CHECK: vmahb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xab]
+
+ vmahb %v0, %v0, %v0, %v0
+ vmahb %v0, %v0, %v0, %v31
+ vmahb %v0, %v0, %v31, %v0
+ vmahb %v0, %v31, %v0, %v0
+ vmahb %v31, %v0, %v0, %v0
+ vmahb %v13, %v17, %v21, %v25
+
+#CHECK: vmahf %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xab]
+#CHECK: vmahf %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xab]
+#CHECK: vmahf %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xab]
+#CHECK: vmahf %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xab]
+#CHECK: vmahf %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xab]
+#CHECK: vmahf %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xab]
+
+ vmahf %v0, %v0, %v0, %v0
+ vmahf %v0, %v0, %v0, %v31
+ vmahf %v0, %v0, %v31, %v0
+ vmahf %v0, %v31, %v0, %v0
+ vmahf %v31, %v0, %v0, %v0
+ vmahf %v13, %v17, %v21, %v25
+
+#CHECK: vmahh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xab]
+#CHECK: vmahh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xab]
+#CHECK: vmahh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xab]
+#CHECK: vmahh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xab]
+#CHECK: vmahh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xab]
+#CHECK: vmahh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xab]
+
+ vmahh %v0, %v0, %v0, %v0
+ vmahh %v0, %v0, %v0, %v31
+ vmahh %v0, %v0, %v31, %v0
+ vmahh %v0, %v31, %v0, %v0
+ vmahh %v31, %v0, %v0, %v0
+ vmahh %v13, %v17, %v21, %v25
+
+#CHECK: vmalb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xaa]
+#CHECK: vmalb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xaa]
+#CHECK: vmalb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xaa]
+#CHECK: vmalb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xaa]
+#CHECK: vmalb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xaa]
+#CHECK: vmalb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xaa]
+
+ vmalb %v0, %v0, %v0, %v0
+ vmalb %v0, %v0, %v0, %v31
+ vmalb %v0, %v0, %v31, %v0
+ vmalb %v0, %v31, %v0, %v0
+ vmalb %v31, %v0, %v0, %v0
+ vmalb %v13, %v17, %v21, %v25
+
+#CHECK: vmaleb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xac]
+#CHECK: vmaleb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xac]
+#CHECK: vmaleb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xac]
+#CHECK: vmaleb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xac]
+#CHECK: vmaleb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xac]
+#CHECK: vmaleb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xac]
+
+ vmaleb %v0, %v0, %v0, %v0
+ vmaleb %v0, %v0, %v0, %v31
+ vmaleb %v0, %v0, %v31, %v0
+ vmaleb %v0, %v31, %v0, %v0
+ vmaleb %v31, %v0, %v0, %v0
+ vmaleb %v13, %v17, %v21, %v25
+
+#CHECK: vmalef %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xac]
+#CHECK: vmalef %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xac]
+#CHECK: vmalef %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xac]
+#CHECK: vmalef %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xac]
+#CHECK: vmalef %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xac]
+#CHECK: vmalef %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xac]
+
+ vmalef %v0, %v0, %v0, %v0
+ vmalef %v0, %v0, %v0, %v31
+ vmalef %v0, %v0, %v31, %v0
+ vmalef %v0, %v31, %v0, %v0
+ vmalef %v31, %v0, %v0, %v0
+ vmalef %v13, %v17, %v21, %v25
+
+#CHECK: vmaleh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xac]
+#CHECK: vmaleh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xac]
+#CHECK: vmaleh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xac]
+#CHECK: vmaleh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xac]
+#CHECK: vmaleh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xac]
+#CHECK: vmaleh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xac]
+
+ vmaleh %v0, %v0, %v0, %v0
+ vmaleh %v0, %v0, %v0, %v31
+ vmaleh %v0, %v0, %v31, %v0
+ vmaleh %v0, %v31, %v0, %v0
+ vmaleh %v31, %v0, %v0, %v0
+ vmaleh %v13, %v17, %v21, %v25
+
+#CHECK: vmalf %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xaa]
+#CHECK: vmalf %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xaa]
+#CHECK: vmalf %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xaa]
+#CHECK: vmalf %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xaa]
+#CHECK: vmalf %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xaa]
+#CHECK: vmalf %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xaa]
+
+ vmalf %v0, %v0, %v0, %v0
+ vmalf %v0, %v0, %v0, %v31
+ vmalf %v0, %v0, %v31, %v0
+ vmalf %v0, %v31, %v0, %v0
+ vmalf %v31, %v0, %v0, %v0
+ vmalf %v13, %v17, %v21, %v25
+
+#CHECK: vmalhb %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa9]
+#CHECK: vmalhb %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xa9]
+#CHECK: vmalhb %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa9]
+#CHECK: vmalhb %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa9]
+#CHECK: vmalhb %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa9]
+#CHECK: vmalhb %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xa9]
+
+ vmalhb %v0, %v0, %v0, %v0
+ vmalhb %v0, %v0, %v0, %v31
+ vmalhb %v0, %v0, %v31, %v0
+ vmalhb %v0, %v31, %v0, %v0
+ vmalhb %v31, %v0, %v0, %v0
+ vmalhb %v13, %v17, %v21, %v25
+
+#CHECK: vmalhf %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xa9]
+#CHECK: vmalhf %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xa9]
+#CHECK: vmalhf %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xa9]
+#CHECK: vmalhf %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xa9]
+#CHECK: vmalhf %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xa9]
+#CHECK: vmalhf %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xa9]
+
+ vmalhf %v0, %v0, %v0, %v0
+ vmalhf %v0, %v0, %v0, %v31
+ vmalhf %v0, %v0, %v31, %v0
+ vmalhf %v0, %v31, %v0, %v0
+ vmalhf %v31, %v0, %v0, %v0
+ vmalhf %v13, %v17, %v21, %v25
+
+#CHECK: vmalhh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xa9]
+#CHECK: vmalhh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xa9]
+#CHECK: vmalhh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xa9]
+#CHECK: vmalhh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xa9]
+#CHECK: vmalhh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xa9]
+#CHECK: vmalhh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xa9]
+
+ vmalhh %v0, %v0, %v0, %v0
+ vmalhh %v0, %v0, %v0, %v31
+ vmalhh %v0, %v0, %v31, %v0
+ vmalhh %v0, %v31, %v0, %v0
+ vmalhh %v31, %v0, %v0, %v0
+ vmalhh %v13, %v17, %v21, %v25
+
+#CHECK: vmalhw %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xaa]
+#CHECK: vmalhw %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xaa]
+#CHECK: vmalhw %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xaa]
+#CHECK: vmalhw %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xaa]
+#CHECK: vmalhw %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xaa]
+#CHECK: vmalhw %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xaa]
+
+ vmalhw %v0, %v0, %v0, %v0
+ vmalhw %v0, %v0, %v0, %v31
+ vmalhw %v0, %v0, %v31, %v0
+ vmalhw %v0, %v31, %v0, %v0
+ vmalhw %v31, %v0, %v0, %v0
+ vmalhw %v13, %v17, %v21, %v25
+
+#CHECK: vmalob %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xad]
+#CHECK: vmalob %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xad]
+#CHECK: vmalob %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xad]
+#CHECK: vmalob %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xad]
+#CHECK: vmalob %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xad]
+#CHECK: vmalob %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xad]
+
+ vmalob %v0, %v0, %v0, %v0
+ vmalob %v0, %v0, %v0, %v31
+ vmalob %v0, %v0, %v31, %v0
+ vmalob %v0, %v31, %v0, %v0
+ vmalob %v31, %v0, %v0, %v0
+ vmalob %v13, %v17, %v21, %v25
+
+#CHECK: vmalof %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xad]
+#CHECK: vmalof %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xad]
+#CHECK: vmalof %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xad]
+#CHECK: vmalof %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xad]
+#CHECK: vmalof %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xad]
+#CHECK: vmalof %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xad]
+
+ vmalof %v0, %v0, %v0, %v0
+ vmalof %v0, %v0, %v0, %v31
+ vmalof %v0, %v0, %v31, %v0
+ vmalof %v0, %v31, %v0, %v0
+ vmalof %v31, %v0, %v0, %v0
+ vmalof %v13, %v17, %v21, %v25
+
+#CHECK: vmaloh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xad]
+#CHECK: vmaloh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xad]
+#CHECK: vmaloh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xad]
+#CHECK: vmaloh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xad]
+#CHECK: vmaloh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xad]
+#CHECK: vmaloh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xad]
+
+ vmaloh %v0, %v0, %v0, %v0
+ vmaloh %v0, %v0, %v0, %v31
+ vmaloh %v0, %v0, %v31, %v0
+ vmaloh %v0, %v31, %v0, %v0
+ vmaloh %v31, %v0, %v0, %v0
+ vmaloh %v13, %v17, %v21, %v25
+
+#CHECK: vmaob %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xaf]
+#CHECK: vmaob %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0xaf]
+#CHECK: vmaob %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xaf]
+#CHECK: vmaob %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xaf]
+#CHECK: vmaob %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xaf]
+#CHECK: vmaob %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0xaf]
+
+ vmaob %v0, %v0, %v0, %v0
+ vmaob %v0, %v0, %v0, %v31
+ vmaob %v0, %v0, %v31, %v0
+ vmaob %v0, %v31, %v0, %v0
+ vmaob %v31, %v0, %v0, %v0
+ vmaob %v13, %v17, %v21, %v25
+
+#CHECK: vmaof %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0xaf]
+#CHECK: vmaof %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0xaf]
+#CHECK: vmaof %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0xaf]
+#CHECK: vmaof %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0xaf]
+#CHECK: vmaof %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0xaf]
+#CHECK: vmaof %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x52,0x00,0x97,0xaf]
+
+ vmaof %v0, %v0, %v0, %v0
+ vmaof %v0, %v0, %v0, %v31
+ vmaof %v0, %v0, %v31, %v0
+ vmaof %v0, %v31, %v0, %v0
+ vmaof %v31, %v0, %v0, %v0
+ vmaof %v13, %v17, %v21, %v25
+
+#CHECK: vmaoh %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0xaf]
+#CHECK: vmaoh %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0xaf]
+#CHECK: vmaoh %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0xaf]
+#CHECK: vmaoh %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0xaf]
+#CHECK: vmaoh %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0xaf]
+#CHECK: vmaoh %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x51,0x00,0x97,0xaf]
+
+ vmaoh %v0, %v0, %v0, %v0
+ vmaoh %v0, %v0, %v0, %v31
+ vmaoh %v0, %v0, %v31, %v0
+ vmaoh %v0, %v31, %v0, %v0
+ vmaoh %v31, %v0, %v0, %v0
+ vmaoh %v13, %v17, %v21, %v25
+
+#CHECK: vmeb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa6]
+#CHECK: vmeb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa6]
+#CHECK: vmeb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa6]
+#CHECK: vmeb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa6]
+#CHECK: vmeb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa6]
+
+ vmeb %v0, %v0, %v0
+ vmeb %v0, %v0, %v31
+ vmeb %v0, %v31, %v0
+ vmeb %v31, %v0, %v0
+ vmeb %v18, %v3, %v20
+
+#CHECK: vmef %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa6]
+#CHECK: vmef %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa6]
+#CHECK: vmef %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa6]
+#CHECK: vmef %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa6]
+#CHECK: vmef %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa6]
+
+ vmef %v0, %v0, %v0
+ vmef %v0, %v0, %v31
+ vmef %v0, %v31, %v0
+ vmef %v31, %v0, %v0
+ vmef %v18, %v3, %v20
+
+#CHECK: vmeh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa6]
+#CHECK: vmeh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa6]
+#CHECK: vmeh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa6]
+#CHECK: vmeh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa6]
+#CHECK: vmeh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa6]
+
+ vmeh %v0, %v0, %v0
+ vmeh %v0, %v0, %v31
+ vmeh %v0, %v31, %v0
+ vmeh %v31, %v0, %v0
+ vmeh %v18, %v3, %v20
+
+#CHECK: vmhb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa3]
+#CHECK: vmhb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa3]
+#CHECK: vmhb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa3]
+#CHECK: vmhb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa3]
+#CHECK: vmhb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa3]
+
+ vmhb %v0, %v0, %v0
+ vmhb %v0, %v0, %v31
+ vmhb %v0, %v31, %v0
+ vmhb %v31, %v0, %v0
+ vmhb %v18, %v3, %v20
+
+#CHECK: vmhf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa3]
+#CHECK: vmhf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa3]
+#CHECK: vmhf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa3]
+#CHECK: vmhf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa3]
+#CHECK: vmhf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa3]
+
+ vmhf %v0, %v0, %v0
+ vmhf %v0, %v0, %v31
+ vmhf %v0, %v31, %v0
+ vmhf %v31, %v0, %v0
+ vmhf %v18, %v3, %v20
+
+#CHECK: vmhh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa3]
+#CHECK: vmhh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa3]
+#CHECK: vmhh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa3]
+#CHECK: vmhh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa3]
+#CHECK: vmhh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa3]
+
+ vmhh %v0, %v0, %v0
+ vmhh %v0, %v0, %v31
+ vmhh %v0, %v31, %v0
+ vmhh %v31, %v0, %v0
+ vmhh %v18, %v3, %v20
+
+#CHECK: vmlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa2]
+#CHECK: vmlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa2]
+#CHECK: vmlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa2]
+#CHECK: vmlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa2]
+#CHECK: vmlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa2]
+
+ vmlb %v0, %v0, %v0
+ vmlb %v0, %v0, %v31
+ vmlb %v0, %v31, %v0
+ vmlb %v31, %v0, %v0
+ vmlb %v18, %v3, %v20
+
+#CHECK: vmleb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa4]
+#CHECK: vmleb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa4]
+#CHECK: vmleb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa4]
+#CHECK: vmleb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa4]
+#CHECK: vmleb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa4]
+
+ vmleb %v0, %v0, %v0
+ vmleb %v0, %v0, %v31
+ vmleb %v0, %v31, %v0
+ vmleb %v31, %v0, %v0
+ vmleb %v18, %v3, %v20
+
+#CHECK: vmlef %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa4]
+#CHECK: vmlef %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa4]
+#CHECK: vmlef %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa4]
+#CHECK: vmlef %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa4]
+#CHECK: vmlef %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa4]
+
+ vmlef %v0, %v0, %v0
+ vmlef %v0, %v0, %v31
+ vmlef %v0, %v31, %v0
+ vmlef %v31, %v0, %v0
+ vmlef %v18, %v3, %v20
+
+#CHECK: vmleh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa4]
+#CHECK: vmleh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa4]
+#CHECK: vmleh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa4]
+#CHECK: vmleh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa4]
+#CHECK: vmleh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa4]
+
+ vmleh %v0, %v0, %v0
+ vmleh %v0, %v0, %v31
+ vmleh %v0, %v31, %v0
+ vmleh %v31, %v0, %v0
+ vmleh %v18, %v3, %v20
+
+#CHECK: vmlf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa2]
+#CHECK: vmlf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa2]
+#CHECK: vmlf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa2]
+#CHECK: vmlf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa2]
+#CHECK: vmlf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa2]
+
+ vmlf %v0, %v0, %v0
+ vmlf %v0, %v0, %v31
+ vmlf %v0, %v31, %v0
+ vmlf %v31, %v0, %v0
+ vmlf %v18, %v3, %v20
+
+#CHECK: vmlhb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa1]
+#CHECK: vmlhb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa1]
+#CHECK: vmlhb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa1]
+#CHECK: vmlhb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa1]
+#CHECK: vmlhb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa1]
+
+ vmlhb %v0, %v0, %v0
+ vmlhb %v0, %v0, %v31
+ vmlhb %v0, %v31, %v0
+ vmlhb %v31, %v0, %v0
+ vmlhb %v18, %v3, %v20
+
+#CHECK: vmlhf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa1]
+#CHECK: vmlhf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa1]
+#CHECK: vmlhf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa1]
+#CHECK: vmlhf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa1]
+#CHECK: vmlhf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa1]
+
+ vmlhf %v0, %v0, %v0
+ vmlhf %v0, %v0, %v31
+ vmlhf %v0, %v31, %v0
+ vmlhf %v31, %v0, %v0
+ vmlhf %v18, %v3, %v20
+
+#CHECK: vmlhh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa1]
+#CHECK: vmlhh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa1]
+#CHECK: vmlhh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa1]
+#CHECK: vmlhh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa1]
+#CHECK: vmlhh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa1]
+
+ vmlhh %v0, %v0, %v0
+ vmlhh %v0, %v0, %v31
+ vmlhh %v0, %v31, %v0
+ vmlhh %v31, %v0, %v0
+ vmlhh %v18, %v3, %v20
+
+#CHECK: vmlhw %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa2]
+#CHECK: vmlhw %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa2]
+#CHECK: vmlhw %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa2]
+#CHECK: vmlhw %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa2]
+#CHECK: vmlhw %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa2]
+
+ vmlhw %v0, %v0, %v0
+ vmlhw %v0, %v0, %v31
+ vmlhw %v0, %v31, %v0
+ vmlhw %v31, %v0, %v0
+ vmlhw %v18, %v3, %v20
+
+#CHECK: vmlob %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa5]
+#CHECK: vmlob %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa5]
+#CHECK: vmlob %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa5]
+#CHECK: vmlob %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa5]
+#CHECK: vmlob %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa5]
+
+ vmlob %v0, %v0, %v0
+ vmlob %v0, %v0, %v31
+ vmlob %v0, %v31, %v0
+ vmlob %v31, %v0, %v0
+ vmlob %v18, %v3, %v20
+
+#CHECK: vmlof %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa5]
+#CHECK: vmlof %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa5]
+#CHECK: vmlof %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa5]
+#CHECK: vmlof %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa5]
+#CHECK: vmlof %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa5]
+
+ vmlof %v0, %v0, %v0
+ vmlof %v0, %v0, %v31
+ vmlof %v0, %v31, %v0
+ vmlof %v31, %v0, %v0
+ vmlof %v18, %v3, %v20
+
+#CHECK: vmloh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa5]
+#CHECK: vmloh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa5]
+#CHECK: vmloh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa5]
+#CHECK: vmloh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa5]
+#CHECK: vmloh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa5]
+
+ vmloh %v0, %v0, %v0
+ vmloh %v0, %v0, %v31
+ vmloh %v0, %v31, %v0
+ vmloh %v31, %v0, %v0
+ vmloh %v18, %v3, %v20
+
+#CHECK: vmnb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xfe]
+#CHECK: vmnb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xfe]
+#CHECK: vmnb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xfe]
+#CHECK: vmnb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xfe]
+#CHECK: vmnb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xfe]
+
+ vmnb %v0, %v0, %v0
+ vmnb %v0, %v0, %v31
+ vmnb %v0, %v31, %v0
+ vmnb %v31, %v0, %v0
+ vmnb %v18, %v3, %v20
+
+#CHECK: vmnf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xfe]
+#CHECK: vmnf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xfe]
+#CHECK: vmnf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xfe]
+#CHECK: vmnf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xfe]
+#CHECK: vmnf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xfe]
+
+ vmnf %v0, %v0, %v0
+ vmnf %v0, %v0, %v31
+ vmnf %v0, %v31, %v0
+ vmnf %v31, %v0, %v0
+ vmnf %v18, %v3, %v20
+
+#CHECK: vmng %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xfe]
+#CHECK: vmng %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xfe]
+#CHECK: vmng %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xfe]
+#CHECK: vmng %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xfe]
+#CHECK: vmng %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xfe]
+
+ vmng %v0, %v0, %v0
+ vmng %v0, %v0, %v31
+ vmng %v0, %v31, %v0
+ vmng %v31, %v0, %v0
+ vmng %v18, %v3, %v20
+
+#CHECK: vmnh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xfe]
+#CHECK: vmnh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xfe]
+#CHECK: vmnh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xfe]
+#CHECK: vmnh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xfe]
+#CHECK: vmnh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xfe]
+
+ vmnh %v0, %v0, %v0
+ vmnh %v0, %v0, %v31
+ vmnh %v0, %v31, %v0
+ vmnh %v31, %v0, %v0
+ vmnh %v18, %v3, %v20
+
+#CHECK: vmnlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xfc]
+#CHECK: vmnlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xfc]
+#CHECK: vmnlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xfc]
+#CHECK: vmnlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xfc]
+#CHECK: vmnlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xfc]
+
+ vmnlb %v0, %v0, %v0
+ vmnlb %v0, %v0, %v31
+ vmnlb %v0, %v31, %v0
+ vmnlb %v31, %v0, %v0
+ vmnlb %v18, %v3, %v20
+
+#CHECK: vmnlf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xfc]
+#CHECK: vmnlf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xfc]
+#CHECK: vmnlf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xfc]
+#CHECK: vmnlf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xfc]
+#CHECK: vmnlf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xfc]
+
+ vmnlf %v0, %v0, %v0
+ vmnlf %v0, %v0, %v31
+ vmnlf %v0, %v31, %v0
+ vmnlf %v31, %v0, %v0
+ vmnlf %v18, %v3, %v20
+
+#CHECK: vmnlg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xfc]
+#CHECK: vmnlg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xfc]
+#CHECK: vmnlg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xfc]
+#CHECK: vmnlg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xfc]
+#CHECK: vmnlg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xfc]
+
+ vmnlg %v0, %v0, %v0
+ vmnlg %v0, %v0, %v31
+ vmnlg %v0, %v31, %v0
+ vmnlg %v31, %v0, %v0
+ vmnlg %v18, %v3, %v20
+
+#CHECK: vmnlh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xfc]
+#CHECK: vmnlh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xfc]
+#CHECK: vmnlh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xfc]
+#CHECK: vmnlh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xfc]
+#CHECK: vmnlh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xfc]
+
+ vmnlh %v0, %v0, %v0
+ vmnlh %v0, %v0, %v31
+ vmnlh %v0, %v31, %v0
+ vmnlh %v31, %v0, %v0
+ vmnlh %v18, %v3, %v20
+
+#CHECK: vmob %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xa7]
+#CHECK: vmob %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xa7]
+#CHECK: vmob %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xa7]
+#CHECK: vmob %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xa7]
+#CHECK: vmob %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xa7]
+
+ vmob %v0, %v0, %v0
+ vmob %v0, %v0, %v31
+ vmob %v0, %v31, %v0
+ vmob %v31, %v0, %v0
+ vmob %v18, %v3, %v20
+
+#CHECK: vmof %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xa7]
+#CHECK: vmof %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xa7]
+#CHECK: vmof %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xa7]
+#CHECK: vmof %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xa7]
+#CHECK: vmof %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xa7]
+
+ vmof %v0, %v0, %v0
+ vmof %v0, %v0, %v31
+ vmof %v0, %v31, %v0
+ vmof %v31, %v0, %v0
+ vmof %v18, %v3, %v20
+
+#CHECK: vmoh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xa7]
+#CHECK: vmoh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xa7]
+#CHECK: vmoh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xa7]
+#CHECK: vmoh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xa7]
+#CHECK: vmoh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xa7]
+
+ vmoh %v0, %v0, %v0
+ vmoh %v0, %v0, %v31
+ vmoh %v0, %v31, %v0
+ vmoh %v31, %v0, %v0
+ vmoh %v18, %v3, %v20
+
+#CHECK: vmrhb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x61]
+#CHECK: vmrhb %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x61]
+#CHECK: vmrhb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x61]
+#CHECK: vmrhb %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x61]
+#CHECK: vmrhb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x61]
+#CHECK: vmrhb %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x61]
+#CHECK: vmrhb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x61]
+#CHECK: vmrhb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x61]
+
+ vmrhb %v0, %v0, %v0
+ vmrhb %v0, %v0, %v15
+ vmrhb %v0, %v0, %v31
+ vmrhb %v0, %v15, %v0
+ vmrhb %v0, %v31, %v0
+ vmrhb %v15, %v0, %v0
+ vmrhb %v31, %v0, %v0
+ vmrhb %v18, %v3, %v20
+
+#CHECK: vmrhf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x61]
+#CHECK: vmrhf %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x61]
+#CHECK: vmrhf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x61]
+#CHECK: vmrhf %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x61]
+#CHECK: vmrhf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x61]
+#CHECK: vmrhf %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x61]
+#CHECK: vmrhf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x61]
+#CHECK: vmrhf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x61]
+
+ vmrhf %v0, %v0, %v0
+ vmrhf %v0, %v0, %v15
+ vmrhf %v0, %v0, %v31
+ vmrhf %v0, %v15, %v0
+ vmrhf %v0, %v31, %v0
+ vmrhf %v15, %v0, %v0
+ vmrhf %v31, %v0, %v0
+ vmrhf %v18, %v3, %v20
+
+#CHECK: vmrhg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x61]
+#CHECK: vmrhg %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x61]
+#CHECK: vmrhg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x61]
+#CHECK: vmrhg %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x61]
+#CHECK: vmrhg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x61]
+#CHECK: vmrhg %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x61]
+#CHECK: vmrhg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x61]
+#CHECK: vmrhg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x61]
+
+ vmrhg %v0, %v0, %v0
+ vmrhg %v0, %v0, %v15
+ vmrhg %v0, %v0, %v31
+ vmrhg %v0, %v15, %v0
+ vmrhg %v0, %v31, %v0
+ vmrhg %v15, %v0, %v0
+ vmrhg %v31, %v0, %v0
+ vmrhg %v18, %v3, %v20
+
+#CHECK: vmrhh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x61]
+#CHECK: vmrhh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x61]
+#CHECK: vmrhh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x61]
+#CHECK: vmrhh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x61]
+#CHECK: vmrhh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x61]
+#CHECK: vmrhh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x61]
+#CHECK: vmrhh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x61]
+#CHECK: vmrhh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x61]
+
+ vmrhh %v0, %v0, %v0
+ vmrhh %v0, %v0, %v15
+ vmrhh %v0, %v0, %v31
+ vmrhh %v0, %v15, %v0
+ vmrhh %v0, %v31, %v0
+ vmrhh %v15, %v0, %v0
+ vmrhh %v31, %v0, %v0
+ vmrhh %v18, %v3, %v20
+
+#CHECK: vmrlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x60]
+#CHECK: vmrlb %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x60]
+#CHECK: vmrlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x60]
+#CHECK: vmrlb %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x60]
+#CHECK: vmrlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x60]
+#CHECK: vmrlb %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x60]
+#CHECK: vmrlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x60]
+#CHECK: vmrlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x60]
+
+ vmrlb %v0, %v0, %v0
+ vmrlb %v0, %v0, %v15
+ vmrlb %v0, %v0, %v31
+ vmrlb %v0, %v15, %v0
+ vmrlb %v0, %v31, %v0
+ vmrlb %v15, %v0, %v0
+ vmrlb %v31, %v0, %v0
+ vmrlb %v18, %v3, %v20
+
+#CHECK: vmrlf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x60]
+#CHECK: vmrlf %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x60]
+#CHECK: vmrlf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x60]
+#CHECK: vmrlf %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x60]
+#CHECK: vmrlf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x60]
+#CHECK: vmrlf %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x60]
+#CHECK: vmrlf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x60]
+#CHECK: vmrlf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x60]
+
+ vmrlf %v0, %v0, %v0
+ vmrlf %v0, %v0, %v15
+ vmrlf %v0, %v0, %v31
+ vmrlf %v0, %v15, %v0
+ vmrlf %v0, %v31, %v0
+ vmrlf %v15, %v0, %v0
+ vmrlf %v31, %v0, %v0
+ vmrlf %v18, %v3, %v20
+
+#CHECK: vmrlg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x60]
+#CHECK: vmrlg %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x60]
+#CHECK: vmrlg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x60]
+#CHECK: vmrlg %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x60]
+#CHECK: vmrlg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x60]
+#CHECK: vmrlg %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x60]
+#CHECK: vmrlg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x60]
+#CHECK: vmrlg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x60]
+
+ vmrlg %v0, %v0, %v0
+ vmrlg %v0, %v0, %v15
+ vmrlg %v0, %v0, %v31
+ vmrlg %v0, %v15, %v0
+ vmrlg %v0, %v31, %v0
+ vmrlg %v15, %v0, %v0
+ vmrlg %v31, %v0, %v0
+ vmrlg %v18, %v3, %v20
+
+#CHECK: vmrlh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x60]
+#CHECK: vmrlh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x60]
+#CHECK: vmrlh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x60]
+#CHECK: vmrlh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x60]
+#CHECK: vmrlh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x60]
+#CHECK: vmrlh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x60]
+#CHECK: vmrlh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x60]
+#CHECK: vmrlh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x60]
+
+ vmrlh %v0, %v0, %v0
+ vmrlh %v0, %v0, %v15
+ vmrlh %v0, %v0, %v31
+ vmrlh %v0, %v15, %v0
+ vmrlh %v0, %v31, %v0
+ vmrlh %v15, %v0, %v0
+ vmrlh %v31, %v0, %v0
+ vmrlh %v18, %v3, %v20
+
+#CHECK: vmxb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xff]
+#CHECK: vmxb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xff]
+#CHECK: vmxb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xff]
+#CHECK: vmxb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xff]
+#CHECK: vmxb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xff]
+
+ vmxb %v0, %v0, %v0
+ vmxb %v0, %v0, %v31
+ vmxb %v0, %v31, %v0
+ vmxb %v31, %v0, %v0
+ vmxb %v18, %v3, %v20
+
+#CHECK: vmxf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xff]
+#CHECK: vmxf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xff]
+#CHECK: vmxf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xff]
+#CHECK: vmxf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xff]
+#CHECK: vmxf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xff]
+
+ vmxf %v0, %v0, %v0
+ vmxf %v0, %v0, %v31
+ vmxf %v0, %v31, %v0
+ vmxf %v31, %v0, %v0
+ vmxf %v18, %v3, %v20
+
+#CHECK: vmxg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xff]
+#CHECK: vmxg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xff]
+#CHECK: vmxg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xff]
+#CHECK: vmxg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xff]
+#CHECK: vmxg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xff]
+
+ vmxg %v0, %v0, %v0
+ vmxg %v0, %v0, %v31
+ vmxg %v0, %v31, %v0
+ vmxg %v31, %v0, %v0
+ vmxg %v18, %v3, %v20
+
+#CHECK: vmxh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xff]
+#CHECK: vmxh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xff]
+#CHECK: vmxh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xff]
+#CHECK: vmxh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xff]
+#CHECK: vmxh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xff]
+
+ vmxh %v0, %v0, %v0
+ vmxh %v0, %v0, %v31
+ vmxh %v0, %v31, %v0
+ vmxh %v31, %v0, %v0
+ vmxh %v18, %v3, %v20
+
+#CHECK: vmxlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xfd]
+#CHECK: vmxlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xfd]
+#CHECK: vmxlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xfd]
+#CHECK: vmxlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xfd]
+#CHECK: vmxlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xfd]
+
+ vmxlb %v0, %v0, %v0
+ vmxlb %v0, %v0, %v31
+ vmxlb %v0, %v31, %v0
+ vmxlb %v31, %v0, %v0
+ vmxlb %v18, %v3, %v20
+
+#CHECK: vmxlf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xfd]
+#CHECK: vmxlf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xfd]
+#CHECK: vmxlf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xfd]
+#CHECK: vmxlf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xfd]
+#CHECK: vmxlf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xfd]
+
+ vmxlf %v0, %v0, %v0
+ vmxlf %v0, %v0, %v31
+ vmxlf %v0, %v31, %v0
+ vmxlf %v31, %v0, %v0
+ vmxlf %v18, %v3, %v20
+
+#CHECK: vmxlg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xfd]
+#CHECK: vmxlg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xfd]
+#CHECK: vmxlg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xfd]
+#CHECK: vmxlg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xfd]
+#CHECK: vmxlg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xfd]
+
+ vmxlg %v0, %v0, %v0
+ vmxlg %v0, %v0, %v31
+ vmxlg %v0, %v31, %v0
+ vmxlg %v31, %v0, %v0
+ vmxlg %v18, %v3, %v20
+
+#CHECK: vmxlh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xfd]
+#CHECK: vmxlh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xfd]
+#CHECK: vmxlh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xfd]
+#CHECK: vmxlh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xfd]
+#CHECK: vmxlh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xfd]
+
+ vmxlh %v0, %v0, %v0
+ vmxlh %v0, %v0, %v31
+ vmxlh %v0, %v31, %v0
+ vmxlh %v31, %v0, %v0
+ vmxlh %v18, %v3, %v20
+
+#CHECK: vn %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x68]
+#CHECK: vn %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x68]
+#CHECK: vn %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x68]
+#CHECK: vn %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x68]
+#CHECK: vn %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x68]
+
+ vn %v0, %v0, %v0
+ vn %v0, %v0, %v31
+ vn %v0, %v31, %v0
+ vn %v31, %v0, %v0
+ vn %v18, %v3, %v20
+
+#CHECK: vnc %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x69]
+#CHECK: vnc %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x69]
+#CHECK: vnc %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x69]
+#CHECK: vnc %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x69]
+#CHECK: vnc %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x69]
+
+ vnc %v0, %v0, %v0
+ vnc %v0, %v0, %v31
+ vnc %v0, %v31, %v0
+ vnc %v31, %v0, %v0
+ vnc %v18, %v3, %v20
+
+#CHECK: vno %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x6b]
+#CHECK: vno %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x6b]
+#CHECK: vno %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x6b]
+#CHECK: vno %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x6b]
+#CHECK: vno %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x6b]
+
+ vno %v0, %v0, %v0
+ vno %v0, %v0, %v31
+ vno %v0, %v31, %v0
+ vno %v31, %v0, %v0
+ vno %v18, %v3, %v20
+
+#CHECK: vo %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x6a]
+#CHECK: vo %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x6a]
+#CHECK: vo %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x6a]
+#CHECK: vo %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x6a]
+#CHECK: vo %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x6a]
+
+ vo %v0, %v0, %v0
+ vo %v0, %v0, %v31
+ vo %v0, %v31, %v0
+ vo %v31, %v0, %v0
+ vo %v18, %v3, %v20
+
+#CHECK: vone %v0 # encoding: [0xe7,0x00,0xff,0xff,0x00,0x44]
+#CHECK: vone %v15 # encoding: [0xe7,0xf0,0xff,0xff,0x00,0x44]
+#CHECK: vone %v22 # encoding: [0xe7,0x60,0xff,0xff,0x08,0x44]
+#CHECK: vone %v31 # encoding: [0xe7,0xf0,0xff,0xff,0x08,0x44]
+
+ vone %v0
+ vone %v15
+ vone %v22
+ vone %v31
+
+#CHECK: vpdi %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x84]
+#CHECK: vpdi %v0, %v0, %v0, 5 # encoding: [0xe7,0x00,0x00,0x00,0x50,0x84]
+#CHECK: vpdi %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x84]
+#CHECK: vpdi %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x84]
+#CHECK: vpdi %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x84]
+#CHECK: vpdi %v13, %v17, %v21, 4 # encoding: [0xe7,0xd1,0x50,0x00,0x46,0x84]
+
+ vpdi %v0, %v0, %v0, 0
+ vpdi %v0, %v0, %v0, 5
+ vpdi %v0, %v0, %v31, 0
+ vpdi %v0, %v31, %v0, 0
+ vpdi %v31, %v0, %v0, 0
+ vpdi %v13, %v17, %v21, 4
+
+#CHECK: vperm %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x8c]
+#CHECK: vperm %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0x8c]
+#CHECK: vperm %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x8c]
+#CHECK: vperm %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x8c]
+#CHECK: vperm %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x8c]
+#CHECK: vperm %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0x8c]
+
+ vperm %v0, %v0, %v0, %v0
+ vperm %v0, %v0, %v0, %v31
+ vperm %v0, %v0, %v31, %v0
+ vperm %v0, %v31, %v0, %v0
+ vperm %v31, %v0, %v0, %v0
+ vperm %v13, %v17, %v21, %v25
+
+#CHECK: vpkf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x94]
+#CHECK: vpkf %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x94]
+#CHECK: vpkf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x94]
+#CHECK: vpkf %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x94]
+#CHECK: vpkf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x94]
+#CHECK: vpkf %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x94]
+#CHECK: vpkf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x94]
+#CHECK: vpkf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x94]
+
+ vpkf %v0, %v0, %v0
+ vpkf %v0, %v0, %v15
+ vpkf %v0, %v0, %v31
+ vpkf %v0, %v15, %v0
+ vpkf %v0, %v31, %v0
+ vpkf %v15, %v0, %v0
+ vpkf %v31, %v0, %v0
+ vpkf %v18, %v3, %v20
+
+#CHECK: vpkg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x94]
+#CHECK: vpkg %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x94]
+#CHECK: vpkg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x94]
+#CHECK: vpkg %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x94]
+#CHECK: vpkg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x94]
+#CHECK: vpkg %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x94]
+#CHECK: vpkg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x94]
+#CHECK: vpkg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x94]
+
+ vpkg %v0, %v0, %v0
+ vpkg %v0, %v0, %v15
+ vpkg %v0, %v0, %v31
+ vpkg %v0, %v15, %v0
+ vpkg %v0, %v31, %v0
+ vpkg %v15, %v0, %v0
+ vpkg %v31, %v0, %v0
+ vpkg %v18, %v3, %v20
+
+#CHECK: vpkh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x94]
+#CHECK: vpkh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x94]
+#CHECK: vpkh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x94]
+#CHECK: vpkh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x94]
+#CHECK: vpkh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x94]
+#CHECK: vpkh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x94]
+#CHECK: vpkh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x94]
+#CHECK: vpkh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x94]
+
+ vpkh %v0, %v0, %v0
+ vpkh %v0, %v0, %v15
+ vpkh %v0, %v0, %v31
+ vpkh %v0, %v15, %v0
+ vpkh %v0, %v31, %v0
+ vpkh %v15, %v0, %v0
+ vpkh %v31, %v0, %v0
+ vpkh %v18, %v3, %v20
+
+#CHECK: vpklsf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x95]
+#CHECK: vpklsf %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x95]
+#CHECK: vpklsf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x95]
+#CHECK: vpklsf %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x95]
+#CHECK: vpklsf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x95]
+#CHECK: vpklsf %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x95]
+#CHECK: vpklsf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x95]
+#CHECK: vpklsf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x95]
+#CHECK: vpklsfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0x95]
+
+ vpklsf %v0, %v0, %v0
+ vpklsf %v0, %v0, %v15
+ vpklsf %v0, %v0, %v31
+ vpklsf %v0, %v15, %v0
+ vpklsf %v0, %v31, %v0
+ vpklsf %v15, %v0, %v0
+ vpklsf %v31, %v0, %v0
+ vpklsf %v18, %v3, %v20
+ vpklsfs %v5, %v22, %v7
+
+#CHECK: vpklsg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x95]
+#CHECK: vpklsg %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x95]
+#CHECK: vpklsg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x95]
+#CHECK: vpklsg %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x95]
+#CHECK: vpklsg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x95]
+#CHECK: vpklsg %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x95]
+#CHECK: vpklsg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x95]
+#CHECK: vpklsg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x95]
+#CHECK: vpklsgs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x34,0x95]
+
+ vpklsg %v0, %v0, %v0
+ vpklsg %v0, %v0, %v15
+ vpklsg %v0, %v0, %v31
+ vpklsg %v0, %v15, %v0
+ vpklsg %v0, %v31, %v0
+ vpklsg %v15, %v0, %v0
+ vpklsg %v31, %v0, %v0
+ vpklsg %v18, %v3, %v20
+ vpklsgs %v5, %v22, %v7
+
+#CHECK: vpklsh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x95]
+#CHECK: vpklsh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x95]
+#CHECK: vpklsh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x95]
+#CHECK: vpklsh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x95]
+#CHECK: vpklsh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x95]
+#CHECK: vpklsh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x95]
+#CHECK: vpklsh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x95]
+#CHECK: vpklsh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x95]
+#CHECK: vpklshs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0x95]
+
+ vpklsh %v0, %v0, %v0
+ vpklsh %v0, %v0, %v15
+ vpklsh %v0, %v0, %v31
+ vpklsh %v0, %v15, %v0
+ vpklsh %v0, %v31, %v0
+ vpklsh %v15, %v0, %v0
+ vpklsh %v31, %v0, %v0
+ vpklsh %v18, %v3, %v20
+ vpklshs %v5, %v22, %v7
+
+#CHECK: vpksf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x97]
+#CHECK: vpksf %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x20,0x97]
+#CHECK: vpksf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x97]
+#CHECK: vpksf %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x97]
+#CHECK: vpksf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x97]
+#CHECK: vpksf %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x97]
+#CHECK: vpksf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x97]
+#CHECK: vpksf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x97]
+#CHECK: vpksfs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x24,0x97]
+
+ vpksf %v0, %v0, %v0
+ vpksf %v0, %v0, %v15
+ vpksf %v0, %v0, %v31
+ vpksf %v0, %v15, %v0
+ vpksf %v0, %v31, %v0
+ vpksf %v15, %v0, %v0
+ vpksf %v31, %v0, %v0
+ vpksf %v18, %v3, %v20
+ vpksfs %v5, %v22, %v7
+
+#CHECK: vpksg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x97]
+#CHECK: vpksg %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x30,0x97]
+#CHECK: vpksg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x97]
+#CHECK: vpksg %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x97]
+#CHECK: vpksg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x97]
+#CHECK: vpksg %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x97]
+#CHECK: vpksg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x97]
+#CHECK: vpksg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x97]
+#CHECK: vpksgs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x34,0x97]
+
+ vpksg %v0, %v0, %v0
+ vpksg %v0, %v0, %v15
+ vpksg %v0, %v0, %v31
+ vpksg %v0, %v15, %v0
+ vpksg %v0, %v31, %v0
+ vpksg %v15, %v0, %v0
+ vpksg %v31, %v0, %v0
+ vpksg %v18, %v3, %v20
+ vpksgs %v5, %v22, %v7
+
+#CHECK: vpksh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x97]
+#CHECK: vpksh %v0, %v0, %v15 # encoding: [0xe7,0x00,0xf0,0x00,0x10,0x97]
+#CHECK: vpksh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x97]
+#CHECK: vpksh %v0, %v15, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x97]
+#CHECK: vpksh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x97]
+#CHECK: vpksh %v15, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x97]
+#CHECK: vpksh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x97]
+#CHECK: vpksh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x97]
+#CHECK: vpkshs %v5, %v22, %v7 # encoding: [0xe7,0x56,0x70,0x10,0x14,0x97]
+
+ vpksh %v0, %v0, %v0
+ vpksh %v0, %v0, %v15
+ vpksh %v0, %v0, %v31
+ vpksh %v0, %v15, %v0
+ vpksh %v0, %v31, %v0
+ vpksh %v15, %v0, %v0
+ vpksh %v31, %v0, %v0
+ vpksh %v18, %v3, %v20
+ vpkshs %v5, %v22, %v7
+
+#CHECK: vpopct %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x50]
+#CHECK: vpopct %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x50]
+#CHECK: vpopct %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x50]
+#CHECK: vpopct %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x50]
+#CHECK: vpopct %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x50]
+#CHECK: vpopct %v14, %v17, 0 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0x50]
+
+ vpopct %v0, %v0, 0
+ vpopct %v0, %v15, 0
+ vpopct %v0, %v31, 0
+ vpopct %v15, %v0, 0
+ vpopct %v31, %v0, 0
+ vpopct %v14, %v17, 0
+
+#CHECK: vrepb %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x4d]
+#CHECK: vrepb %v0, %v0, 65535 # encoding: [0xe7,0x00,0xff,0xff,0x00,0x4d]
+#CHECK: vrepb %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x4d]
+#CHECK: vrepb %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x4d]
+#CHECK: vrepb %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x4d]
+#CHECK: vrepb %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x4d]
+#CHECK: vrepb %v4, %v21, 26505 # encoding: [0xe7,0x45,0x67,0x89,0x04,0x4d]
+
+ vrepb %v0, %v0, 0
+ vrepb %v0, %v0, 65535
+ vrepb %v0, %v15, 0
+ vrepb %v0, %v31, 0
+ vrepb %v15, %v0, 0
+ vrepb %v31, %v0, 0
+ vrepb %v4, %v21, 0x6789
+
+#CHECK: vrepf %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x4d]
+#CHECK: vrepf %v0, %v0, 65535 # encoding: [0xe7,0x00,0xff,0xff,0x20,0x4d]
+#CHECK: vrepf %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x4d]
+#CHECK: vrepf %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x4d]
+#CHECK: vrepf %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x4d]
+#CHECK: vrepf %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x4d]
+#CHECK: vrepf %v4, %v21, 26505 # encoding: [0xe7,0x45,0x67,0x89,0x24,0x4d]
+
+ vrepf %v0, %v0, 0
+ vrepf %v0, %v0, 65535
+ vrepf %v0, %v15, 0
+ vrepf %v0, %v31, 0
+ vrepf %v15, %v0, 0
+ vrepf %v31, %v0, 0
+ vrepf %v4, %v21, 0x6789
+
+#CHECK: vrepg %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x4d]
+#CHECK: vrepg %v0, %v0, 65535 # encoding: [0xe7,0x00,0xff,0xff,0x30,0x4d]
+#CHECK: vrepg %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0x4d]
+#CHECK: vrepg %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x4d]
+#CHECK: vrepg %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x4d]
+#CHECK: vrepg %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x4d]
+#CHECK: vrepg %v4, %v21, 26505 # encoding: [0xe7,0x45,0x67,0x89,0x34,0x4d]
+
+ vrepg %v0, %v0, 0
+ vrepg %v0, %v0, 65535
+ vrepg %v0, %v15, 0
+ vrepg %v0, %v31, 0
+ vrepg %v15, %v0, 0
+ vrepg %v31, %v0, 0
+ vrepg %v4, %v21, 0x6789
+
+#CHECK: vreph %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x4d]
+#CHECK: vreph %v0, %v0, 65535 # encoding: [0xe7,0x00,0xff,0xff,0x10,0x4d]
+#CHECK: vreph %v0, %v15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x4d]
+#CHECK: vreph %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x4d]
+#CHECK: vreph %v15, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x4d]
+#CHECK: vreph %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x4d]
+#CHECK: vreph %v4, %v21, 26505 # encoding: [0xe7,0x45,0x67,0x89,0x14,0x4d]
+
+ vreph %v0, %v0, 0
+ vreph %v0, %v0, 65535
+ vreph %v0, %v15, 0
+ vreph %v0, %v31, 0
+ vreph %v15, %v0, 0
+ vreph %v31, %v0, 0
+ vreph %v4, %v21, 0x6789
+
+#CHECK: vrepib %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x45]
+#CHECK: vrepib %v0, -32768 # encoding: [0xe7,0x00,0x80,0x00,0x00,0x45]
+#CHECK: vrepib %v0, 32767 # encoding: [0xe7,0x00,0x7f,0xff,0x00,0x45]
+#CHECK: vrepib %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x45]
+#CHECK: vrepib %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x45]
+#CHECK: vrepib %v18, 13398 # encoding: [0xe7,0x20,0x34,0x56,0x08,0x45]
+
+ vrepib %v0, 0
+ vrepib %v0, -32768
+ vrepib %v0, 32767
+ vrepib %v15, 0
+ vrepib %v31, 0
+ vrepib %v18, 0x3456
+
+#CHECK: vrepif %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x45]
+#CHECK: vrepif %v0, -32768 # encoding: [0xe7,0x00,0x80,0x00,0x20,0x45]
+#CHECK: vrepif %v0, 32767 # encoding: [0xe7,0x00,0x7f,0xff,0x20,0x45]
+#CHECK: vrepif %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x45]
+#CHECK: vrepif %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x45]
+#CHECK: vrepif %v18, 13398 # encoding: [0xe7,0x20,0x34,0x56,0x28,0x45]
+
+ vrepif %v0, 0
+ vrepif %v0, -32768
+ vrepif %v0, 32767
+ vrepif %v15, 0
+ vrepif %v31, 0
+ vrepif %v18, 0x3456
+
+#CHECK: vrepig %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x45]
+#CHECK: vrepig %v0, -32768 # encoding: [0xe7,0x00,0x80,0x00,0x30,0x45]
+#CHECK: vrepig %v0, 32767 # encoding: [0xe7,0x00,0x7f,0xff,0x30,0x45]
+#CHECK: vrepig %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0x45]
+#CHECK: vrepig %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x45]
+#CHECK: vrepig %v18, 13398 # encoding: [0xe7,0x20,0x34,0x56,0x38,0x45]
+
+ vrepig %v0, 0
+ vrepig %v0, -32768
+ vrepig %v0, 32767
+ vrepig %v15, 0
+ vrepig %v31, 0
+ vrepig %v18, 0x3456
+
+#CHECK: vrepih %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x45]
+#CHECK: vrepih %v0, -32768 # encoding: [0xe7,0x00,0x80,0x00,0x10,0x45]
+#CHECK: vrepih %v0, 32767 # encoding: [0xe7,0x00,0x7f,0xff,0x10,0x45]
+#CHECK: vrepih %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x45]
+#CHECK: vrepih %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x45]
+#CHECK: vrepih %v18, 13398 # encoding: [0xe7,0x20,0x34,0x56,0x18,0x45]
+
+ vrepih %v0, 0
+ vrepih %v0, -32768
+ vrepih %v0, 32767
+ vrepih %v15, 0
+ vrepih %v31, 0
+ vrepih %v18, 0x3456
+
+#CHECK: vsb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf7]
+#CHECK: vsb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf7]
+#CHECK: vsb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf7]
+#CHECK: vsb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf7]
+#CHECK: vsb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf7]
+
+ vsb %v0, %v0, %v0
+ vsb %v0, %v0, %v31
+ vsb %v0, %v31, %v0
+ vsb %v31, %v0, %v0
+ vsb %v18, %v3, %v20
+
+#CHECK: vsbcbiq %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x04,0x00,0x00,0xbd]
+#CHECK: vsbcbiq %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x04,0x00,0xf1,0xbd]
+#CHECK: vsbcbiq %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf4,0x00,0x02,0xbd]
+#CHECK: vsbcbiq %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x04,0x00,0x04,0xbd]
+#CHECK: vsbcbiq %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x04,0x00,0x08,0xbd]
+#CHECK: vsbcbiq %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x54,0x00,0x97,0xbd]
+
+ vsbcbiq %v0, %v0, %v0, %v0
+ vsbcbiq %v0, %v0, %v0, %v31
+ vsbcbiq %v0, %v0, %v31, %v0
+ vsbcbiq %v0, %v31, %v0, %v0
+ vsbcbiq %v31, %v0, %v0, %v0
+ vsbcbiq %v13, %v17, %v21, %v25
+
+#CHECK: vsbiq %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x04,0x00,0x00,0xbf]
+#CHECK: vsbiq %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x04,0x00,0xf1,0xbf]
+#CHECK: vsbiq %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf4,0x00,0x02,0xbf]
+#CHECK: vsbiq %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x04,0x00,0x04,0xbf]
+#CHECK: vsbiq %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x04,0x00,0x08,0xbf]
+#CHECK: vsbiq %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x54,0x00,0x97,0xbf]
+
+ vsbiq %v0, %v0, %v0, %v0
+ vsbiq %v0, %v0, %v0, %v31
+ vsbiq %v0, %v0, %v31, %v0
+ vsbiq %v0, %v31, %v0, %v0
+ vsbiq %v31, %v0, %v0, %v0
+ vsbiq %v13, %v17, %v21, %v25
+
+#CHECK: vscbib %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xf5]
+#CHECK: vscbib %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0xf5]
+#CHECK: vscbib %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xf5]
+#CHECK: vscbib %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xf5]
+#CHECK: vscbib %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0xf5]
+
+ vscbib %v0, %v0, %v0
+ vscbib %v0, %v0, %v31
+ vscbib %v0, %v31, %v0
+ vscbib %v31, %v0, %v0
+ vscbib %v18, %v3, %v20
+
+#CHECK: vscbif %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf5]
+#CHECK: vscbif %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf5]
+#CHECK: vscbif %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf5]
+#CHECK: vscbif %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf5]
+#CHECK: vscbif %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf5]
+
+ vscbif %v0, %v0, %v0
+ vscbif %v0, %v0, %v31
+ vscbif %v0, %v31, %v0
+ vscbif %v31, %v0, %v0
+ vscbif %v18, %v3, %v20
+
+#CHECK: vscbig %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf5]
+#CHECK: vscbig %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf5]
+#CHECK: vscbig %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf5]
+#CHECK: vscbig %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf5]
+#CHECK: vscbig %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf5]
+
+ vscbig %v0, %v0, %v0
+ vscbig %v0, %v0, %v31
+ vscbig %v0, %v31, %v0
+ vscbig %v31, %v0, %v0
+ vscbig %v18, %v3, %v20
+
+#CHECK: vscbih %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf5]
+#CHECK: vscbih %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf5]
+#CHECK: vscbih %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf5]
+#CHECK: vscbih %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf5]
+#CHECK: vscbih %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf5]
+
+ vscbih %v0, %v0, %v0
+ vscbih %v0, %v0, %v31
+ vscbih %v0, %v31, %v0
+ vscbih %v31, %v0, %v0
+ vscbih %v18, %v3, %v20
+
+#CHECK: vscbiq %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x40,0xf5]
+#CHECK: vscbiq %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x42,0xf5]
+#CHECK: vscbiq %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x44,0xf5]
+#CHECK: vscbiq %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x48,0xf5]
+#CHECK: vscbiq %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x4a,0xf5]
+
+ vscbiq %v0, %v0, %v0
+ vscbiq %v0, %v0, %v31
+ vscbiq %v0, %v31, %v0
+ vscbiq %v31, %v0, %v0
+ vscbiq %v18, %v3, %v20
+
+#CHECK: vscef %v0, 0(%v0), 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x1b]
+#CHECK: vscef %v0, 0(%v0,%r1), 0 # encoding: [0xe7,0x00,0x10,0x00,0x00,0x1b]
+#CHECK: vscef %v0, 0(%v0,%r1), 3 # encoding: [0xe7,0x00,0x10,0x00,0x30,0x1b]
+#CHECK: vscef %v0, 0(%v0,%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x1b]
+#CHECK: vscef %v0, 0(%v15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x1b]
+#CHECK: vscef %v0, 0(%v31,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x04,0x1b]
+#CHECK: vscef %v0, 4095(%v0,%r1), 0 # encoding: [0xe7,0x00,0x1f,0xff,0x00,0x1b]
+#CHECK: vscef %v15, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x00,0x1b]
+#CHECK: vscef %v31, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x08,0x1b]
+#CHECK: vscef %v10, 1000(%v19,%r7), 1 # encoding: [0xe7,0xa3,0x73,0xe8,0x14,0x1b]
+
+ vscef %v0, 0(%v0), 0
+ vscef %v0, 0(%v0,%r1), 0
+ vscef %v0, 0(%v0,%r1), 3
+ vscef %v0, 0(%v0,%r15), 0
+ vscef %v0, 0(%v15,%r1), 0
+ vscef %v0, 0(%v31,%r1), 0
+ vscef %v0, 4095(%v0, %r1), 0
+ vscef %v15, 0(%v0,%r1), 0
+ vscef %v31, 0(%v0,%r1), 0
+ vscef %v10, 1000(%v19,%r7), 1
+
+#CHECK: vsceg %v0, 0(%v0), 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x1a]
+#CHECK: vsceg %v0, 0(%v0,%r1), 0 # encoding: [0xe7,0x00,0x10,0x00,0x00,0x1a]
+#CHECK: vsceg %v0, 0(%v0,%r1), 1 # encoding: [0xe7,0x00,0x10,0x00,0x10,0x1a]
+#CHECK: vsceg %v0, 0(%v0,%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x1a]
+#CHECK: vsceg %v0, 0(%v15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x1a]
+#CHECK: vsceg %v0, 0(%v31,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x04,0x1a]
+#CHECK: vsceg %v0, 4095(%v0,%r1), 0 # encoding: [0xe7,0x00,0x1f,0xff,0x00,0x1a]
+#CHECK: vsceg %v15, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x00,0x1a]
+#CHECK: vsceg %v31, 0(%v0,%r1), 0 # encoding: [0xe7,0xf0,0x10,0x00,0x08,0x1a]
+#CHECK: vsceg %v10, 1000(%v19,%r7), 1 # encoding: [0xe7,0xa3,0x73,0xe8,0x14,0x1a]
+
+ vsceg %v0, 0(%v0), 0
+ vsceg %v0, 0(%v0,%r1), 0
+ vsceg %v0, 0(%v0,%r1), 1
+ vsceg %v0, 0(%v0,%r15), 0
+ vsceg %v0, 0(%v15,%r1), 0
+ vsceg %v0, 0(%v31,%r1), 0
+ vsceg %v0, 4095(%v0,%r1), 0
+ vsceg %v15, 0(%v0,%r1), 0
+ vsceg %v31, 0(%v0,%r1), 0
+ vsceg %v10, 1000(%v19,%r7), 1
+
+#CHECK: vsel %v0, %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x8d]
+#CHECK: vsel %v0, %v0, %v0, %v31 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0x8d]
+#CHECK: vsel %v0, %v0, %v31, %v0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x8d]
+#CHECK: vsel %v0, %v31, %v0, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x8d]
+#CHECK: vsel %v31, %v0, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x8d]
+#CHECK: vsel %v13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x50,0x00,0x97,0x8d]
+
+ vsel %v0, %v0, %v0, %v0
+ vsel %v0, %v0, %v0, %v31
+ vsel %v0, %v0, %v31, %v0
+ vsel %v0, %v31, %v0, %v0
+ vsel %v31, %v0, %v0, %v0
+ vsel %v13, %v17, %v21, %v25
+
+#CHECK: vsegb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x5f]
+#CHECK: vsegb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x5f]
+#CHECK: vsegb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x5f]
+#CHECK: vsegb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x5f]
+#CHECK: vsegb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x5f]
+#CHECK: vsegb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0x5f]
+
+ vsegb %v0, %v0
+ vsegb %v0, %v15
+ vsegb %v0, %v31
+ vsegb %v15, %v0
+ vsegb %v31, %v0
+ vsegb %v14, %v17
+
+#CHECK: vsegf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x5f]
+#CHECK: vsegf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0x5f]
+#CHECK: vsegf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x5f]
+#CHECK: vsegf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0x5f]
+#CHECK: vsegf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x5f]
+#CHECK: vsegf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0x5f]
+
+ vsegf %v0, %v0
+ vsegf %v0, %v15
+ vsegf %v0, %v31
+ vsegf %v15, %v0
+ vsegf %v31, %v0
+ vsegf %v14, %v17
+
+#CHECK: vsegh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x5f]
+#CHECK: vsegh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0x5f]
+#CHECK: vsegh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x5f]
+#CHECK: vsegh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0x5f]
+#CHECK: vsegh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x5f]
+#CHECK: vsegh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0x5f]
+
+ vsegh %v0, %v0
+ vsegh %v0, %v15
+ vsegh %v0, %v31
+ vsegh %v15, %v0
+ vsegh %v31, %v0
+ vsegh %v14, %v17
+
+#CHECK: vsf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xf7]
+#CHECK: vsf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0xf7]
+#CHECK: vsf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xf7]
+#CHECK: vsf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xf7]
+#CHECK: vsf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0xf7]
+
+ vsf %v0, %v0, %v0
+ vsf %v0, %v0, %v31
+ vsf %v0, %v31, %v0
+ vsf %v31, %v0, %v0
+ vsf %v18, %v3, %v20
+
+#CHECK: vsg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xf7]
+#CHECK: vsg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0xf7]
+#CHECK: vsg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xf7]
+#CHECK: vsg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xf7]
+#CHECK: vsg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0xf7]
+
+ vsg %v0, %v0, %v0
+ vsg %v0, %v0, %v31
+ vsg %v0, %v31, %v0
+ vsg %v31, %v0, %v0
+ vsg %v18, %v3, %v20
+
+#CHECK: vsh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xf7]
+#CHECK: vsh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0xf7]
+#CHECK: vsh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xf7]
+#CHECK: vsh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xf7]
+#CHECK: vsh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0xf7]
+
+ vsh %v0, %v0, %v0
+ vsh %v0, %v0, %v31
+ vsh %v0, %v31, %v0
+ vsh %v31, %v0, %v0
+ vsh %v18, %v3, %v20
+
+#CHECK: vsl %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x74]
+#CHECK: vsl %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x74]
+#CHECK: vsl %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x74]
+#CHECK: vsl %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x74]
+#CHECK: vsl %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x74]
+
+ vsl %v0, %v0, %v0
+ vsl %v0, %v0, %v31
+ vsl %v0, %v31, %v0
+ vsl %v31, %v0, %v0
+ vsl %v18, %v3, %v20
+
+#CHECK: vslb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x75]
+#CHECK: vslb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x75]
+#CHECK: vslb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x75]
+#CHECK: vslb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x75]
+#CHECK: vslb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x75]
+
+ vslb %v0, %v0, %v0
+ vslb %v0, %v0, %v31
+ vslb %v0, %v31, %v0
+ vslb %v31, %v0, %v0
+ vslb %v18, %v3, %v20
+
+#CHECK: vsldb %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x77]
+#CHECK: vsldb %v0, %v0, %v0, 255 # encoding: [0xe7,0x00,0x00,0xff,0x00,0x77]
+#CHECK: vsldb %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x77]
+#CHECK: vsldb %v0, %v31, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x77]
+#CHECK: vsldb %v31, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x77]
+#CHECK: vsldb %v13, %v17, %v21, 121 # encoding: [0xe7,0xd1,0x50,0x79,0x06,0x77]
+
+ vsldb %v0, %v0, %v0, 0
+ vsldb %v0, %v0, %v0, 255
+ vsldb %v0, %v0, %v31, 0
+ vsldb %v0, %v31, %v0, 0
+ vsldb %v31, %v0, %v0, 0
+ vsldb %v13, %v17, %v21, 0x79
+
+#CHECK: vsq %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x40,0xf7]
+#CHECK: vsq %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x42,0xf7]
+#CHECK: vsq %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x44,0xf7]
+#CHECK: vsq %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x48,0xf7]
+#CHECK: vsq %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x4a,0xf7]
+
+ vsq %v0, %v0, %v0
+ vsq %v0, %v0, %v31
+ vsq %v0, %v31, %v0
+ vsq %v31, %v0, %v0
+ vsq %v18, %v3, %v20
+
+#CHECK: vsra %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x7e]
+#CHECK: vsra %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x7e]
+#CHECK: vsra %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x7e]
+#CHECK: vsra %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x7e]
+#CHECK: vsra %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x7e]
+
+ vsra %v0, %v0, %v0
+ vsra %v0, %v0, %v31
+ vsra %v0, %v31, %v0
+ vsra %v31, %v0, %v0
+ vsra %v18, %v3, %v20
+
+#CHECK: vsrab %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x7f]
+#CHECK: vsrab %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x7f]
+#CHECK: vsrab %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x7f]
+#CHECK: vsrab %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x7f]
+#CHECK: vsrab %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x7f]
+
+ vsrab %v0, %v0, %v0
+ vsrab %v0, %v0, %v31
+ vsrab %v0, %v31, %v0
+ vsrab %v31, %v0, %v0
+ vsrab %v18, %v3, %v20
+
+#CHECK: vsrl %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x7c]
+#CHECK: vsrl %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x7c]
+#CHECK: vsrl %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x7c]
+#CHECK: vsrl %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x7c]
+#CHECK: vsrl %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x7c]
+
+ vsrl %v0, %v0, %v0
+ vsrl %v0, %v0, %v31
+ vsrl %v0, %v31, %v0
+ vsrl %v31, %v0, %v0
+ vsrl %v18, %v3, %v20
+
+#CHECK: vsrlb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x7d]
+#CHECK: vsrlb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x7d]
+#CHECK: vsrlb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x7d]
+#CHECK: vsrlb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x7d]
+#CHECK: vsrlb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x7d]
+
+ vsrlb %v0, %v0, %v0
+ vsrlb %v0, %v0, %v31
+ vsrlb %v0, %v31, %v0
+ vsrlb %v31, %v0, %v0
+ vsrlb %v18, %v3, %v20
+
+#CHECK: vst %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x0e]
+#CHECK: vst %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x0e]
+#CHECK: vst %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x0e]
+#CHECK: vst %v0, 0(%r15,%r1) # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x0e]
+#CHECK: vst %v15, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x0e]
+#CHECK: vst %v31, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x0e]
+#CHECK: vst %v18, 1383(%r3,%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x0e]
+
+ vst %v0, 0
+ vst %v0, 4095
+ vst %v0, 0(%r15)
+ vst %v0, 0(%r15,%r1)
+ vst %v15, 0
+ vst %v31, 0
+ vst %v18, 0x567(%r3,%r4)
+
+#CHECK: vsteb %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x08]
+#CHECK: vsteb %v0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x08]
+#CHECK: vsteb %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x08]
+#CHECK: vsteb %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x08]
+#CHECK: vsteb %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x08]
+#CHECK: vsteb %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x08]
+#CHECK: vsteb %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x08]
+#CHECK: vsteb %v18, 1383(%r3,%r4), 8 # encoding: [0xe7,0x23,0x45,0x67,0x88,0x08]
+
+ vsteb %v0, 0, 0
+ vsteb %v0, 0, 15
+ vsteb %v0, 4095, 0
+ vsteb %v0, 0(%r15), 0
+ vsteb %v0, 0(%r15,%r1), 0
+ vsteb %v15, 0, 0
+ vsteb %v31, 0, 0
+ vsteb %v18, 1383(%r3,%r4), 8
+
+#CHECK: vstef %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x0b]
+#CHECK: vstef %v0, 0, 3 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x0b]
+#CHECK: vstef %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x0b]
+#CHECK: vstef %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x0b]
+#CHECK: vstef %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x0b]
+#CHECK: vstef %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x0b]
+#CHECK: vstef %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x0b]
+#CHECK: vstef %v18, 1383(%r3,%r4), 2 # encoding: [0xe7,0x23,0x45,0x67,0x28,0x0b]
+
+ vstef %v0, 0, 0
+ vstef %v0, 0, 3
+ vstef %v0, 4095, 0
+ vstef %v0, 0(%r15), 0
+ vstef %v0, 0(%r15,%r1), 0
+ vstef %v15, 0, 0
+ vstef %v31, 0, 0
+ vstef %v18, 1383(%r3,%r4), 2
+
+#CHECK: vsteg %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x0a]
+#CHECK: vsteg %v0, 0, 1 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x0a]
+#CHECK: vsteg %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x0a]
+#CHECK: vsteg %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x0a]
+#CHECK: vsteg %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x0a]
+#CHECK: vsteg %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x0a]
+#CHECK: vsteg %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x0a]
+#CHECK: vsteg %v18, 1383(%r3,%r4), 1 # encoding: [0xe7,0x23,0x45,0x67,0x18,0x0a]
+
+ vsteg %v0, 0, 0
+ vsteg %v0, 0, 1
+ vsteg %v0, 4095, 0
+ vsteg %v0, 0(%r15), 0
+ vsteg %v0, 0(%r15,%r1), 0
+ vsteg %v15, 0, 0
+ vsteg %v31, 0, 0
+ vsteg %v18, 1383(%r3,%r4), 1
+
+#CHECK: vsteh %v0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x09]
+#CHECK: vsteh %v0, 0, 7 # encoding: [0xe7,0x00,0x00,0x00,0x70,0x09]
+#CHECK: vsteh %v0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x09]
+#CHECK: vsteh %v0, 0(%r15), 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x09]
+#CHECK: vsteh %v0, 0(%r15,%r1), 0 # encoding: [0xe7,0x0f,0x10,0x00,0x00,0x09]
+#CHECK: vsteh %v15, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x09]
+#CHECK: vsteh %v31, 0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x09]
+#CHECK: vsteh %v18, 1383(%r3,%r4), 4 # encoding: [0xe7,0x23,0x45,0x67,0x48,0x09]
+
+ vsteh %v0, 0, 0
+ vsteh %v0, 0, 7
+ vsteh %v0, 4095, 0
+ vsteh %v0, 0(%r15), 0
+ vsteh %v0, 0(%r15,%r1), 0
+ vsteh %v15, 0, 0
+ vsteh %v31, 0, 0
+ vsteh %v18, 1383(%r3,%r4), 4
+
+#CHECK: vstl %v0, %r0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x3f]
+#CHECK: vstl %v0, %r0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x3f]
+#CHECK: vstl %v0, %r0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x3f]
+#CHECK: vstl %v0, %r15, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x3f]
+#CHECK: vstl %v15, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x3f]
+#CHECK: vstl %v31, %r0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x3f]
+#CHECK: vstl %v18, %r3, 1383(%r4) # encoding: [0xe7,0x23,0x45,0x67,0x08,0x3f]
+
+ vstl %v0, %r0, 0
+ vstl %v0, %r0, 4095
+ vstl %v0, %r0, 0(%r15)
+ vstl %v0, %r15, 0
+ vstl %v15, %r0, 0
+ vstl %v31, %r0, 0
+ vstl %v18, %r3, 1383(%r4)
+
+#CHECK: vstm %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x3e]
+#CHECK: vstm %v0, %v0, 4095 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x3e]
+#CHECK: vstm %v0, %v0, 0(%r15) # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x3e]
+#CHECK: vstm %v0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x3e]
+#CHECK: vstm %v31, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x3e]
+#CHECK: vstm %v14, %v17, 1074(%r5) # encoding: [0xe7,0xe1,0x54,0x32,0x04,0x3e]
+
+ vstm %v0, %v0, 0
+ vstm %v0, %v0, 4095
+ vstm %v0, %v0, 0(%r15)
+ vstm %v0, %v31, 0
+ vstm %v31, %v0, 0
+ vstm %v14, %v17, 1074(%r5)
+
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x8a]
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x8a]
+#CHECK: vstrcb %v0, %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x00,0xc0,0x00,0x8a]
+#CHECK: vstrcb %v0, %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x8a]
+#CHECK: vstrcb %v0, %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0x00,0x00,0xf1,0x8a]
+#CHECK: vstrcb %v0, %v0, %v15, %v0, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x00,0x8a]
+#CHECK: vstrcb %v0, %v0, %v31, %v0, 0 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x8a]
+#CHECK: vstrcb %v0, %v15, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0x8a]
+#CHECK: vstrcb %v0, %v31, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x8a]
+#CHECK: vstrcb %v15, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x8a]
+#CHECK: vstrcb %v31, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x8a]
+#CHECK: vstrcb %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x40,0x40,0x5a,0x8a]
+#CHECK: vstrcb %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x5a,0x8a]
+#CHECK: vstrcbs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x40,0x90,0x5a,0x8a]
+#CHECK: vstrczb %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x40,0x60,0x5a,0x8a]
+#CHECK: vstrczbs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x40,0xb0,0x5a,0x8a]
+#CHECK: vstrczbs %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x40,0xf0,0x5a,0x8a]
+
+ vstrcb %v0, %v0, %v0, %v0
+ vstrcb %v0, %v0, %v0, %v0, 0
+ vstrcb %v0, %v0, %v0, %v0, 12
+ vstrcb %v0, %v0, %v0, %v15
+ vstrcb %v0, %v0, %v0, %v31
+ vstrcb %v0, %v0, %v15, %v0
+ vstrcb %v0, %v0, %v31, %v0
+ vstrcb %v0, %v15, %v0, %v0
+ vstrcb %v0, %v31, %v0, %v0
+ vstrcb %v15, %v0, %v0, %v0
+ vstrcb %v31, %v0, %v0, %v0
+ vstrcb %v18, %v3, %v20, %v5, 4
+ vstrcb %v18, %v3, %v20, %v5, 15
+ vstrcbs %v18, %v3, %v20, %v5, 8
+ vstrczb %v18, %v3, %v20, %v5, 4
+ vstrczbs %v18, %v3, %v20, %v5, 8
+ vstrczbs %v18, %v3, %v20, %v5, 15
+
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0x8a]
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x02,0x00,0x00,0x8a]
+#CHECK: vstrcf %v0, %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x02,0xc0,0x00,0x8a]
+#CHECK: vstrcf %v0, %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0x02,0x00,0xf0,0x8a]
+#CHECK: vstrcf %v0, %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0x02,0x00,0xf1,0x8a]
+#CHECK: vstrcf %v0, %v0, %v15, %v0, 0 # encoding: [0xe7,0x00,0xf2,0x00,0x00,0x8a]
+#CHECK: vstrcf %v0, %v0, %v31, %v0, 0 # encoding: [0xe7,0x00,0xf2,0x00,0x02,0x8a]
+#CHECK: vstrcf %v0, %v15, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x02,0x00,0x00,0x8a]
+#CHECK: vstrcf %v0, %v31, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x02,0x00,0x04,0x8a]
+#CHECK: vstrcf %v15, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x02,0x00,0x00,0x8a]
+#CHECK: vstrcf %v31, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x02,0x00,0x08,0x8a]
+#CHECK: vstrcf %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x42,0x40,0x5a,0x8a]
+#CHECK: vstrcf %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x42,0xf0,0x5a,0x8a]
+#CHECK: vstrcfs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x42,0x90,0x5a,0x8a]
+#CHECK: vstrczf %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x42,0x60,0x5a,0x8a]
+#CHECK: vstrczfs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x42,0xb0,0x5a,0x8a]
+#CHECK: vstrczfs %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x42,0xf0,0x5a,0x8a]
+
+ vstrcf %v0, %v0, %v0, %v0
+ vstrcf %v0, %v0, %v0, %v0, 0
+ vstrcf %v0, %v0, %v0, %v0, 12
+ vstrcf %v0, %v0, %v0, %v15
+ vstrcf %v0, %v0, %v0, %v31
+ vstrcf %v0, %v0, %v15, %v0
+ vstrcf %v0, %v0, %v31, %v0
+ vstrcf %v0, %v15, %v0, %v0
+ vstrcf %v0, %v31, %v0, %v0
+ vstrcf %v15, %v0, %v0, %v0
+ vstrcf %v31, %v0, %v0, %v0
+ vstrcf %v18, %v3, %v20, %v5, 4
+ vstrcf %v18, %v3, %v20, %v5, 15
+ vstrcfs %v18, %v3, %v20, %v5, 8
+ vstrczf %v18, %v3, %v20, %v5, 4
+ vstrczfs %v18, %v3, %v20, %v5, 8
+ vstrczfs %v18, %v3, %v20, %v5, 15
+
+#CHECK: vstrch %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0x8a]
+#CHECK: vstrch %v0, %v0, %v0, %v0, 0 # encoding: [0xe7,0x00,0x01,0x00,0x00,0x8a]
+#CHECK: vstrch %v0, %v0, %v0, %v0, 12 # encoding: [0xe7,0x00,0x01,0xc0,0x00,0x8a]
+#CHECK: vstrch %v0, %v0, %v0, %v15, 0 # encoding: [0xe7,0x00,0x01,0x00,0xf0,0x8a]
+#CHECK: vstrch %v0, %v0, %v0, %v31, 0 # encoding: [0xe7,0x00,0x01,0x00,0xf1,0x8a]
+#CHECK: vstrch %v0, %v0, %v15, %v0, 0 # encoding: [0xe7,0x00,0xf1,0x00,0x00,0x8a]
+#CHECK: vstrch %v0, %v0, %v31, %v0, 0 # encoding: [0xe7,0x00,0xf1,0x00,0x02,0x8a]
+#CHECK: vstrch %v0, %v15, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x01,0x00,0x00,0x8a]
+#CHECK: vstrch %v0, %v31, %v0, %v0, 0 # encoding: [0xe7,0x0f,0x01,0x00,0x04,0x8a]
+#CHECK: vstrch %v15, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x01,0x00,0x00,0x8a]
+#CHECK: vstrch %v31, %v0, %v0, %v0, 0 # encoding: [0xe7,0xf0,0x01,0x00,0x08,0x8a]
+#CHECK: vstrch %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x41,0x40,0x5a,0x8a]
+#CHECK: vstrch %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x41,0xf0,0x5a,0x8a]
+#CHECK: vstrchs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x41,0x90,0x5a,0x8a]
+#CHECK: vstrczh %v18, %v3, %v20, %v5, 4 # encoding: [0xe7,0x23,0x41,0x60,0x5a,0x8a]
+#CHECK: vstrczhs %v18, %v3, %v20, %v5, 8 # encoding: [0xe7,0x23,0x41,0xb0,0x5a,0x8a]
+#CHECK: vstrczhs %v18, %v3, %v20, %v5, 15 # encoding: [0xe7,0x23,0x41,0xf0,0x5a,0x8a]
+
+ vstrch %v0, %v0, %v0, %v0
+ vstrch %v0, %v0, %v0, %v0, 0
+ vstrch %v0, %v0, %v0, %v0, 12
+ vstrch %v0, %v0, %v0, %v15
+ vstrch %v0, %v0, %v0, %v31
+ vstrch %v0, %v0, %v15, %v0
+ vstrch %v0, %v0, %v31, %v0
+ vstrch %v0, %v15, %v0, %v0
+ vstrch %v0, %v31, %v0, %v0
+ vstrch %v15, %v0, %v0, %v0
+ vstrch %v31, %v0, %v0, %v0
+ vstrch %v18, %v3, %v20, %v5, 4
+ vstrch %v18, %v3, %v20, %v5, 15
+ vstrchs %v18, %v3, %v20, %v5, 8
+ vstrczh %v18, %v3, %v20, %v5, 4
+ vstrczhs %v18, %v3, %v20, %v5, 8
+ vstrczhs %v18, %v3, %v20, %v5, 15
+
+#CHECK: vsumgh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x65]
+#CHECK: vsumgh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x65]
+#CHECK: vsumgh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x65]
+#CHECK: vsumgh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x65]
+#CHECK: vsumgh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x65]
+
+ vsumgh %v0, %v0, %v0
+ vsumgh %v0, %v0, %v31
+ vsumgh %v0, %v31, %v0
+ vsumgh %v31, %v0, %v0
+ vsumgh %v18, %v3, %v20
+
+#CHECK: vsumgf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x65]
+#CHECK: vsumgf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x65]
+#CHECK: vsumgf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x65]
+#CHECK: vsumgf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x65]
+#CHECK: vsumgf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x65]
+
+ vsumgf %v0, %v0, %v0
+ vsumgf %v0, %v0, %v31
+ vsumgf %v0, %v31, %v0
+ vsumgf %v31, %v0, %v0
+ vsumgf %v18, %v3, %v20
+
+#CHECK: vsumqf %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0x67]
+#CHECK: vsumqf %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x22,0x67]
+#CHECK: vsumqf %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0x67]
+#CHECK: vsumqf %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0x67]
+#CHECK: vsumqf %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x2a,0x67]
+
+ vsumqf %v0, %v0, %v0
+ vsumqf %v0, %v0, %v31
+ vsumqf %v0, %v31, %v0
+ vsumqf %v31, %v0, %v0
+ vsumqf %v18, %v3, %v20
+
+#CHECK: vsumqg %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0x67]
+#CHECK: vsumqg %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x32,0x67]
+#CHECK: vsumqg %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0x67]
+#CHECK: vsumqg %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0x67]
+#CHECK: vsumqg %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x3a,0x67]
+
+ vsumqg %v0, %v0, %v0
+ vsumqg %v0, %v0, %v31
+ vsumqg %v0, %v31, %v0
+ vsumqg %v31, %v0, %v0
+ vsumqg %v18, %v3, %v20
+
+#CHECK: vsumb %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x64]
+#CHECK: vsumb %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x64]
+#CHECK: vsumb %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x64]
+#CHECK: vsumb %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x64]
+#CHECK: vsumb %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x64]
+
+ vsumb %v0, %v0, %v0
+ vsumb %v0, %v0, %v31
+ vsumb %v0, %v31, %v0
+ vsumb %v31, %v0, %v0
+ vsumb %v18, %v3, %v20
+
+#CHECK: vsumh %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0x64]
+#CHECK: vsumh %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x12,0x64]
+#CHECK: vsumh %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0x64]
+#CHECK: vsumh %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0x64]
+#CHECK: vsumh %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x1a,0x64]
+
+ vsumh %v0, %v0, %v0
+ vsumh %v0, %v0, %v31
+ vsumh %v0, %v31, %v0
+ vsumh %v31, %v0, %v0
+ vsumh %v18, %v3, %v20
+
+#CHECK: vtm %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd8]
+#CHECK: vtm %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd8]
+#CHECK: vtm %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd8]
+#CHECK: vtm %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd8]
+#CHECK: vtm %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd8]
+#CHECK: vtm %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd8]
+
+ vtm %v0, %v0
+ vtm %v0, %v15
+ vtm %v0, %v31
+ vtm %v15, %v0
+ vtm %v31, %v0
+ vtm %v14, %v17
+
+#CHECK: vuphb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd7]
+#CHECK: vuphb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd7]
+#CHECK: vuphb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd7]
+#CHECK: vuphb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd7]
+#CHECK: vuphb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd7]
+#CHECK: vuphb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd7]
+
+ vuphb %v0, %v0
+ vuphb %v0, %v15
+ vuphb %v0, %v31
+ vuphb %v15, %v0
+ vuphb %v31, %v0
+ vuphb %v14, %v17
+
+#CHECK: vuphf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xd7]
+#CHECK: vuphf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xd7]
+#CHECK: vuphf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xd7]
+#CHECK: vuphf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xd7]
+#CHECK: vuphf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xd7]
+#CHECK: vuphf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xd7]
+
+ vuphf %v0, %v0
+ vuphf %v0, %v15
+ vuphf %v0, %v31
+ vuphf %v15, %v0
+ vuphf %v31, %v0
+ vuphf %v14, %v17
+
+#CHECK: vuphh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xd7]
+#CHECK: vuphh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xd7]
+#CHECK: vuphh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xd7]
+#CHECK: vuphh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xd7]
+#CHECK: vuphh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xd7]
+#CHECK: vuphh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xd7]
+
+ vuphh %v0, %v0
+ vuphh %v0, %v15
+ vuphh %v0, %v31
+ vuphh %v15, %v0
+ vuphh %v31, %v0
+ vuphh %v14, %v17
+
+#CHECK: vuplhb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd5]
+#CHECK: vuplhb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd5]
+#CHECK: vuplhb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd5]
+#CHECK: vuplhb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd5]
+#CHECK: vuplhb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd5]
+#CHECK: vuplhb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd5]
+
+ vuplhb %v0, %v0
+ vuplhb %v0, %v15
+ vuplhb %v0, %v31
+ vuplhb %v15, %v0
+ vuplhb %v31, %v0
+ vuplhb %v14, %v17
+
+#CHECK: vuplhf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xd5]
+#CHECK: vuplhf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xd5]
+#CHECK: vuplhf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xd5]
+#CHECK: vuplhf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xd5]
+#CHECK: vuplhf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xd5]
+#CHECK: vuplhf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xd5]
+
+ vuplhf %v0, %v0
+ vuplhf %v0, %v15
+ vuplhf %v0, %v31
+ vuplhf %v15, %v0
+ vuplhf %v31, %v0
+ vuplhf %v14, %v17
+
+#CHECK: vuplhh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xd5]
+#CHECK: vuplhh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xd5]
+#CHECK: vuplhh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xd5]
+#CHECK: vuplhh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xd5]
+#CHECK: vuplhh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xd5]
+#CHECK: vuplhh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xd5]
+
+ vuplhh %v0, %v0
+ vuplhh %v0, %v15
+ vuplhh %v0, %v31
+ vuplhh %v15, %v0
+ vuplhh %v31, %v0
+ vuplhh %v14, %v17
+
+#CHECK: vuplb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd6]
+#CHECK: vuplb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd6]
+#CHECK: vuplb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd6]
+#CHECK: vuplb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd6]
+#CHECK: vuplb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd6]
+#CHECK: vuplb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd6]
+
+ vuplb %v0, %v0
+ vuplb %v0, %v15
+ vuplb %v0, %v31
+ vuplb %v15, %v0
+ vuplb %v31, %v0
+ vuplb %v14, %v17
+
+#CHECK: vuplf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xd6]
+#CHECK: vuplf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xd6]
+#CHECK: vuplf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xd6]
+#CHECK: vuplf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xd6]
+#CHECK: vuplf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xd6]
+#CHECK: vuplf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xd6]
+
+ vuplf %v0, %v0
+ vuplf %v0, %v15
+ vuplf %v0, %v31
+ vuplf %v15, %v0
+ vuplf %v31, %v0
+ vuplf %v14, %v17
+
+#CHECK: vuplhw %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xd6]
+#CHECK: vuplhw %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xd6]
+#CHECK: vuplhw %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xd6]
+#CHECK: vuplhw %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xd6]
+#CHECK: vuplhw %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xd6]
+#CHECK: vuplhw %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xd6]
+
+ vuplhw %v0, %v0
+ vuplhw %v0, %v15
+ vuplhw %v0, %v31
+ vuplhw %v15, %v0
+ vuplhw %v31, %v0
+ vuplhw %v14, %v17
+
+#CHECK: vupllb %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0xd4]
+#CHECK: vupllb %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x00,0xd4]
+#CHECK: vupllb %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0xd4]
+#CHECK: vupllb %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0xd4]
+#CHECK: vupllb %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0xd4]
+#CHECK: vupllb %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x04,0xd4]
+
+ vupllb %v0, %v0
+ vupllb %v0, %v15
+ vupllb %v0, %v31
+ vupllb %v15, %v0
+ vupllb %v31, %v0
+ vupllb %v14, %v17
+
+#CHECK: vupllf %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x20,0xd4]
+#CHECK: vupllf %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x20,0xd4]
+#CHECK: vupllf %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x24,0xd4]
+#CHECK: vupllf %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x20,0xd4]
+#CHECK: vupllf %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x28,0xd4]
+#CHECK: vupllf %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x24,0xd4]
+
+ vupllf %v0, %v0
+ vupllf %v0, %v15
+ vupllf %v0, %v31
+ vupllf %v15, %v0
+ vupllf %v31, %v0
+ vupllf %v14, %v17
+
+#CHECK: vupllh %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x10,0xd4]
+#CHECK: vupllh %v0, %v15 # encoding: [0xe7,0x0f,0x00,0x00,0x10,0xd4]
+#CHECK: vupllh %v0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x14,0xd4]
+#CHECK: vupllh %v15, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x10,0xd4]
+#CHECK: vupllh %v31, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x18,0xd4]
+#CHECK: vupllh %v14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x14,0xd4]
+
+ vupllh %v0, %v0
+ vupllh %v0, %v15
+ vupllh %v0, %v31
+ vupllh %v15, %v0
+ vupllh %v31, %v0
+ vupllh %v14, %v17
+
+#CHECK: vx %v0, %v0, %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x6d]
+#CHECK: vx %v0, %v0, %v31 # encoding: [0xe7,0x00,0xf0,0x00,0x02,0x6d]
+#CHECK: vx %v0, %v31, %v0 # encoding: [0xe7,0x0f,0x00,0x00,0x04,0x6d]
+#CHECK: vx %v31, %v0, %v0 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x6d]
+#CHECK: vx %v18, %v3, %v20 # encoding: [0xe7,0x23,0x40,0x00,0x0a,0x6d]
+
+ vx %v0, %v0, %v0
+ vx %v0, %v0, %v31
+ vx %v0, %v31, %v0
+ vx %v31, %v0, %v0
+ vx %v18, %v3, %v20
+
+#CHECK: vzero %v0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x44]
+#CHECK: vzero %v11 # encoding: [0xe7,0xb0,0x00,0x00,0x00,0x44]
+#CHECK: vzero %v15 # encoding: [0xe7,0xf0,0x00,0x00,0x00,0x44]
+#CHECK: vzero %v31 # encoding: [0xe7,0xf0,0x00,0x00,0x08,0x44]
+
+ vzero %v0
+ vzero %v11
+ vzero %v15
+ vzero %v31
+
+#CHECK: wcdgb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc3]
+#CHECK: wcdgb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc3]
+#CHECK: wcdgb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc3]
+#CHECK: wcdgb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc3]
+#CHECK: wcdgb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc3]
+#CHECK: wcdgb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc3]
+#CHECK: wcdgb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc3]
+
+ wcdgb %v0, %v0, 0, 0
+ wcdgb %v0, %v0, 0, 15
+ wcdgb %v0, %v0, 4, 0
+ wcdgb %v0, %v0, 12, 0
+ wcdgb %v0, %v31, 0, 0
+ wcdgb %v31, %v0, 0, 0
+ wcdgb %v14, %v17, 4, 10
+
+#CHECK: wcdlgb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc1]
+#CHECK: wcdlgb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc1]
+#CHECK: wcdlgb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc1]
+#CHECK: wcdlgb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc1]
+#CHECK: wcdlgb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc1]
+#CHECK: wcdlgb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc1]
+#CHECK: wcdlgb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc1]
+
+ wcdlgb %v0, %v0, 0, 0
+ wcdlgb %v0, %v0, 0, 15
+ wcdlgb %v0, %v0, 4, 0
+ wcdlgb %v0, %v0, 12, 0
+ wcdlgb %v0, %v31, 0, 0
+ wcdlgb %v31, %v0, 0, 0
+ wcdlgb %v14, %v17, 4, 10
+
+#CHECK: wcgdb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc2]
+#CHECK: wcgdb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc2]
+#CHECK: wcgdb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc2]
+#CHECK: wcgdb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc2]
+#CHECK: wcgdb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc2]
+#CHECK: wcgdb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc2]
+#CHECK: wcgdb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc2]
+
+ wcgdb %v0, %v0, 0, 0
+ wcgdb %v0, %v0, 0, 15
+ wcgdb %v0, %v0, 4, 0
+ wcgdb %v0, %v0, 12, 0
+ wcgdb %v0, %v31, 0, 0
+ wcgdb %v31, %v0, 0, 0
+ wcgdb %v14, %v17, 4, 10
+
+#CHECK: wclgdb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc0]
+#CHECK: wclgdb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc0]
+#CHECK: wclgdb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc0]
+#CHECK: wclgdb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc0]
+#CHECK: wclgdb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc0]
+#CHECK: wclgdb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc0]
+#CHECK: wclgdb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc0]
+
+ wclgdb %v0, %v0, 0, 0
+ wclgdb %v0, %v0, 0, 15
+ wclgdb %v0, %v0, 4, 0
+ wclgdb %v0, %v0, 12, 0
+ wclgdb %v0, %v31, 0, 0
+ wclgdb %v31, %v0, 0, 0
+ wclgdb %v14, %v17, 4, 10
+
+#CHECK: wfadb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xe3]
+#CHECK: wfadb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xe3]
+#CHECK: wfadb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xe3]
+#CHECK: wfadb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xe3]
+#CHECK: wfadb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xe3]
+
+ wfadb %v0, %v0, %v0
+ wfadb %v0, %v0, %v31
+ wfadb %v0, %v31, %v0
+ wfadb %v31, %v0, %v0
+ wfadb %v18, %v3, %v20
+
+#CHECK: wfcdb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xcb]
+#CHECK: wfcdb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xcb]
+#CHECK: wfcdb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xcb]
+#CHECK: wfcdb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xcb]
+#CHECK: wfcdb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xcb]
+#CHECK: wfcdb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xcb]
+
+ wfcdb %v0, %v0
+ wfcdb %v0, %v15
+ wfcdb %v0, %v31
+ wfcdb %v15, %v0
+ wfcdb %v31, %v0
+ wfcdb %v14, %v17
+
+#CHECK: wfcedb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xe8]
+#CHECK: wfcedb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xe8]
+#CHECK: wfcedb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xe8]
+#CHECK: wfcedb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xe8]
+#CHECK: wfcedb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xe8]
+
+ wfcedb %v0, %v0, %v0
+ wfcedb %v0, %v0, %v31
+ wfcedb %v0, %v31, %v0
+ wfcedb %v31, %v0, %v0
+ wfcedb %v18, %v3, %v20
+
+#CHECK: wfcedbs %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x18,0x30,0xe8]
+#CHECK: wfcedbs %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x18,0x32,0xe8]
+#CHECK: wfcedbs %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x18,0x34,0xe8]
+#CHECK: wfcedbs %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x18,0x38,0xe8]
+#CHECK: wfcedbs %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x18,0x3a,0xe8]
+
+ wfcedbs %v0, %v0, %v0
+ wfcedbs %v0, %v0, %v31
+ wfcedbs %v0, %v31, %v0
+ wfcedbs %v31, %v0, %v0
+ wfcedbs %v18, %v3, %v20
+
+#CHECK: wfchdb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xeb]
+#CHECK: wfchdb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xeb]
+#CHECK: wfchdb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xeb]
+#CHECK: wfchdb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xeb]
+#CHECK: wfchdb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xeb]
+
+ wfchdb %v0, %v0, %v0
+ wfchdb %v0, %v0, %v31
+ wfchdb %v0, %v31, %v0
+ wfchdb %v31, %v0, %v0
+ wfchdb %v18, %v3, %v20
+
+#CHECK: wfchdbs %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x18,0x30,0xeb]
+#CHECK: wfchdbs %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x18,0x32,0xeb]
+#CHECK: wfchdbs %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x18,0x34,0xeb]
+#CHECK: wfchdbs %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x18,0x38,0xeb]
+#CHECK: wfchdbs %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x18,0x3a,0xeb]
+
+ wfchdbs %v0, %v0, %v0
+ wfchdbs %v0, %v0, %v31
+ wfchdbs %v0, %v31, %v0
+ wfchdbs %v31, %v0, %v0
+ wfchdbs %v18, %v3, %v20
+
+#CHECK: wfchedb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xea]
+#CHECK: wfchedb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xea]
+#CHECK: wfchedb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xea]
+#CHECK: wfchedb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xea]
+#CHECK: wfchedb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xea]
+
+ wfchedb %v0, %v0, %v0
+ wfchedb %v0, %v0, %v31
+ wfchedb %v0, %v31, %v0
+ wfchedb %v31, %v0, %v0
+ wfchedb %v18, %v3, %v20
+
+#CHECK: wfchedbs %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x18,0x30,0xea]
+#CHECK: wfchedbs %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x18,0x32,0xea]
+#CHECK: wfchedbs %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x18,0x34,0xea]
+#CHECK: wfchedbs %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x18,0x38,0xea]
+#CHECK: wfchedbs %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x18,0x3a,0xea]
+
+ wfchedbs %v0, %v0, %v0
+ wfchedbs %v0, %v0, %v31
+ wfchedbs %v0, %v31, %v0
+ wfchedbs %v31, %v0, %v0
+ wfchedbs %v18, %v3, %v20
+
+#CHECK: wfddb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xe5]
+#CHECK: wfddb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xe5]
+#CHECK: wfddb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xe5]
+#CHECK: wfddb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xe5]
+#CHECK: wfddb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xe5]
+
+ wfddb %v0, %v0, %v0
+ wfddb %v0, %v0, %v31
+ wfddb %v0, %v31, %v0
+ wfddb %v31, %v0, %v0
+ wfddb %v18, %v3, %v20
+
+#CHECK: wfidb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc7]
+#CHECK: wfidb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc7]
+#CHECK: wfidb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc7]
+#CHECK: wfidb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc7]
+#CHECK: wfidb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc7]
+#CHECK: wfidb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc7]
+#CHECK: wfidb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc7]
+
+ wfidb %v0, %v0, 0, 0
+ wfidb %v0, %v0, 0, 15
+ wfidb %v0, %v0, 4, 0
+ wfidb %v0, %v0, 12, 0
+ wfidb %v0, %v31, 0, 0
+ wfidb %v31, %v0, 0, 0
+ wfidb %v14, %v17, 4, 10
+
+#CHECK: wfkdb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x00,0x30,0xca]
+#CHECK: wfkdb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x00,0x30,0xca]
+#CHECK: wfkdb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x00,0x34,0xca]
+#CHECK: wfkdb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x00,0x30,0xca]
+#CHECK: wfkdb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x00,0x38,0xca]
+#CHECK: wfkdb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x00,0x34,0xca]
+
+ wfkdb %v0, %v0
+ wfkdb %v0, %v15
+ wfkdb %v0, %v31
+ wfkdb %v15, %v0
+ wfkdb %v31, %v0
+ wfkdb %v14, %v17
+
+#CHECK: wflcdb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xcc]
+#CHECK: wflcdb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x08,0x30,0xcc]
+#CHECK: wflcdb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xcc]
+#CHECK: wflcdb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x30,0xcc]
+#CHECK: wflcdb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xcc]
+#CHECK: wflcdb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x08,0x34,0xcc]
+
+ wflcdb %v0, %v0
+ wflcdb %v0, %v15
+ wflcdb %v0, %v31
+ wflcdb %v15, %v0
+ wflcdb %v31, %v0
+ wflcdb %v14, %v17
+
+#CHECK: wflndb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x18,0x30,0xcc]
+#CHECK: wflndb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x18,0x30,0xcc]
+#CHECK: wflndb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x18,0x34,0xcc]
+#CHECK: wflndb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x18,0x30,0xcc]
+#CHECK: wflndb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x18,0x38,0xcc]
+#CHECK: wflndb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x18,0x34,0xcc]
+
+ wflndb %v0, %v0
+ wflndb %v0, %v15
+ wflndb %v0, %v31
+ wflndb %v15, %v0
+ wflndb %v31, %v0
+ wflndb %v14, %v17
+
+#CHECK: wflpdb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x28,0x30,0xcc]
+#CHECK: wflpdb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x28,0x30,0xcc]
+#CHECK: wflpdb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x28,0x34,0xcc]
+#CHECK: wflpdb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x28,0x30,0xcc]
+#CHECK: wflpdb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x28,0x38,0xcc]
+#CHECK: wflpdb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x28,0x34,0xcc]
+
+ wflpdb %v0, %v0
+ wflpdb %v0, %v15
+ wflpdb %v0, %v31
+ wflpdb %v15, %v0
+ wflpdb %v31, %v0
+ wflpdb %v14, %v17
+
+#CHECK: wfmadb %f0, %f0, %f0, %f0 # encoding: [0xe7,0x00,0x03,0x08,0x00,0x8f]
+#CHECK: wfmadb %f0, %f0, %f0, %v31 # encoding: [0xe7,0x00,0x03,0x08,0xf1,0x8f]
+#CHECK: wfmadb %f0, %f0, %v31, %f0 # encoding: [0xe7,0x00,0xf3,0x08,0x02,0x8f]
+#CHECK: wfmadb %f0, %v31, %f0, %f0 # encoding: [0xe7,0x0f,0x03,0x08,0x04,0x8f]
+#CHECK: wfmadb %v31, %f0, %f0, %f0 # encoding: [0xe7,0xf0,0x03,0x08,0x08,0x8f]
+#CHECK: wfmadb %f13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x53,0x08,0x97,0x8f]
+
+ wfmadb %v0, %v0, %v0, %v0
+ wfmadb %v0, %v0, %v0, %v31
+ wfmadb %v0, %v0, %v31, %v0
+ wfmadb %v0, %v31, %v0, %v0
+ wfmadb %v31, %v0, %v0, %v0
+ wfmadb %v13, %v17, %v21, %v25
+
+#CHECK: wfmdb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xe7]
+#CHECK: wfmdb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xe7]
+#CHECK: wfmdb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xe7]
+#CHECK: wfmdb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xe7]
+#CHECK: wfmdb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xe7]
+
+ wfmdb %v0, %v0, %v0
+ wfmdb %v0, %v0, %v31
+ wfmdb %v0, %v31, %v0
+ wfmdb %v31, %v0, %v0
+ wfmdb %v18, %v3, %v20
+
+#CHECK: wfmsdb %f0, %f0, %f0, %f0 # encoding: [0xe7,0x00,0x03,0x08,0x00,0x8e]
+#CHECK: wfmsdb %f0, %f0, %f0, %v31 # encoding: [0xe7,0x00,0x03,0x08,0xf1,0x8e]
+#CHECK: wfmsdb %f0, %f0, %v31, %f0 # encoding: [0xe7,0x00,0xf3,0x08,0x02,0x8e]
+#CHECK: wfmsdb %f0, %v31, %f0, %f0 # encoding: [0xe7,0x0f,0x03,0x08,0x04,0x8e]
+#CHECK: wfmsdb %v31, %f0, %f0, %f0 # encoding: [0xe7,0xf0,0x03,0x08,0x08,0x8e]
+#CHECK: wfmsdb %f13, %v17, %v21, %v25 # encoding: [0xe7,0xd1,0x53,0x08,0x97,0x8e]
+
+ wfmsdb %v0, %v0, %v0, %v0
+ wfmsdb %v0, %v0, %v0, %v31
+ wfmsdb %v0, %v0, %v31, %v0
+ wfmsdb %v0, %v31, %v0, %v0
+ wfmsdb %v31, %v0, %v0, %v0
+ wfmsdb %v13, %v17, %v21, %v25
+
+#CHECK: wfsdb %f0, %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xe2]
+#CHECK: wfsdb %f0, %f0, %v31 # encoding: [0xe7,0x00,0xf0,0x08,0x32,0xe2]
+#CHECK: wfsdb %f0, %v31, %f0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xe2]
+#CHECK: wfsdb %v31, %f0, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xe2]
+#CHECK: wfsdb %v18, %f3, %v20 # encoding: [0xe7,0x23,0x40,0x08,0x3a,0xe2]
+
+ wfsdb %v0, %v0, %v0
+ wfsdb %v0, %v0, %v31
+ wfsdb %v0, %v31, %v0
+ wfsdb %v31, %v0, %v0
+ wfsdb %v18, %v3, %v20
+
+#CHECK: wfsqdb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xce]
+#CHECK: wfsqdb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x08,0x30,0xce]
+#CHECK: wfsqdb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xce]
+#CHECK: wfsqdb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x30,0xce]
+#CHECK: wfsqdb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xce]
+#CHECK: wfsqdb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x08,0x34,0xce]
+
+ wfsqdb %v0, %v0
+ wfsqdb %v0, %v15
+ wfsqdb %v0, %v31
+ wfsqdb %v15, %v0
+ wfsqdb %v31, %v0
+ wfsqdb %v14, %v17
+
+#CHECK: wftcidb %f0, %f0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0x4a]
+#CHECK: wftcidb %f0, %f0, 4095 # encoding: [0xe7,0x00,0xff,0xf8,0x30,0x4a]
+#CHECK: wftcidb %f0, %f15, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x30,0x4a]
+#CHECK: wftcidb %f0, %v31, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0x4a]
+#CHECK: wftcidb %f15, %f0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x30,0x4a]
+#CHECK: wftcidb %v31, %f0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0x4a]
+#CHECK: wftcidb %f4, %v21, 1656 # encoding: [0xe7,0x45,0x67,0x88,0x34,0x4a]
+
+ wftcidb %v0, %v0, 0
+ wftcidb %v0, %v0, 4095
+ wftcidb %v0, %v15, 0
+ wftcidb %v0, %v31, 0
+ wftcidb %v15, %v0, 0
+ wftcidb %v31, %v0, 0
+ wftcidb %v4, %v21, 0x678
+
+#CHECK: wldeb %f0, %f0 # encoding: [0xe7,0x00,0x00,0x08,0x20,0xc4]
+#CHECK: wldeb %f0, %f15 # encoding: [0xe7,0x0f,0x00,0x08,0x20,0xc4]
+#CHECK: wldeb %f0, %v31 # encoding: [0xe7,0x0f,0x00,0x08,0x24,0xc4]
+#CHECK: wldeb %f15, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x20,0xc4]
+#CHECK: wldeb %v31, %f0 # encoding: [0xe7,0xf0,0x00,0x08,0x28,0xc4]
+#CHECK: wldeb %f14, %v17 # encoding: [0xe7,0xe1,0x00,0x08,0x24,0xc4]
+
+ wldeb %v0, %v0
+ wldeb %v0, %v15
+ wldeb %v0, %v31
+ wldeb %v15, %v0
+ wldeb %v31, %v0
+ wldeb %v14, %v17
+
+#CHECK: wledb %f0, %f0, 0, 0 # encoding: [0xe7,0x00,0x00,0x08,0x30,0xc5]
+#CHECK: wledb %f0, %f0, 0, 15 # encoding: [0xe7,0x00,0x00,0xf8,0x30,0xc5]
+#CHECK: wledb %f0, %f0, 4, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc5]
+#CHECK: wledb %f0, %f0, 12, 0 # encoding: [0xe7,0x00,0x00,0x0c,0x30,0xc5]
+#CHECK: wledb %f0, %v31, 0, 0 # encoding: [0xe7,0x0f,0x00,0x08,0x34,0xc5]
+#CHECK: wledb %v31, %f0, 0, 0 # encoding: [0xe7,0xf0,0x00,0x08,0x38,0xc5]
+#CHECK: wledb %f14, %v17, 4, 10 # encoding: [0xe7,0xe1,0x00,0xac,0x34,0xc5]
+
+ wledb %v0, %v0, 0, 0
+ wledb %v0, %v0, 0, 15
+ wledb %v0, %v0, 4, 0
+ wledb %v0, %v0, 12, 0
+ wledb %v0, %v31, 0, 0
+ wledb %v31, %v0, 0, 0
+ wledb %v14, %v17, 4, 10
diff --git a/llvm/test/MC/SystemZ/tokens.s b/llvm/test/MC/SystemZ/tokens.s
index 2719752b736..ceadcdb4b1d 100644
--- a/llvm/test/MC/SystemZ/tokens.s
+++ b/llvm/test/MC/SystemZ/tokens.s
@@ -13,10 +13,16 @@
#CHECK: foo 100(200,%r0), 300
#CHECK: error: invalid instruction
#CHECK: foo 100(200,%r1), 300
-#CHECK: error: invalid operand
+#CHECK: error: invalid address register
#CHECK: foo 100(%a0), 200
#CHECK: error: %r0 used in an address
#CHECK: foo 100(%r0), 200
+#CHECK: error: %r0 used in an address
+#CHECK: foo 100(%v1,%r0), 200
+#CHECK: error: invalid instruction
+#CHECK: foo 100(%v0,%r1), 200
+#CHECK: error: invalid instruction
+#CHECK: foo 100(%v31), 200
#CHECK: error: invalid operand
#CHECK: foo 100(%r1,%a0), 200
#CHECK: error: %r0 used in an address
@@ -45,6 +51,12 @@
#CHECK: foo %a15, 200
#CHECK: error: invalid register
#CHECK: foo %a16, 200
+#CHECK: error: invalid instruction
+#CHECK: foo %v0, 200
+#CHECK: error: invalid instruction
+#CHECK: foo %v31, 200
+#CHECK: error: invalid register
+#CHECK: foo %v32, 200
#CHECK: error: invalid register
#CHECK: foo %c, 200
#CHECK: error: invalid register
@@ -60,6 +72,9 @@
foo 100(200,%r1), 300
foo 100(%a0), 200
foo 100(%r0), 200
+ foo 100(%v1,%r0), 200
+ foo 100(%v0,%r1), 200
+ foo 100(%v31), 200
foo 100(%r1,%a0), 200
foo 100(%r1,%r0), 200
foo 100(%r1,%r2, 200
@@ -74,6 +89,9 @@
foo %a0, 200
foo %a15, 200
foo %a16, 200
+ foo %v0, 200
+ foo %v31, 200
+ foo %v32, 200
foo %c, 200
foo %, 200
foo {, 200
OpenPOWER on IntegriCloud