Home | History | Annotate | Download | only in AsmParser

Lines Matching refs:Op

58   unsigned validateTargetOperandClass(MCParsedAsmOperand &Op,
342 auto Op = make_unique<SparcOperand>(k_Token);
343 Op->Tok.Data = Str.data();
344 Op->Tok.Length = Str.size();
345 Op->StartLoc = S;
346 Op->EndLoc = S;
347 return Op;
352 auto Op = make_unique<SparcOperand>(k_Register);
353 Op->Reg.RegNum = RegNum;
354 Op->Reg.Kind = (SparcOperand::RegisterKind)Kind;
355 Op->StartLoc = S;
356 Op->EndLoc = E;
357 return Op;
362 auto Op = make_unique<SparcOperand>(k_Immediate);
363 Op->Imm.Val = Val;
364 Op->StartLoc = S;
365 Op->EndLoc = E;
366 return Op;
369 static bool MorphToIntPairReg(SparcOperand &Op) {
370 unsigned Reg = Op.getReg();
371 assert(Op.Reg.Kind == rk_IntReg);
383 Op.Reg.RegNum = IntPairRegs[regIdx / 2];
384 Op.Reg.Kind = rk_IntPairReg;
388 static bool MorphToDoubleReg(SparcOperand &Op) {
389 unsigned Reg = Op.getReg();
390 assert(Op.Reg.Kind == rk_FloatReg);
394 Op.Reg.RegNum = DoubleRegs[regIdx / 2];
395 Op.Reg.Kind = rk_DoubleReg;
399 static bool MorphToQuadReg(SparcOperand &Op) {
400 unsigned Reg = Op.getReg();
402 switch (Op.Reg.Kind) {
417 Op.Reg.RegNum = Reg;
418 Op.Reg.Kind = rk_QuadReg;
422 static bool MorphToCoprocPairReg(SparcOperand &Op) {
423 unsigned Reg = Op.getReg();
424 assert(Op.Reg.Kind == rk_CoprocReg);
430 Op.Reg.RegNum = CoprocPairRegs[regIdx / 2];
431 Op.Reg.Kind = rk_CoprocPairReg;
436 MorphToMEMrr(unsigned Base, std::unique_ptr<SparcOperand> Op) {
437 unsigned offsetReg = Op->getReg();
438 Op->Kind = k_MemoryReg;
439 Op->Mem.Base = Base;
440 Op->Mem.OffsetReg = offsetReg;
441 Op->Mem.Off = nullptr;
442 return Op;
447 auto Op = make_unique<SparcOperand>(k_MemoryReg);
448 Op->Mem.Base = Base;
449 Op->Mem.OffsetReg = Sparc::G0; // always 0
450 Op->Mem.Off = nullptr;
451 Op->StartLoc = S;
452 Op->EndLoc = E;
453 return Op;
457 MorphToMEMri(unsigned Base, std::unique_ptr<SparcOperand> Op) {
458 const MCExpr *Imm = Op->getImm();
459 Op->Kind = k_MemoryImm;
460 Op->Mem.Base = Base;
461 Op->Mem.OffsetReg = 0;
462 Op->Mem.Off = Imm;
463 return Op;
805 std::unique_ptr<SparcOperand> Op;
806 ResTy = parseSparcAsmOperand(Op, false);
807 if (ResTy != MatchOperand_Success || !Op)
809 Operands.push_back(std::move(Op));
814 std::unique_ptr<SparcOperand> Op;
816 ResTy = parseSparcAsmOperand(Op, (Mnemonic == "call"));
817 if (ResTy != MatchOperand_Success || !Op)
821 Operands.push_back(std::move(Op));
827 SparcAsmParser::parseSparcAsmOperand(std::unique_ptr<SparcOperand> &Op,
834 Op = nullptr;
848 Op = SparcOperand::CreateReg(RegNo, RegKind, S, E);
851 Op = SparcOperand::CreateToken("%psr", S);
854 Op = SparcOperand::CreateToken("%fsr", S);
857 Op = SparcOperand::CreateToken("%fq", S);
860 Op = SparcOperand::CreateToken("%csr", S);
863 Op = SparcOperand::CreateToken("%cq", S);
866 Op = SparcOperand::CreateToken("%wim", S);
869 Op = SparcOperand::CreateToken("%tbr", S);
873 Op = SparcOperand::CreateToken("%xcc", S);
875 Op = SparcOperand::CreateToken("%icc", S);
882 Op = SparcOperand::CreateImm(EVal, S, E);
891 Op = SparcOperand::CreateImm(EVal, S, E);
905 Op = SparcOperand::CreateImm(Res, S, E);
910 return (Op) ? MatchOperand_Success : MatchOperand_ParseFail;
1279 SparcOperand &Op = (SparcOperand &)GOp;
1280 if (Op.isFloatOrDoubleReg()) {
1284 if (!Op.isFloatReg() || SparcOperand::MorphToDoubleReg(Op))
1288 if (SparcOperand::MorphToQuadReg(Op))
1293 if (Op.isIntReg() && Kind == MCK_IntPair) {
1294 if (SparcOperand::MorphToIntPairReg(Op))
1297 if (Op.isCoprocReg() && Kind == MCK_CoprocPair) {
1298 if (SparcOperand::MorphToCoprocPairReg(Op))