forked from OSchip/llvm-project
[mips][microMIPS] Implement BLTZC, BLEZC, BGEZC and BGTZC instructions, fix disassembly and add operand checking to existing B<cond>C implementations
Differential Revision: https://reviews.llvm.org/D22667 llvm-svn: 279429
This commit is contained in:
parent
80d379f228
commit
f0ed16eae5
|
@ -1652,6 +1652,45 @@ bool MipsAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
|
|||
1LL << (inMicroMipsMode() ? 1 : 2)))
|
||||
return Error(IDLoc, "branch to misaligned address");
|
||||
break;
|
||||
case Mips::BGEC: case Mips::BGEC_MMR6:
|
||||
case Mips::BLTC: case Mips::BLTC_MMR6:
|
||||
case Mips::BGEUC: case Mips::BGEUC_MMR6:
|
||||
case Mips::BLTUC: case Mips::BLTUC_MMR6:
|
||||
case Mips::BEQC: case Mips::BEQC_MMR6:
|
||||
case Mips::BNEC: case Mips::BNEC_MMR6:
|
||||
assert(MCID.getNumOperands() == 3 && "unexpected number of operands");
|
||||
Offset = Inst.getOperand(2);
|
||||
if (!Offset.isImm())
|
||||
break; // We'll deal with this situation later on when applying fixups.
|
||||
if (!isIntN(18, Offset.getImm()))
|
||||
return Error(IDLoc, "branch target out of range");
|
||||
if (OffsetToAlignment(Offset.getImm(), 1LL << 2))
|
||||
return Error(IDLoc, "branch to misaligned address");
|
||||
break;
|
||||
case Mips::BLEZC: case Mips::BLEZC_MMR6:
|
||||
case Mips::BGEZC: case Mips::BGEZC_MMR6:
|
||||
case Mips::BGTZC: case Mips::BGTZC_MMR6:
|
||||
case Mips::BLTZC: case Mips::BLTZC_MMR6:
|
||||
assert(MCID.getNumOperands() == 2 && "unexpected number of operands");
|
||||
Offset = Inst.getOperand(1);
|
||||
if (!Offset.isImm())
|
||||
break; // We'll deal with this situation later on when applying fixups.
|
||||
if (!isIntN(18, Offset.getImm()))
|
||||
return Error(IDLoc, "branch target out of range");
|
||||
if (OffsetToAlignment(Offset.getImm(), 1LL << 2))
|
||||
return Error(IDLoc, "branch to misaligned address");
|
||||
break;
|
||||
case Mips::BEQZC: case Mips::BEQZC_MMR6:
|
||||
case Mips::BNEZC: case Mips::BNEZC_MMR6:
|
||||
assert(MCID.getNumOperands() == 2 && "unexpected number of operands");
|
||||
Offset = Inst.getOperand(1);
|
||||
if (!Offset.isImm())
|
||||
break; // We'll deal with this situation later on when applying fixups.
|
||||
if (!isIntN(23, Offset.getImm()))
|
||||
return Error(IDLoc, "branch target out of range");
|
||||
if (OffsetToAlignment(Offset.getImm(), 1LL << 2))
|
||||
return Error(IDLoc, "branch to misaligned address");
|
||||
break;
|
||||
case Mips::BEQZ16_MM:
|
||||
case Mips::BEQZC16_MMR6:
|
||||
case Mips::BNEZ16_MM:
|
||||
|
@ -3808,12 +3847,12 @@ unsigned MipsAsmParser::checkTargetMatchPredicate(MCInst &Inst) {
|
|||
// The compact branches that branch iff the signed addition of two registers
|
||||
// would overflow must have rs >= rt. That can be handled like beqc/bnec with
|
||||
// operand swapping. They do not have restriction of using the zero register.
|
||||
case Mips::BLEZC:
|
||||
case Mips::BGEZC:
|
||||
case Mips::BGTZC:
|
||||
case Mips::BLTZC:
|
||||
case Mips::BEQZC:
|
||||
case Mips::BNEZC:
|
||||
case Mips::BLEZC: case Mips::BLEZC_MMR6:
|
||||
case Mips::BGEZC: case Mips::BGEZC_MMR6:
|
||||
case Mips::BGTZC: case Mips::BGTZC_MMR6:
|
||||
case Mips::BLTZC: case Mips::BLTZC_MMR6:
|
||||
case Mips::BEQZC: case Mips::BEQZC_MMR6:
|
||||
case Mips::BNEZC: case Mips::BNEZC_MMR6:
|
||||
case Mips::BLEZC64:
|
||||
case Mips::BGEZC64:
|
||||
case Mips::BGTZC64:
|
||||
|
@ -3824,12 +3863,12 @@ unsigned MipsAsmParser::checkTargetMatchPredicate(MCInst &Inst) {
|
|||
Inst.getOperand(0).getReg() == Mips::ZERO_64)
|
||||
return Match_RequiresNoZeroRegister;
|
||||
return Match_Success;
|
||||
case Mips::BGEC:
|
||||
case Mips::BLTC:
|
||||
case Mips::BGEUC:
|
||||
case Mips::BLTUC:
|
||||
case Mips::BEQC:
|
||||
case Mips::BNEC:
|
||||
case Mips::BGEC: case Mips::BGEC_MMR6:
|
||||
case Mips::BLTC: case Mips::BLTC_MMR6:
|
||||
case Mips::BGEUC: case Mips::BGEUC_MMR6:
|
||||
case Mips::BLTUC: case Mips::BLTUC_MMR6:
|
||||
case Mips::BEQC: case Mips::BEQC_MMR6:
|
||||
case Mips::BNEC: case Mips::BNEC_MMR6:
|
||||
case Mips::BGEC64:
|
||||
case Mips::BLTC64:
|
||||
case Mips::BGEUC64:
|
||||
|
|
|
@ -458,6 +458,16 @@ static DecodeStatus
|
|||
DecodePOP37GroupBranchMMR6(MCInst &MI, InsnType insn, uint64_t Address,
|
||||
const void *Decoder);
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus
|
||||
DecodePOP65GroupBranchMMR6(MCInst &MI, InsnType insn, uint64_t Address,
|
||||
const void *Decoder);
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus
|
||||
DecodePOP75GroupBranchMMR6(MCInst &MI, InsnType insn, uint64_t Address,
|
||||
const void *Decoder);
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus
|
||||
DecodeBlezlGroupBranch(MCInst &MI, InsnType insn, uint64_t Address,
|
||||
|
@ -630,7 +640,7 @@ static DecodeStatus DecodePOP35GroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
const void *Decoder) {
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2;
|
||||
int64_t Imm = 0;
|
||||
|
||||
if (Rs >= Rt) {
|
||||
MI.setOpcode(Mips::BOVC_MMR6);
|
||||
|
@ -638,16 +648,19 @@ static DecodeStatus DecodePOP35GroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
Rt)));
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
} else if (Rs != 0 && Rs < Rt) {
|
||||
MI.setOpcode(Mips::BEQC_MMR6);
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
} else {
|
||||
MI.setOpcode(Mips::BEQZALC_MMR6);
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
|
||||
MI.addOperand(MCOperand::createImm(Imm));
|
||||
|
@ -700,7 +713,7 @@ static DecodeStatus DecodePOP37GroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
const void *Decoder) {
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2;
|
||||
int64_t Imm = 0;
|
||||
|
||||
if (Rs >= Rt) {
|
||||
MI.setOpcode(Mips::BNVC_MMR6);
|
||||
|
@ -708,16 +721,19 @@ static DecodeStatus DecodePOP37GroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
Rt)));
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
} else if (Rs != 0 && Rs < Rt) {
|
||||
MI.setOpcode(Mips::BNEC_MMR6);
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
} else {
|
||||
MI.setOpcode(Mips::BNEZALC_MMR6);
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
|
||||
MI.addOperand(MCOperand::createImm(Imm));
|
||||
|
@ -725,6 +741,84 @@ static DecodeStatus DecodePOP37GroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
return MCDisassembler::Success;
|
||||
}
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus DecodePOP65GroupBranchMMR6(MCInst &MI, InsnType insn,
|
||||
uint64_t Address,
|
||||
const void *Decoder) {
|
||||
// We have:
|
||||
// 0b110101 ttttt sssss iiiiiiiiiiiiiiii
|
||||
// Invalid if rt == 0
|
||||
// BGTZC_MMR6 if rs == 0 && rt != 0
|
||||
// BLTZC_MMR6 if rs == rt && rt != 0
|
||||
// BLTC_MMR6 if rs != rt && rs != 0 && rt != 0
|
||||
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
int64_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
bool HasRs = false;
|
||||
|
||||
if (Rt == 0)
|
||||
return MCDisassembler::Fail;
|
||||
else if (Rs == 0)
|
||||
MI.setOpcode(Mips::BGTZC_MMR6);
|
||||
else if (Rs == Rt)
|
||||
MI.setOpcode(Mips::BLTZC_MMR6);
|
||||
else {
|
||||
MI.setOpcode(Mips::BLTC_MMR6);
|
||||
HasRs = true;
|
||||
}
|
||||
|
||||
if (HasRs)
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
|
||||
MI.addOperand(MCOperand::createImm(Imm));
|
||||
|
||||
return MCDisassembler::Success;
|
||||
}
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus DecodePOP75GroupBranchMMR6(MCInst &MI, InsnType insn,
|
||||
uint64_t Address,
|
||||
const void *Decoder) {
|
||||
// We have:
|
||||
// 0b111101 ttttt sssss iiiiiiiiiiiiiiii
|
||||
// Invalid if rt == 0
|
||||
// BLEZC_MMR6 if rs == 0 && rt != 0
|
||||
// BGEZC_MMR6 if rs == rt && rt != 0
|
||||
// BGEC_MMR6 if rs != rt && rs != 0 && rt != 0
|
||||
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
int64_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
bool HasRs = false;
|
||||
|
||||
if (Rt == 0)
|
||||
return MCDisassembler::Fail;
|
||||
else if (Rs == 0)
|
||||
MI.setOpcode(Mips::BLEZC_MMR6);
|
||||
else if (Rs == Rt)
|
||||
MI.setOpcode(Mips::BGEZC_MMR6);
|
||||
else {
|
||||
HasRs = true;
|
||||
MI.setOpcode(Mips::BGEC_MMR6);
|
||||
}
|
||||
|
||||
if (HasRs)
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rs)));
|
||||
|
||||
MI.addOperand(MCOperand::createReg(getReg(Decoder, Mips::GPR32RegClassID,
|
||||
Rt)));
|
||||
|
||||
MI.addOperand(MCOperand::createImm(Imm));
|
||||
|
||||
return MCDisassembler::Success;
|
||||
}
|
||||
|
||||
template <typename InsnType>
|
||||
static DecodeStatus DecodeBlezlGroupBranch(MCInst &MI, InsnType insn,
|
||||
uint64_t Address,
|
||||
|
@ -2008,7 +2102,7 @@ static DecodeStatus DecodeBranchTarget21MM(MCInst &Inst,
|
|||
unsigned Offset,
|
||||
uint64_t Address,
|
||||
const void *Decoder) {
|
||||
int32_t BranchOffset = SignExtend32<21>(Offset) << 1;
|
||||
int32_t BranchOffset = SignExtend32<21>(Offset) * 4 + 4;
|
||||
|
||||
Inst.addOperand(MCOperand::createImm(BranchOffset));
|
||||
return MCDisassembler::Success;
|
||||
|
@ -2046,7 +2140,7 @@ static DecodeStatus DecodeBranchTargetMM(MCInst &Inst,
|
|||
unsigned Offset,
|
||||
uint64_t Address,
|
||||
const void *Decoder) {
|
||||
int32_t BranchOffset = SignExtend32<16>(Offset) * 2;
|
||||
int32_t BranchOffset = SignExtend32<16>(Offset) * 2 + 4;
|
||||
Inst.addOperand(MCOperand::createImm(BranchOffset));
|
||||
return MCDisassembler::Success;
|
||||
}
|
||||
|
@ -2285,7 +2379,7 @@ static DecodeStatus DecodeBgtzGroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2;
|
||||
InsnType Imm = 0;
|
||||
bool HasRs = false;
|
||||
bool HasRt = false;
|
||||
|
||||
|
@ -2294,15 +2388,18 @@ static DecodeStatus DecodeBgtzGroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
else if (Rs == 0) {
|
||||
MI.setOpcode(Mips::BGTZALC_MMR6);
|
||||
HasRt = true;
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
else if (Rs == Rt) {
|
||||
MI.setOpcode(Mips::BLTZALC_MMR6);
|
||||
HasRs = true;
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
else {
|
||||
MI.setOpcode(Mips::BLTUC_MMR6);
|
||||
HasRs = true;
|
||||
HasRt = true;
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
}
|
||||
|
||||
if (HasRs)
|
||||
|
@ -2324,25 +2421,30 @@ static DecodeStatus DecodeBlezGroupBranchMMR6(MCInst &MI, InsnType insn,
|
|||
const void *Decoder) {
|
||||
// We have:
|
||||
// 0b000110 ttttt sssss iiiiiiiiiiiiiiii
|
||||
// Invalid if rs == 0
|
||||
// Invalid if rt == 0
|
||||
// BLEZALC_MMR6 if rs == 0 && rt != 0
|
||||
// BGEZALC_MMR6 if rs == rt && rt != 0
|
||||
// BGEUC_MMR6 if rs != rt && rs != 0 && rt != 0
|
||||
|
||||
InsnType Rt = fieldFromInstruction(insn, 21, 5);
|
||||
InsnType Rs = fieldFromInstruction(insn, 16, 5);
|
||||
InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2;
|
||||
InsnType Imm = 0;
|
||||
bool HasRs = false;
|
||||
|
||||
if (Rt == 0)
|
||||
return MCDisassembler::Fail;
|
||||
else if (Rs == 0)
|
||||
else if (Rs == 0) {
|
||||
MI.setOpcode(Mips::BLEZALC_MMR6);
|
||||
else if (Rs == Rt)
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
else if (Rs == Rt) {
|
||||
MI.setOpcode(Mips::BGEZALC_MMR6);
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 2 + 4;
|
||||
}
|
||||
else {
|
||||
HasRs = true;
|
||||
MI.setOpcode(Mips::BGEUC_MMR6);
|
||||
Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4 + 4;
|
||||
}
|
||||
|
||||
if (HasRs)
|
||||
|
|
|
@ -335,6 +335,30 @@ getBranchTargetOpValueMMR6(const MCInst &MI, unsigned OpNo,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/// getBranchTargetOpValueLsl2MMR6 - Return binary encoding of the branch
|
||||
/// target operand. If the machine operand requires relocation,
|
||||
/// record the relocation and return zero.
|
||||
unsigned MipsMCCodeEmitter::
|
||||
getBranchTargetOpValueLsl2MMR6(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixups,
|
||||
const MCSubtargetInfo &STI) const {
|
||||
|
||||
const MCOperand &MO = MI.getOperand(OpNo);
|
||||
|
||||
// If the destination is an immediate, divide by 4.
|
||||
if (MO.isImm())
|
||||
return MO.getImm() >> 2;
|
||||
|
||||
assert(MO.isExpr() &&
|
||||
"getBranchTargetOpValueLsl2MMR6 expects only expressions or immediates");
|
||||
|
||||
const MCExpr *FixupExpression = MCBinaryExpr::createAdd(
|
||||
MO.getExpr(), MCConstantExpr::create(-4, Ctx), Ctx);
|
||||
Fixups.push_back(MCFixup::create(0, FixupExpression,
|
||||
MCFixupKind(Mips::fixup_Mips_PC16)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// getBranchTarget7OpValueMM - Return binary encoding of the microMIPS branch
|
||||
/// target operand. If the machine operand requires relocation,
|
||||
/// record the relocation and return zero.
|
||||
|
@ -435,8 +459,8 @@ getBranchTarget21OpValueMM(const MCInst &MI, unsigned OpNo,
|
|||
|
||||
const MCOperand &MO = MI.getOperand(OpNo);
|
||||
|
||||
// If the destination is an immediate, divide by 2.
|
||||
if (MO.isImm()) return MO.getImm() >> 1;
|
||||
// If the destination is an immediate, divide by 4.
|
||||
if (MO.isImm()) return MO.getImm() >> 2;
|
||||
|
||||
assert(MO.isExpr() &&
|
||||
"getBranchTarget21OpValueMM expects only expressions or immediates");
|
||||
|
|
|
@ -116,6 +116,13 @@ public:
|
|||
SmallVectorImpl<MCFixup> &Fixups,
|
||||
const MCSubtargetInfo &STI) const;
|
||||
|
||||
// getBranchTargetOpValueLsl2MMR6 - Return binary encoding of the branch
|
||||
// target operand. If the machine operand requires relocation,
|
||||
// record the relocation and return zero.
|
||||
unsigned getBranchTargetOpValueLsl2MMR6(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixups,
|
||||
const MCSubtargetInfo &STI) const;
|
||||
|
||||
// getBranchTarget7OpValue - Return binary encoding of the microMIPS branch
|
||||
// target operand. If the machine operand requires relocation,
|
||||
// record the relocation and return zero.
|
||||
|
|
|
@ -32,6 +32,15 @@ def brtargetr6 : Operand<OtherVT> {
|
|||
let ParserMatchClass = MipsJumpTargetAsmOperand;
|
||||
}
|
||||
|
||||
def brtarget_lsl2_mm : Operand<OtherVT> {
|
||||
let EncoderMethod = "getBranchTargetOpValueLsl2MMR6";
|
||||
let OperandType = "OPERAND_PCREL";
|
||||
// Instructions that use this operand have their decoder method
|
||||
// set with DecodeDisambiguates
|
||||
let DecoderMethod = "";
|
||||
let ParserMatchClass = MipsJumpTargetAsmOperand;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Instruction Encodings
|
||||
|
@ -56,16 +65,28 @@ class BITSWAP_MMR6_ENC : POOL32A_BITSWAP_FM_MMR6<0b101100>;
|
|||
class BRK_MMR6_ENC : BREAK_MMR6_ENC<"break">;
|
||||
class BEQZC_MMR6_ENC : CMP_BRANCH_OFF21_FM_MMR6<"beqzc", 0b100000>;
|
||||
class BNEZC_MMR6_ENC : CMP_BRANCH_OFF21_FM_MMR6<"bnezc", 0b101000>;
|
||||
class BGEC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bgec", 0b111001>;
|
||||
class BGEC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bgec", 0b111101>,
|
||||
DecodeDisambiguates<"POP75GroupBranchMMR6">;
|
||||
class BGEUC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bgeuc", 0b110000>,
|
||||
DecodeDisambiguates<"BlezGroupBranchMMR6">;
|
||||
class BLTC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bltc", 0b110001>;
|
||||
class BLTC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bltc", 0b110101>,
|
||||
DecodeDisambiguates<"POP65GroupBranchMMR6">;
|
||||
class BLTUC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bltuc", 0b111000>,
|
||||
DecodeDisambiguates<"BgtzGroupBranchMMR6">;
|
||||
class BEQC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"beqc", 0b011101>;
|
||||
class BNEC_MMR6_ENC : CMP_BRANCH_2R_OFF16_FM_MMR6<"bnec", 0b011111>;
|
||||
class BEQZALC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"beqzalc", 0b011101>;
|
||||
class BNEZALC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"bnezalc", 0b011111>;
|
||||
class BLTZC_MMR6_ENC : CMP_BRANCH_1R_BOTH_OFF16_FM_MMR6<"bltzc", 0b110101>,
|
||||
DecodeDisambiguates<"POP65GroupBranchMMR6">;
|
||||
class BLEZC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"blezc", 0b111101>,
|
||||
DecodeDisambiguates<"POP75GroupBranchMMR6">;
|
||||
class BGEZC_MMR6_ENC : CMP_BRANCH_1R_BOTH_OFF16_FM_MMR6<"bgezc", 0b111101>,
|
||||
DecodeDisambiguates<"POP75GroupBranchMMR6">;
|
||||
class BGTZC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"bgtzc", 0b110101>,
|
||||
DecodeDisambiguates<"POP65GroupBranchMMR6">;
|
||||
class BEQZALC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"beqzalc", 0b011101>,
|
||||
DecodeDisambiguates<"POP35GroupBranchMMR6">;
|
||||
class BNEZALC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"bnezalc", 0b011111>,
|
||||
DecodeDisambiguates<"POP37GroupBranchMMR6">;
|
||||
class BGTZALC_MMR6_ENC : CMP_BRANCH_1R_RT_OFF16_FM_MMR6<"bgtzalc", 0b111000>,
|
||||
MMDecodeDisambiguatedBy<"BgtzGroupBranchMMR6">;
|
||||
class BLTZALC_MMR6_ENC : CMP_BRANCH_1R_BOTH_OFF16_FM_MMR6<"bltzalc", 0b111000>,
|
||||
|
@ -230,66 +251,6 @@ class SDC2_MMR6_ENC : POOL32B_LDWC2_SDWC2_FM_MMR6<"sdc2", 0b1010>;
|
|||
class LWC2_MMR6_ENC : POOL32B_LDWC2_SDWC2_FM_MMR6<"lwc2", 0b0000>;
|
||||
class SWC2_MMR6_ENC : POOL32B_LDWC2_SDWC2_FM_MMR6<"swc2", 0b1000>;
|
||||
|
||||
class CMP_CBR_RT_Z_MMR6_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd>
|
||||
: BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rt, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rt, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BEQZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"beqzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BGEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BGTZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgtzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BLEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"blezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BLTZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bltzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BNEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bnezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class CMP_CBR_2R_MMR6_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rs, $rt, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BGEC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bgec", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
class BGEUC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bgeuc", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
class BLTC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bltc", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
class BLTUC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bltuc", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
class BEQC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"beqc", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
class BNEC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bnec", brtarget_mm,
|
||||
GPR32Opnd>;
|
||||
|
||||
/// Floating Point Instructions
|
||||
class FADD_S_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"add.s", 0, 0b00110000>;
|
||||
class FADD_D_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"add.d", 1, 0b00110000>;
|
||||
|
@ -333,6 +294,75 @@ class CVT_S_L_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.s.l", 2, 0b1101101>;
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class CMP_CBR_RT_Z_MMR6_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd>
|
||||
: BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rt, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rt, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BEQZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"beqzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BGEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BGTZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgtzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BLEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"blezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BLTZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bltzalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BNEZALC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bnezalc", brtarget_mm,
|
||||
GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BLTZC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bltzc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BLEZC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"blezc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BGEZC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgezc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BGTZC_MMR6_DESC : CMP_CBR_RT_Z_MMR6_DESC_BASE<"bgtzc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
|
||||
class CMP_CBR_2R_MMR6_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rs, $rt, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BGEC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bgec", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BGEUC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bgeuc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BLTC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bltc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BLTUC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bltuc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BEQC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"beqc", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
class BNEC_MMR6_DESC : CMP_CBR_2R_MMR6_DESC_BASE<"bnec", brtarget_lsl2_mm,
|
||||
GPR32Opnd>;
|
||||
|
||||
class ADD_MMR6_DESC : ArithLogicR<"add", GPR32Opnd>;
|
||||
class ADDIU_MMR6_DESC : ArithLogicI<"addiu", simm16, GPR32Opnd, II_ADDIU, immSExt16, add>;
|
||||
class ADDU_MMR6_DESC : ArithLogicR<"addu", GPR32Opnd>;
|
||||
|
@ -1661,6 +1691,10 @@ def BEQC_MMR6 : R6MMR6Rel, BEQC_MMR6_ENC, BEQC_MMR6_DESC, ISA_MICROMIPS32R6,
|
|||
DecodeDisambiguates<"POP35GroupBranchMMR6">;
|
||||
def BNEC_MMR6 : R6MMR6Rel, BNEC_MMR6_ENC, BNEC_MMR6_DESC, ISA_MICROMIPS32R6,
|
||||
DecodeDisambiguates<"POP37GroupBranchMMR6">;
|
||||
def BLTZC_MMR6 : R6MMR6Rel, BLTZC_MMR6_ENC, BLTZC_MMR6_DESC, ISA_MICROMIPS32R6;
|
||||
def BLEZC_MMR6 : R6MMR6Rel, BLEZC_MMR6_ENC, BLEZC_MMR6_DESC, ISA_MICROMIPS32R6;
|
||||
def BGEZC_MMR6 : R6MMR6Rel, BGEZC_MMR6_ENC, BGEZC_MMR6_DESC, ISA_MICROMIPS32R6;
|
||||
def BGTZC_MMR6 : R6MMR6Rel, BGTZC_MMR6_ENC, BGTZC_MMR6_DESC, ISA_MICROMIPS32R6;
|
||||
def BGEZALC_MMR6 : R6MMR6Rel, BGEZALC_MMR6_ENC, BGEZALC_MMR6_DESC,
|
||||
ISA_MICROMIPS32R6;
|
||||
def BGTZALC_MMR6 : R6MMR6Rel, BGTZALC_MMR6_ENC, BGTZALC_MMR6_DESC,
|
||||
|
|
|
@ -675,13 +675,15 @@ class WaitMM<string opstr> :
|
|||
InstSE<(outs), (ins uimm10:$code_), !strconcat(opstr, "\t$code_"), [],
|
||||
NoItinerary, FrmOther, opstr>;
|
||||
|
||||
let DecoderNamespace = "MicroMips", Predicates = [InMicroMips] in {
|
||||
let DecoderNamespace = "MicroMips", Predicates = [InMicroMips, NotMips32r6,
|
||||
NotMips64r6] in {
|
||||
/// Compact Branch Instructions
|
||||
def BEQZC_MM : CompactBranchMM<"beqzc", brtarget_mm, seteq, GPR32Opnd>,
|
||||
COMPACT_BRANCH_FM_MM<0x7>;
|
||||
def BNEZC_MM : CompactBranchMM<"bnezc", brtarget_mm, setne, GPR32Opnd>,
|
||||
COMPACT_BRANCH_FM_MM<0x5>;
|
||||
|
||||
}
|
||||
let DecoderNamespace = "MicroMips", Predicates = [InMicroMips] in {
|
||||
/// Arithmetic Instructions (ALU Immediate)
|
||||
def ADDiu_MM : MMRel, ArithLogicI<"addiu", simm16, GPR32Opnd>,
|
||||
ADDI_FM_MM<0xc>;
|
||||
|
|
|
@ -754,26 +754,28 @@ let AdditionalPredicates = [NotInMicroMips] in {
|
|||
def BC2NEZ : BC2NEZ_ENC, BC2NEZ_DESC, ISA_MIPS32R6;
|
||||
}
|
||||
def BC : R6MMR6Rel, BC_ENC, BC_DESC, ISA_MIPS32R6;
|
||||
def BEQC : R6MMR6Rel, BEQC_ENC, BEQC_DESC, ISA_MIPS32R6;
|
||||
def BEQZALC : R6MMR6Rel, BEQZALC_ENC, BEQZALC_DESC, ISA_MIPS32R6;
|
||||
def BEQZC : R6MMR6Rel, BEQZC_ENC, BEQZC_DESC, ISA_MIPS32R6;
|
||||
def BGEC : R6MMR6Rel, BGEC_ENC, BGEC_DESC, ISA_MIPS32R6;
|
||||
def BGEUC : R6MMR6Rel, BGEUC_ENC, BGEUC_DESC, ISA_MIPS32R6;
|
||||
def BGEZALC : R6MMR6Rel, BGEZALC_ENC, BGEZALC_DESC, ISA_MIPS32R6;
|
||||
def BGEZC : BGEZC_ENC, BGEZC_DESC, ISA_MIPS32R6;
|
||||
def BGTZALC : R6MMR6Rel, BGTZALC_ENC, BGTZALC_DESC, ISA_MIPS32R6;
|
||||
def BGTZC : BGTZC_ENC, BGTZC_DESC, ISA_MIPS32R6;
|
||||
def BITSWAP : R6MMR6Rel, BITSWAP_ENC, BITSWAP_DESC, ISA_MIPS32R6;
|
||||
def BLEZALC : R6MMR6Rel, BLEZALC_ENC, BLEZALC_DESC, ISA_MIPS32R6;
|
||||
def BLEZC : BLEZC_ENC, BLEZC_DESC, ISA_MIPS32R6;
|
||||
def BLTC : R6MMR6Rel, BLTC_ENC, BLTC_DESC, ISA_MIPS32R6;
|
||||
def BLTUC : R6MMR6Rel, BLTUC_ENC, BLTUC_DESC, ISA_MIPS32R6;
|
||||
def BLTZALC : R6MMR6Rel, BLTZALC_ENC, BLTZALC_DESC, ISA_MIPS32R6;
|
||||
def BLTZC : BLTZC_ENC, BLTZC_DESC, ISA_MIPS32R6;
|
||||
def BNEC : R6MMR6Rel, BNEC_ENC, BNEC_DESC, ISA_MIPS32R6;
|
||||
def BNEZALC : R6MMR6Rel, BNEZALC_ENC, BNEZALC_DESC, ISA_MIPS32R6;
|
||||
def BNEZC : R6MMR6Rel, BNEZC_ENC, BNEZC_DESC, ISA_MIPS32R6;
|
||||
let AdditionalPredicates = [NotInMicroMips] in {
|
||||
def BEQC : R6MMR6Rel, BEQC_ENC, BEQC_DESC, ISA_MIPS32R6;
|
||||
def BEQZALC : R6MMR6Rel, BEQZALC_ENC, BEQZALC_DESC, ISA_MIPS32R6;
|
||||
def BEQZC : R6MMR6Rel, BEQZC_ENC, BEQZC_DESC, ISA_MIPS32R6;
|
||||
def BGEC : R6MMR6Rel, BGEC_ENC, BGEC_DESC, ISA_MIPS32R6;
|
||||
def BGEUC : R6MMR6Rel, BGEUC_ENC, BGEUC_DESC, ISA_MIPS32R6;
|
||||
def BGEZALC : R6MMR6Rel, BGEZALC_ENC, BGEZALC_DESC, ISA_MIPS32R6;
|
||||
def BGEZC : R6MMR6Rel, BGEZC_ENC, BGEZC_DESC, ISA_MIPS32R6;
|
||||
def BGTZALC : R6MMR6Rel, BGTZALC_ENC, BGTZALC_DESC, ISA_MIPS32R6;
|
||||
def BGTZC : R6MMR6Rel, BGTZC_ENC, BGTZC_DESC, ISA_MIPS32R6;
|
||||
}
|
||||
def BITSWAP : R6MMR6Rel, BITSWAP_ENC, BITSWAP_DESC, ISA_MIPS32R6;
|
||||
let AdditionalPredicates = [NotInMicroMips] in {
|
||||
def BLEZALC : R6MMR6Rel, BLEZALC_ENC, BLEZALC_DESC, ISA_MIPS32R6;
|
||||
def BLEZC : R6MMR6Rel, BLEZC_ENC, BLEZC_DESC, ISA_MIPS32R6;
|
||||
def BLTC : R6MMR6Rel, BLTC_ENC, BLTC_DESC, ISA_MIPS32R6;
|
||||
def BLTUC : R6MMR6Rel, BLTUC_ENC, BLTUC_DESC, ISA_MIPS32R6;
|
||||
def BLTZALC : R6MMR6Rel, BLTZALC_ENC, BLTZALC_DESC, ISA_MIPS32R6;
|
||||
def BLTZC : R6MMR6Rel, BLTZC_ENC, BLTZC_DESC, ISA_MIPS32R6;
|
||||
def BNEC : R6MMR6Rel, BNEC_ENC, BNEC_DESC, ISA_MIPS32R6;
|
||||
def BNEZALC : R6MMR6Rel, BNEZALC_ENC, BNEZALC_DESC, ISA_MIPS32R6;
|
||||
def BNEZC : R6MMR6Rel, BNEZC_ENC, BNEZC_DESC, ISA_MIPS32R6;
|
||||
def BNVC : R6MMR6Rel, BNVC_ENC, BNVC_DESC, ISA_MIPS32R6;
|
||||
def BOVC : R6MMR6Rel, BOVC_ENC, BOVC_DESC, ISA_MIPS32R6;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r3 -mattr=micromips -mattr=+dsp | FileCheck %s
|
||||
|
||||
0x43 0x60 0x00 0xab # CHECK: bposge32 342
|
||||
0x43 0x60 0x00 0xab # CHECK: bposge32 346
|
||||
|
|
|
@ -125,14 +125,14 @@
|
|||
0x00 0xf4 0x98 0x02 # CHECK: jal 1328
|
||||
0xe6 0x03 0x3c 0x0f # CHECK: jalr $ra, $6
|
||||
0x07 0x00 0x3c 0x0f # CHECK: jr $7
|
||||
0xc9 0x94 0x9a 0x02 # CHECK: beq $9, $6, 1332
|
||||
0x46 0x40 0x9a 0x02 # CHECK: bgez $6, 1332
|
||||
0x66 0x40 0x9a 0x02 # CHECK: bgezal $6, 1332
|
||||
0x26 0x40 0x9a 0x02 # CHECK: bltzal $6, 1332
|
||||
0xc6 0x40 0x9a 0x02 # CHECK: bgtz $6, 1332
|
||||
0x86 0x40 0x9a 0x02 # CHECK: blez $6, 1332
|
||||
0xc9 0xb4 0x9a 0x02 # CHECK: bne $9, $6, 1332
|
||||
0x06 0x40 0x9a 0x02 # CHECK: bltz $6, 1332
|
||||
0xc9 0x94 0x9a 0x02 # CHECK: beq $9, $6, 1336
|
||||
0x46 0x40 0x9a 0x02 # CHECK: bgez $6, 1336
|
||||
0x66 0x40 0x9a 0x02 # CHECK: bgezal $6, 1336
|
||||
0x26 0x40 0x9a 0x02 # CHECK: bltzal $6, 1336
|
||||
0xc6 0x40 0x9a 0x02 # CHECK: bgtz $6, 1336
|
||||
0x86 0x40 0x9a 0x02 # CHECK: blez $6, 1336
|
||||
0xc9 0xb4 0x9a 0x02 # CHECK: bne $9, $6, 1336
|
||||
0x06 0x40 0x9a 0x02 # CHECK: bltz $6, 1336
|
||||
0x28 0x01 0x3c 0x00 # CHECK: teq $8, $9
|
||||
0x28 0x01 0x3c 0x02 # CHECK: tge $8, $9
|
||||
0x28 0x01 0x3c 0x04 # CHECK: tgeu $8, $9
|
||||
|
@ -153,10 +153,10 @@
|
|||
0x44 0x60 0x08 0x30 # CHECK: ll $2, 8($4)
|
||||
0x44 0x60 0x08 0xb0 # CHECK: sc $2, 8($4)
|
||||
0x64 0x00 0x18 0x11 # CHECK: lwxs $2, $3($4)
|
||||
0x66 0x42 0x9a 0x02 # CHECK: bgezals $6, 1332
|
||||
0x26 0x42 0x9a 0x02 # CHECK: bltzals $6, 1332
|
||||
0xe9 0x40 0x9a 0x02 # CHECK: beqzc $9, 1332
|
||||
0xa9 0x40 0x9a 0x02 # CHECK: bnezc $9, 1332
|
||||
0x66 0x42 0x9a 0x02 # CHECK: bgezals $6, 1336
|
||||
0x26 0x42 0x9a 0x02 # CHECK: bltzals $6, 1336
|
||||
0xe9 0x40 0x9a 0x02 # CHECK: beqzc $9, 1336
|
||||
0xa9 0x40 0x9a 0x02 # CHECK: bnezc $9, 1336
|
||||
0x00 0x74 0x98 0x02 # CHECK: jals 1328
|
||||
0xe6 0x03 0x3c 0x4f # CHECK: jalrs $ra, $6
|
||||
0x44 0x20 0x08 0x50 # CHECK: lwm32 $16, $17, 8($4)
|
||||
|
|
|
@ -125,14 +125,14 @@
|
|||
0xf4 0x00 0x02 0x98 # CHECK: jal 1328
|
||||
0x03 0xe6 0x0f 0x3c # CHECK: jalr $ra, $6
|
||||
0x00 0x07 0x0f 0x3c # CHECK: jr $7
|
||||
0x94 0xc9 0x02 0x9a # CHECK: beq $9, $6, 1332
|
||||
0x40 0x46 0x02 0x9a # CHECK: bgez $6, 1332
|
||||
0x40 0x66 0x02 0x9a # CHECK: bgezal $6, 1332
|
||||
0x40 0x26 0x02 0x9a # CHECK: bltzal $6, 1332
|
||||
0x40 0xc6 0x02 0x9a # CHECK: bgtz $6, 1332
|
||||
0x40 0x86 0x02 0x9a # CHECK: blez $6, 1332
|
||||
0xb4 0xc9 0x02 0x9a # CHECK: bne $9, $6, 1332
|
||||
0x40 0x06 0x02 0x9a # CHECK: bltz $6, 1332
|
||||
0x94 0xc9 0x02 0x9a # CHECK: beq $9, $6, 1336
|
||||
0x40 0x46 0x02 0x9a # CHECK: bgez $6, 1336
|
||||
0x40 0x66 0x02 0x9a # CHECK: bgezal $6, 1336
|
||||
0x40 0x26 0x02 0x9a # CHECK: bltzal $6, 1336
|
||||
0x40 0xc6 0x02 0x9a # CHECK: bgtz $6, 1336
|
||||
0x40 0x86 0x02 0x9a # CHECK: blez $6, 1336
|
||||
0xb4 0xc9 0x02 0x9a # CHECK: bne $9, $6, 1336
|
||||
0x40 0x06 0x02 0x9a # CHECK: bltz $6, 1336
|
||||
0x01 0x28 0x00 0x3c # CHECK: teq $8, $9
|
||||
0x01 0x28 0x02 0x3c # CHECK: tge $8, $9
|
||||
0x01 0x28 0x04 0x3c # CHECK: tgeu $8, $9
|
||||
|
@ -153,10 +153,10 @@
|
|||
0x60 0x44 0x30 0x08 # CHECK: ll $2, 8($4)
|
||||
0x60 0x44 0xb0 0x08 # CHECK: sc $2, 8($4)
|
||||
0x00 0x64 0x11 0x18 # CHECK: lwxs $2, $3($4)
|
||||
0x42 0x66 0x02 0x9a # CHECK: bgezals $6, 1332
|
||||
0x42 0x26 0x02 0x9a # CHECK: bltzals $6, 1332
|
||||
0x40 0xe9 0x02 0x9a # CHECK: beqzc $9, 1332
|
||||
0x40 0xa9 0x02 0x9a # CHECK: bnezc $9, 1332
|
||||
0x42 0x66 0x02 0x9a # CHECK: bgezals $6, 1336
|
||||
0x42 0x26 0x02 0x9a # CHECK: bltzals $6, 1336
|
||||
0x40 0xe9 0x02 0x9a # CHECK: beqzc $9, 1336
|
||||
0x40 0xa9 0x02 0x9a # CHECK: bnezc $9, 1336
|
||||
0x74 0x00 0x02 0x98 # CHECK: jals 1328
|
||||
0x03 0xe6 0x4f 0x3c # CHECK: jalrs $ra, $6
|
||||
0x20 0x44 0x50 0x08 # CHECK: lwm32 $16, $17, 8($4)
|
||||
|
|
|
@ -39,20 +39,20 @@
|
|||
0x00 0xa4 0x1a 0x50 # CHECK: and $3, $4, $5
|
||||
0xd0 0x64 0x04 0xd2 # CHECK: andi $3, $4, 1234
|
||||
0x10 0x62 0xff 0xe9 # CHECK: aui $3, $2, -23
|
||||
0x74 0x83 0x00 0x08 # CHECK: beqc $3, $4, 16
|
||||
0xe4 0x83 0x00 0x08 # CHECK: bgec $3, $4, 16
|
||||
0xc0 0x83 0x00 0x08 # CHECK: bgeuc $3, $4, 16
|
||||
0xc4 0x83 0x00 0x08 # CHECK: bltc $3, $4, 16
|
||||
0xe0 0x83 0x00 0x08 # CHECK: bltuc $3, $4, 16
|
||||
0x7c 0x83 0x00 0x08 # CHECK: bnec $3, $4, 16
|
||||
0x74 0x40 0x02 0x9a # CHECK: beqzalc $2, 1332
|
||||
0x7c 0x40 0x02 0x9a # CHECK: bnezalc $2, 1332
|
||||
0xc0 0x42 0x02 0x9a # CHECK: bgezalc $2, 1332
|
||||
0xe0 0x40 0x02 0x9a # CHECK: bgtzalc $2, 1332
|
||||
0xe0 0x42 0x02 0x9a # CHECK: bltzalc $2, 1332
|
||||
0xc0 0x40 0x02 0x9a # CHECK: blezalc $2, 1332
|
||||
0x80 0x60 0x00 0x20 # CHECK: beqzc $3, 64
|
||||
0xa0 0x60 0x00 0x20 # CHECK: bnezc $3, 64
|
||||
0x74 0x83 0x00 0x04 # CHECK: beqc $3, $4, 20
|
||||
0xf4 0x83 0x00 0x04 # CHECK: bgec $3, $4, 20
|
||||
0xc0 0x83 0x00 0x04 # CHECK: bgeuc $3, $4, 20
|
||||
0xd4 0x83 0x00 0x04 # CHECK: bltc $3, $4, 20
|
||||
0xe0 0x83 0x00 0x04 # CHECK: bltuc $3, $4, 20
|
||||
0x7c 0x83 0x00 0x04 # CHECK: bnec $3, $4, 20
|
||||
0x74 0x40 0x02 0x9a # CHECK: beqzalc $2, 1336
|
||||
0x7c 0x40 0x02 0x9a # CHECK: bnezalc $2, 1336
|
||||
0xc0 0x42 0x02 0x9a # CHECK: bgezalc $2, 1336
|
||||
0xe0 0x40 0x02 0x9a # CHECK: bgtzalc $2, 1336
|
||||
0xe0 0x42 0x02 0x9a # CHECK: bltzalc $2, 1336
|
||||
0xc0 0x40 0x02 0x9a # CHECK: blezalc $2, 1336
|
||||
0x80 0x60 0x00 0x10 # CHECK: beqzc $3, 68
|
||||
0xa0 0x60 0x00 0x10 # CHECK: bnezc $3, 68
|
||||
0xb4 0x37 0x96 0xb8 # CHECK: balc 7286128
|
||||
0x94 0x37 0x96 0xb8 # CHECK: bc 7286128
|
||||
0x00 0x44 0x0b 0x3c # CHECK: bitswap $4, $2
|
||||
|
@ -315,16 +315,16 @@
|
|||
0x00 0x65 0x10 0x50 # CHECK: srlv $2, $3, $5
|
||||
0x22 0x04 0x10 0x08 # CHECK: lwp $16, 8($4)
|
||||
0x22 0x04 0x90 0x08 # CHECK: swp $16, 8($4)
|
||||
0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 4
|
||||
0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 4
|
||||
0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 8
|
||||
0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 8
|
||||
0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 8
|
||||
0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 8
|
||||
0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 12
|
||||
0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 12
|
||||
0x01 0x26 0x30 0xec # CHECK: ext $9, $6, 3, 7
|
||||
0x01 0x26 0x48 0xcc # CHECK: ins $9, $6, 3, 7
|
||||
0x00 0x85 0x0f 0x3c # CHECK: jalrc $4, $5
|
||||
0x03 0xe5 0x0f 0x3c # CHECK: jalrc $5
|
||||
0x74 0x44 0x00 0x0c # CHECK: bovc $2, $4, 24
|
||||
0x7c 0x44 0x00 0x0c # CHECK: bnvc $2, $4, 24
|
||||
0x74 0x44 0x00 0x0c # CHECK: bovc $2, $4, 28
|
||||
0x7c 0x44 0x00 0x0c # CHECK: bnvc $2, $4, 28
|
||||
0xd0 0x64 0x00 0x05 # CHECK: andi $3, $4, 5
|
||||
0x50 0x64 0x00 0x05 # CHECK: ori $3, $4, 5
|
||||
0x70 0x64 0x00 0x05 # CHECK: xori $3, $4, 5
|
||||
|
@ -343,3 +343,7 @@
|
|||
0x00 0x64 0xcd 0x3c # CHECK: cfc2 $3, $4
|
||||
0x54 0xa6 0x18 0x3b # CHECK: ctc1 $5, $6
|
||||
0x00 0xe8 0xdd 0x3c # CHECK: ctc2 $7, $8
|
||||
0xd4 0xc6 0x00 0x20 # CHECK: bltzc $6, 132
|
||||
0xf4 0x40 0x00 0x40 # CHECK: blezc $2, 260
|
||||
0xf6 0x10 0x00 0x80 # CHECK: bgezc $16, 516
|
||||
0xd5 0x80 0x01 0x00 # CHECK: bgtzc $12, 1028
|
||||
|
|
|
@ -272,10 +272,10 @@
|
|||
0x58 0xa6 0x20 0x10 # CHECK: dsllv $4, $5, $6
|
||||
0x58 0x85 0x28 0x80 # CHECK: dsra $4, $5, 5
|
||||
0x58 0xa6 0x20 0x90 # CHECK: dsrav $4, $5, $6
|
||||
0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 4
|
||||
0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 4
|
||||
0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 8
|
||||
0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 8
|
||||
0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 8
|
||||
0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 8
|
||||
0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 12
|
||||
0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 12
|
||||
0x00 0xa4 0x1a 0x50 # CHECK: and $3, $4, $5
|
||||
0xd0 0x64 0x04 0xd2 # CHECK: andi $3, $4, 1234
|
||||
0x00 0xa4 0x1a 0x90 # CHECK: or $3, $4, $5
|
||||
|
@ -310,3 +310,7 @@
|
|||
0x00 0x64 0xcd 0x3c # CHECK: cfc2 $3, $4
|
||||
0x54 0xa6 0x18 0x3b # CHECK: ctc1 $5, $6
|
||||
0x00 0xe8 0xdd 0x3c # CHECK: ctc2 $7, $8
|
||||
0xd4 0xc6 0x00 0x20 # CHECK: bltzc $6, 132
|
||||
0xf4 0x40 0x00 0x40 # CHECK: blezc $2, 260
|
||||
0xf6 0x10 0x00 0x80 # CHECK: bgezc $16, 516
|
||||
0xd5 0x80 0x01 0x00 # CHECK: bgtzc $12, 1028
|
||||
|
|
|
@ -16,7 +16,7 @@ main:
|
|||
addiu $sp, $sp, -16
|
||||
bnez $9, lab1
|
||||
|
||||
# CHECK: 09 b4 04 00 bnez $9, 8
|
||||
# CHECK: 09 b4 04 00 bnez $9, 12
|
||||
|
||||
addu $zero, $zero, $zero
|
||||
lab1:
|
||||
|
|
|
@ -281,3 +281,69 @@
|
|||
sdc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||
swc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||
swc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||
bgec $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgec $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bgec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bltc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgeuc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bgeuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltuc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bltuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
beqc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnec $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bnec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
blezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgtzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqzc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnezc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
|
|
|
@ -20,20 +20,20 @@
|
|||
auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0x78,0x7e,0xff,0xff]
|
||||
align $4, $2, $3, 2 # CHECK: align $4, $2, $3, 2 # encoding: [0x00,0x43,0x24,0x1f]
|
||||
aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x10,0x62,0xff,0xe9]
|
||||
beqc $3,$4, 16 # CHECK: beqc $3, $4, 16 # encoding: [0x74,0x83,0x00,0x08]
|
||||
bgec $3,$4, 16 # CHECK: bgec $3, $4, 16 # encoding: [0xe4,0x83,0x00,0x08]
|
||||
bgeuc $3,$4, 16 # CHECK: bgeuc $3, $4, 16 # encoding: [0xc0,0x83,0x00,0x08]
|
||||
bltc $3,$4, 16 # CHECK: bltc $3, $4, 16 # encoding: [0xc4,0x83,0x00,0x08]
|
||||
bltuc $3,$4, 16 # CHECK: bltuc $3, $4, 16 # encoding: [0xe0,0x83,0x00,0x08]
|
||||
bnec $3,$4, 16 # CHECK: bnec $3, $4, 16 # encoding: [0x7c,0x83,0x00,0x08]
|
||||
beqc $3,$4, 16 # CHECK: beqc $3, $4, 16 # encoding: [0x74,0x83,0x00,0x04]
|
||||
bgec $3,$4, 16 # CHECK: bgec $3, $4, 16 # encoding: [0xf4,0x83,0x00,0x04]
|
||||
bgeuc $3,$4, 16 # CHECK: bgeuc $3, $4, 16 # encoding: [0xc0,0x83,0x00,0x04]
|
||||
bltc $3,$4, 16 # CHECK: bltc $3, $4, 16 # encoding: [0xd4,0x83,0x00,0x04]
|
||||
bltuc $3,$4, 16 # CHECK: bltuc $3, $4, 16 # encoding: [0xe0,0x83,0x00,0x04]
|
||||
bnec $3,$4, 16 # CHECK: bnec $3, $4, 16 # encoding: [0x7c,0x83,0x00,0x04]
|
||||
beqzalc $2, 1332 # CHECK: beqzalc $2, 1332 # encoding: [0x74,0x40,0x02,0x9a]
|
||||
bnezalc $2, 1332 # CHECK: bnezalc $2, 1332 # encoding: [0x7c,0x40,0x02,0x9a]
|
||||
bgezalc $2, 1332 # CHECK: bgezalc $2, 1332 # encoding: [0xc0,0x42,0x02,0x9a]
|
||||
bgtzalc $2, 1332 # CHECK: bgtzalc $2, 1332 # encoding: [0xe0,0x40,0x02,0x9a]
|
||||
bltzalc $2, 1332 # CHECK: bltzalc $2, 1332 # encoding: [0xe0,0x42,0x02,0x9a]
|
||||
blezalc $2, 1332 # CHECK: blezalc $2, 1332 # encoding: [0xc0,0x40,0x02,0x9a]
|
||||
beqzc $3, 64 # CHECK: beqzc $3, 64 # encoding: [0x80,0x60,0x00,0x20]
|
||||
bnezc $3, 64 # CHECK: bnezc $3, 64 # encoding: [0xa0,0x60,0x00,0x20]
|
||||
beqzc $3, 64 # CHECK: beqzc $3, 64 # encoding: [0x80,0x60,0x00,0x10]
|
||||
bnezc $3, 64 # CHECK: bnezc $3, 64 # encoding: [0xa0,0x60,0x00,0x10]
|
||||
balc 7286128 # CHECK: balc 7286128 # encoding: [0xb4,0x37,0x96,0xb8]
|
||||
b 132 # CHECK: bc16 132 # encoding: [0xcc,0x42]
|
||||
bc 7286128 # CHECK: bc 7286128 # encoding: [0x94,0x37,0x96,0xb8]
|
||||
|
@ -377,3 +377,7 @@
|
|||
cfc2 $3, $4 # CHECK: cfc2 $3, $4 # encoding: [0x00,0x64,0xcd,0x3c]
|
||||
ctc1 $5, $6 # CHECK: ctc1 $5, $6 # encoding: [0x54,0xa6,0x18,0x3b]
|
||||
ctc2 $7, $8 # CHECK: ctc2 $7, $8 # encoding: [0x00,0xe8,0xdd,0x3c]
|
||||
bltzc $6, 128 # CHECK: bltzc $6, 128 # encoding: [0xd4,0xc6,0x00,0x20]
|
||||
blezc $2, 256 # CHECK: blezc $2, 256 # encoding: [0xf4,0x40,0x00,0x40]
|
||||
bgezc $16, 512 # CHECK: bgezc $16, 512 # encoding: [0xf6,0x10,0x00,0x80]
|
||||
bgtzc $12, 1024 # CHECK: bgtzc $12, 1024 # encoding: [0xd5,0x80,0x01,0x00]
|
||||
|
|
|
@ -325,3 +325,69 @@
|
|||
sdc2 $32, 8($16) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction
|
||||
lwc2 $32, 16($4) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction
|
||||
swc2 $32, 777($17) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction
|
||||
bgec $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgec $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bgec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bltc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgeuc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bgeuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltuc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bltuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqc $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
beqc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $0, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnec $2, $2, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different
|
||||
bnec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
blezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgtzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bltzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqzc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $0, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnezc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
|
|
|
@ -326,5 +326,9 @@ a:
|
|||
cfc2 $3, $4 # CHECK: cfc2 $3, $4 # encoding: [0x00,0x64,0xcd,0x3c]
|
||||
ctc1 $5, $6 # CHECK: ctc1 $5, $6 # encoding: [0x54,0xa6,0x18,0x3b]
|
||||
ctc2 $7, $8 # CHECK: ctc2 $7, $8 # encoding: [0x00,0xe8,0xdd,0x3c]
|
||||
bltzc $6, 128 # CHECK: bltzc $6, 128 # encoding: [0xd4,0xc6,0x00,0x20]
|
||||
blezc $2, 256 # CHECK: blezc $2, 256 # encoding: [0xf4,0x40,0x00,0x40]
|
||||
bgezc $16, 512 # CHECK: bgezc $16, 512 # encoding: [0xf6,0x10,0x00,0x80]
|
||||
bgtzc $12, 1024 # CHECK: bgtzc $12, 1024 # encoding: [0xd5,0x80,0x01,0x00]
|
||||
|
||||
1:
|
||||
|
|
|
@ -63,6 +63,54 @@ local_label:
|
|||
bltzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate
|
||||
cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate
|
||||
jalr.hb $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different
|
||||
|
|
|
@ -60,6 +60,54 @@ local_label:
|
|||
bltzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
beqzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bnezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction
|
||||
bgec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgeuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgeuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltuc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltuc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqc $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqc $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnec $2, $4, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnec $2, $4, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
blezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
blezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgezc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgezc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bgtzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bgtzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, -131076 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, -131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bltzc $2, 131072 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bltzc $2, 131071 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
beqzc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
beqzc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, -4194308 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, -4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
bnezc $2, 4194304 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range
|
||||
bnezc $2, 4194303 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address
|
||||
cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate
|
||||
cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate
|
||||
dalign $4, $2, $3, -1 # CHECK: :[[@LINE]]:29: error: expected 3-bit unsigned immediate
|
||||
|
|
Loading…
Reference in New Issue