Lines Matching defs:SparcOperand
55 class SparcOperand;
104 ParseStatus parseSparcAsmOperand(std::unique_ptr<SparcOperand> &Operand,
198 /// SparcOperand - Instances of this class represent a parsed Sparc machine
200 class SparcOperand : public MCParsedAsmOperand {
258 SparcOperand(KindTy K) : Kind(K) {}
469 static std::unique_ptr<SparcOperand> CreateToken(StringRef Str, SMLoc S) {
470 auto Op = std::make_unique<SparcOperand>(k_Token);
478 static std::unique_ptr<SparcOperand> CreateReg(unsigned RegNum, unsigned Kind,
480 auto Op = std::make_unique<SparcOperand>(k_Register);
482 Op->Reg.Kind = (SparcOperand::RegisterKind)Kind;
488 static std::unique_ptr<SparcOperand> CreateImm(const MCExpr *Val, SMLoc S,
490 auto Op = std::make_unique<SparcOperand>(k_Immediate);
497 static std::unique_ptr<SparcOperand> CreateASITag(unsigned Val, SMLoc S,
499 auto Op = std::make_unique<SparcOperand>(k_ASITag);
506 static std::unique_ptr<SparcOperand> CreatePrefetchTag(unsigned Val, SMLoc S,
508 auto Op = std::make_unique<SparcOperand>(k_PrefetchTag);
515 static std::unique_ptr<SparcOperand> CreateTailRelocSym(const MCExpr *Val,
517 auto Op = std::make_unique<SparcOperand>(k_TailRelocSym);
524 static bool MorphToIntPairReg(SparcOperand &Op) {
543 static bool MorphToDoubleReg(SparcOperand &Op) {
554 static bool MorphToQuadReg(SparcOperand &Op) {
577 static bool MorphToCoprocPairReg(SparcOperand &Op) {
590 static std::unique_ptr<SparcOperand>
591 MorphToMEMrr(unsigned Base, std::unique_ptr<SparcOperand> Op) {
600 static std::unique_ptr<SparcOperand>
602 auto Op = std::make_unique<SparcOperand>(k_MemoryReg);
611 static std::unique_ptr<SparcOperand>
612 MorphToMEMri(unsigned Base, std::unique_ptr<SparcOperand> Op) {
851 ErrorLoc = ((SparcOperand &)*Operands[ErrorInfo]).getStartLoc();
880 unsigned RegKind = SparcOperand::rk_None;
919 Operands.push_back(SparcOperand::CreateToken(Name, NameLoc));
940 Operands.push_back(SparcOperand::CreateToken("+", Parser.getTok().getLoc()));
980 std::unique_ptr<SparcOperand> LHS;
986 Operands.push_back(SparcOperand::MorphToMEMri(Sparc::G0, std::move(LHS)));
999 std::unique_ptr<SparcOperand> RHS;
1009 ? SparcOperand::MorphToMEMri(LHS->getReg(), std::move(RHS))
1010 : SparcOperand::MorphToMEMrr(LHS->getReg(), std::move(RHS)));
1015 Operands.push_back(SparcOperand::CreateMEMr(LHS->getReg(), S, E));
1039 Operands.push_back(SparcOperand::CreateImm(Expr, S, E));
1120 Operands.push_back(SparcOperand::CreateTailRelocSym(Val, S, E));
1129 std::unique_ptr<SparcOperand> Mask;
1162 Operands.push_back(SparcOperand::CreateImm(EVal, S, E));
1181 Operands.push_back(SparcOperand::CreateASITag(ASIVal, S, E));
1200 Operands.push_back(SparcOperand::CreateASITag(ASIVal, S, E));
1219 Operands.push_back(SparcOperand::CreatePrefetchTag(PrefetchVal, S, E));
1235 Operands.push_back(SparcOperand::CreatePrefetchTag(PrefetchVal, S, E));
1262 Operands.push_back(SparcOperand::CreateImm(DestExpr, S, E));
1279 Operands.push_back(SparcOperand::CreateToken("[",
1297 Operands.push_back(SparcOperand::CreateReg(Reg, RegKind, S, E));
1309 Operands.push_back(SparcOperand::CreateToken("]",
1330 SparcOperand &OldMemOp = (SparcOperand &)*Operands[Operands.size() - 2];
1335 Operands[Operands.size() - 2] = SparcOperand::MorphToMEMri(
1337 SparcOperand::CreateImm(MCConstantExpr::create(0, getContext()),
1346 Operands.push_back(SparcOperand::CreateToken("%asi", S));
1362 std::unique_ptr<SparcOperand> Op;
1375 SparcAsmParser::parseSparcAsmOperand(std::unique_ptr<SparcOperand> &Op,
1393 Op = SparcOperand::CreateToken("%xcc", S);
1395 Op = SparcOperand::CreateReg(Reg, RegKind, S, E);
1400 Op = SparcOperand::CreateImm(EVal, S, E);
1426 Op = SparcOperand::CreateImm(EVal, S, E);
1442 Operands.push_back(SparcOperand::CreateToken(modName,
1461 RegKind = SparcOperand::rk_None;
1478 RegKind = SparcOperand::rk_Special;
1483 RegKind = SparcOperand::rk_IntReg;
1487 RegKind = SparcOperand::rk_FloatReg;
1491 RegKind = SparcOperand::rk_CoprocReg;
1497 RegKind = SparcOperand::rk_IntReg;
1505 RegKind = SparcOperand::rk_FloatReg;
1508 RegKind = SparcOperand::rk_DoubleReg;
1518 RegKind = SparcOperand::rk_CoprocReg;
1523 RegKind = SparcOperand::rk_Special;
1534 RegKind = SparcOperand::rk_IntReg;
1540 RegKind = SparcOperand::rk_Special;
1547 RegKind = SparcOperand::rk_Special;
1551 RegKind = SparcOperand::rk_Special;
1555 RegKind = SparcOperand::rk_Special;
1559 RegKind = SparcOperand::rk_Special;
1563 RegKind = SparcOperand::rk_Special;
1567 RegKind = SparcOperand::rk_Special;
1571 RegKind = SparcOperand::rk_Special;
1575 RegKind = SparcOperand::rk_Special;
1579 RegKind = SparcOperand::rk_Special;
1583 RegKind = SparcOperand::rk_Special;
1708 SparcOperand &Op = (SparcOperand &)GOp;
1713 if (!Op.isFloatReg() || SparcOperand::MorphToDoubleReg(Op))
1717 if (SparcOperand::MorphToQuadReg(Op))
1723 if (SparcOperand::MorphToIntPairReg(Op))
1727 if (SparcOperand::MorphToCoprocPairReg(Op))