diff options
author | Zoran Jovanovic <zoran.jovanovic@imgtec.com> | 2014-10-10 13:45:34 +0000 |
---|---|---|
committer | Zoran Jovanovic <zoran.jovanovic@imgtec.com> | 2014-10-10 13:45:34 +0000 |
commit | b26f889afaa82f17d6bf25c213c77aafdf7d3de0 (patch) | |
tree | 2359f013d754fe1b05f7bcd9c9c099f1fc75ae62 /llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp | |
parent | b39a174f111420df7711f9fb9ace5f250122d1a2 (diff) | |
download | bcm5719-llvm-b26f889afaa82f17d6bf25c213c77aafdf7d3de0.tar.gz bcm5719-llvm-b26f889afaa82f17d6bf25c213c77aafdf7d3de0.zip |
[mips][microMIPS] Implement ADDIUS5 instruction
Differential Revision: http://reviews.llvm.org/D5049
llvm-svn: 219495
Diffstat (limited to 'llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index 21d2876fdd0..db9c679b767 100644 --- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -1117,6 +1117,25 @@ bool MipsAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc, } // for } // if load/store + // TODO: Handle this with the AsmOperandClass.PredicateMethod. + if (inMicroMipsMode()) { + MCOperand Opnd; + int Imm; + + switch (Inst.getOpcode()) { + default: + break; + case Mips::ADDIUS5_MM: + Opnd = Inst.getOperand(2); + if (!Opnd.isImm()) + return Error(IDLoc, "expected immediate operand kind"); + Imm = Opnd.getImm(); + if (Imm < -8 || Imm > 7) + return Error(IDLoc, "immediate operand value out of range"); + break; + } + } + if (needsExpansion(Inst)) return expandInstruction(Inst, IDLoc, Instructions); else |