Lines Matching defs:LanaiOperand
47 struct LanaiOperand;
51 std::unique_ptr<LanaiOperand> parseRegister(bool RestoreOnFailure = false);
53 std::unique_ptr<LanaiOperand> parseImmediate();
55 std::unique_ptr<LanaiOperand> parseIdentifier();
101 // LanaiOperand - Instances of this class represented a parsed machine
103 struct LanaiOperand : public MCParsedAsmOperand {
142 explicit LanaiOperand(KindTy Kind) : Kind(Kind) {}
583 static std::unique_ptr<LanaiOperand> CreateToken(StringRef Str, SMLoc Start) {
584 auto Op = std::make_unique<LanaiOperand>(TOKEN);
592 static std::unique_ptr<LanaiOperand> createReg(unsigned RegNum, SMLoc Start,
594 auto Op = std::make_unique<LanaiOperand>(REGISTER);
601 static std::unique_ptr<LanaiOperand> createImm(const MCExpr *Value,
603 auto Op = std::make_unique<LanaiOperand>(IMMEDIATE);
610 static std::unique_ptr<LanaiOperand>
611 MorphToMemImm(std::unique_ptr<LanaiOperand> Op) {
621 static std::unique_ptr<LanaiOperand>
622 MorphToMemRegReg(unsigned BaseReg, std::unique_ptr<LanaiOperand> Op,
633 static std::unique_ptr<LanaiOperand>
634 MorphToMemRegImm(unsigned BaseReg, std::unique_ptr<LanaiOperand> Op,
671 ErrorLoc = ((LanaiOperand &)*Operands[ErrorInfo]).getStartLoc();
688 std::unique_ptr<LanaiOperand>
708 return LanaiOperand::createReg(RegNum, Start, End);
720 std::unique_ptr<LanaiOperand> Op = parseRegister(/*RestoreOnFailure=*/false);
731 std::unique_ptr<LanaiOperand> Op = parseRegister(/*RestoreOnFailure=*/true);
738 std::unique_ptr<LanaiOperand> LanaiAsmParser::parseIdentifier() {
793 return LanaiOperand::createImm(Res, Start, End);
796 std::unique_ptr<LanaiOperand> LanaiAsmParser::parseImmediate() {
809 return LanaiOperand::createImm(ExprVal, Start, End);
861 bool shouldBeSls(const LanaiOperand &Op) {
899 Type = static_cast<LanaiOperand *>(Operands[0].get())->getToken();
908 std::unique_ptr<LanaiOperand> Op = parseRegister();
925 std::unique_ptr<LanaiOperand> Offset = nullptr;
941 Operands.push_back(LanaiOperand::MorphToMemImm(std::move(Op)));
947 Operands.push_back(LanaiOperand::MorphToMemRegImm(
972 Offset = LanaiOperand::createImm(OffsetConstExpr, Start, End);
1000 ? LanaiOperand::MorphToMemRegImm(BaseReg, std::move(Offset), AluOp)
1001 : LanaiOperand::MorphToMemRegReg(BaseReg, std::move(Offset), AluOp));
1023 std::unique_ptr<LanaiOperand> Op = parseRegister();
1062 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1063 Operands->push_back(LanaiOperand::createImm(
1066 Operands->push_back(LanaiOperand::CreateToken(".r", NameLoc));
1091 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1092 Operands->push_back(LanaiOperand::createImm(
1098 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1100 Operands->push_back(LanaiOperand::CreateToken(".r", NameLoc));
1131 if (LanaiOperand *PossibleAluOp =
1132 static_cast<LanaiOperand *>(Operands[PossibleAluOpIdx].get()))
1144 return static_cast<const LanaiOperand &>(op).isReg();
1152 static_cast<const LanaiOperand &>(*Operands[0]).getToken())
1183 Operands.insert(Operands.begin(), LanaiOperand::CreateToken("s", NameLoc));
1185 LanaiOperand::createImm(
1196 Operands.insert(Operands.begin(), LanaiOperand::CreateToken("bt", NameLoc));
1220 LanaiOperand::createImm(