@@ -858,6 +858,16 @@ def calltarget : Operand<iPTR> {
858858
859859def imm64: Operand<i64>;
860860
861+ def ConstantImmAsmOperandClass : AsmOperandClass {
862+ let Name = "ConstantImm";
863+ let PredicateMethod = "isConstantImm";
864+ let RenderMethod = "addImmOperands";
865+ }
866+
867+ def ConstantImm64: Operand<i64> {
868+ let ParserMatchClass = ConstantImmAsmOperandClass;
869+ }
870+
861871def simm19_lsl2 : Operand<i32> {
862872 let EncoderMethod = "getSimm19Lsl2Encoding";
863873 let DecoderMethod = "DecodeSimm19Lsl2";
@@ -2950,10 +2960,10 @@ def : MipsInstAlias<"nor\t$rs, $imm", (NORImm GPR32Opnd:$rs, GPR32Opnd:$rs,
29502960
29512961let hasDelaySlot = 1, isCTI = 1 in {
29522962def BneImm : MipsAsmPseudoInst<(outs GPR32Opnd:$rt),
2953- (ins imm64 :$imm64, brtarget:$offset),
2963+ (ins ConstantImm64 :$imm64, brtarget:$offset),
29542964 "bne\t$rt, $imm64, $offset">;
29552965def BeqImm : MipsAsmPseudoInst<(outs GPR32Opnd:$rt),
2956- (ins imm64 :$imm64, brtarget:$offset),
2966+ (ins ConstantImm64 :$imm64, brtarget:$offset),
29572967 "beq\t$rt, $imm64, $offset">;
29582968
29592969class CondBranchPseudo<string instr_asm> :
@@ -2981,7 +2991,7 @@ def BGTUL: CondBranchPseudo<"bgtul">, ISA_MIPS2_NOT_32R6_64R6;
29812991
29822992let isCTI = 1 in
29832993class CondBranchImmPseudo<string instr_asm> :
2984- MipsAsmPseudoInst<(outs), (ins GPR32Opnd:$rs, imm64 :$imm, brtarget:$offset),
2994+ MipsAsmPseudoInst<(outs), (ins GPR32Opnd:$rs, ConstantImm64 :$imm, brtarget:$offset),
29852995 !strconcat(instr_asm, "\t$rs, $imm, $offset")>;
29862996
29872997def BEQLImmMacro : CondBranchImmPseudo<"beql">, ISA_MIPS2_NOT_32R6_64R6;
0 commit comments