Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
Show First 20 Lines • Show All 562 Lines • ▼ Show 20 Lines | template <unsigned N> bool IsUImm() const { | ||||
bool IsConstantImm = evaluateConstantImm(getImm(), Imm, VK); | bool IsConstantImm = evaluateConstantImm(getImm(), Imm, VK); | ||||
return IsConstantImm && isUInt<N>(Imm) && VK == RISCVMCExpr::VK_RISCV_None; | return IsConstantImm && isUInt<N>(Imm) && VK == RISCVMCExpr::VK_RISCV_None; | ||||
} | } | ||||
bool isUImm2() { return IsUImm<2>(); } | bool isUImm2() { return IsUImm<2>(); } | ||||
bool isUImm3() { return IsUImm<3>(); } | bool isUImm3() { return IsUImm<3>(); } | ||||
bool isUImm5() { return IsUImm<5>(); } | bool isUImm5() { return IsUImm<5>(); } | ||||
bool isUImm7() { return IsUImm<7>(); } | bool isUImm7() { return IsUImm<7>(); } | ||||
bool isUImm8() { return IsUImm<8>(); } | |||||
bool isRnumArg() const { | bool isRnumArg() const { | ||||
int64_t Imm; | int64_t Imm; | ||||
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None; | RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None; | ||||
if (!isImm()) | if (!isImm()) | ||||
return false; | return false; | ||||
bool IsConstantImm = evaluateConstantImm(getImm(), Imm, VK); | bool IsConstantImm = evaluateConstantImm(getImm(), Imm, VK); | ||||
return IsConstantImm && Imm >= INT64_C(0) && Imm <= INT64_C(10) && | return IsConstantImm && Imm >= INT64_C(0) && Imm <= INT64_C(10) && | ||||
▲ Show 20 Lines • Show All 591 Lines • ▼ Show 20 Lines | bool RISCVAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode, | ||||
case Match_InvalidCLUIImm: | case Match_InvalidCLUIImm: | ||||
return generateImmOutOfRangeError( | return generateImmOutOfRangeError( | ||||
Operands, ErrorInfo, 1, (1 << 5) - 1, | Operands, ErrorInfo, 1, (1 << 5) - 1, | ||||
"immediate must be in [0xfffe0, 0xfffff] or"); | "immediate must be in [0xfffe0, 0xfffff] or"); | ||||
case Match_InvalidUImm7Lsb00: | case Match_InvalidUImm7Lsb00: | ||||
return generateImmOutOfRangeError( | return generateImmOutOfRangeError( | ||||
Operands, ErrorInfo, 0, (1 << 7) - 4, | Operands, ErrorInfo, 0, (1 << 7) - 4, | ||||
"immediate must be a multiple of 4 bytes in the range"); | "immediate must be a multiple of 4 bytes in the range"); | ||||
case Match_InvalidUImm8: | |||||
return generateImmOutOfRangeError(Operands, ErrorInfo, 0, (1 << 8) - 1); | |||||
case Match_InvalidUImm8Lsb00: | case Match_InvalidUImm8Lsb00: | ||||
return generateImmOutOfRangeError( | return generateImmOutOfRangeError( | ||||
Operands, ErrorInfo, 0, (1 << 8) - 4, | Operands, ErrorInfo, 0, (1 << 8) - 4, | ||||
"immediate must be a multiple of 4 bytes in the range"); | "immediate must be a multiple of 4 bytes in the range"); | ||||
case Match_InvalidUImm8Lsb000: | case Match_InvalidUImm8Lsb000: | ||||
return generateImmOutOfRangeError( | return generateImmOutOfRangeError( | ||||
Operands, ErrorInfo, 0, (1 << 8) - 8, | Operands, ErrorInfo, 0, (1 << 8) - 8, | ||||
"immediate must be a multiple of 8 bytes in the range"); | "immediate must be a multiple of 8 bytes in the range"); | ||||
▲ Show 20 Lines • Show All 1,624 Lines • Show Last 20 Lines |