Lines Matching defs:MemOp
127 MemOp,
135 M68kMemOp MemOp;
150 bool isMemOp() const { return Kind == KindTy::MemOp; }
163 static std::unique_ptr<M68kOperand> createMemOp(M68kMemOp MemOp, SMLoc Start,
312 return Kind == KindTy::MemOp && MemOp.Op == M68kMemOp::Kind::Reg;
317 return MemOp.OuterReg;
327 std::unique_ptr<M68kOperand> M68kOperand::createMemOp(M68kMemOp MemOp,
329 auto Op = std::make_unique<M68kOperand>(KindTy::MemOp, Start, End);
330 Op->MemOp = MemOp;
385 if (MemOp.Op == M68kMemOp::Kind::RegMask)
388 if (MemOp.Op != M68kMemOp::Kind::Reg)
393 return getRegisterIndex(MemOp.OuterReg) < 16;
400 uint16_t MoveMask = MemOp.RegMask;
401 if (MemOp.Op == M68kMemOp::Kind::Reg)
402 MoveMask = 1 << getRegisterIndex(MemOp.OuterReg);
409 return isMemOp() && MemOp.Op == M68kMemOp::Kind::Addr;
416 if (MemOp.OuterDisp->evaluateAsAbsolute(Res))
423 M68kOperand::addExpr(Inst, MemOp.OuterDisp);
428 return isMemOp() && MemOp.Op == M68kMemOp::Kind::RegIndirect &&
429 M68k::AR32RegClass.contains(MemOp.OuterReg);
432 Inst.addOperand(MCOperand::createReg(MemOp.OuterReg));
437 return isMemOp() && MemOp.Op == M68kMemOp::Kind::RegIndirectDisplacement &&
438 M68k::AR32RegClass.contains(MemOp.OuterReg);
441 M68kOperand::addExpr(Inst, MemOp.OuterDisp);
442 Inst.addOperand(MCOperand::createReg(MemOp.OuterReg));
448 MemOp.Op == M68kMemOp::Kind::RegIndirectDisplacementIndex &&
449 M68k::AR32RegClass.contains(MemOp.OuterReg);
452 M68kOperand::addExpr(Inst, MemOp.OuterDisp);
453 Inst.addOperand(MCOperand::createReg(MemOp.OuterReg));
454 Inst.addOperand(MCOperand::createReg(MemOp.InnerReg));
459 return isMemOp() && MemOp.Op == M68kMemOp::Kind::RegPreDecrement &&
460 M68k::AR32RegClass.contains(MemOp.OuterReg);
463 Inst.addOperand(MCOperand::createReg(MemOp.OuterReg));
468 return isMemOp() && MemOp.Op == M68kMemOp::Kind::RegPostIncrement &&
469 M68k::AR32RegClass.contains(MemOp.OuterReg);
472 Inst.addOperand(MCOperand::createReg(MemOp.OuterReg));
477 return isMemOp() && MemOp.Op == M68kMemOp::Kind::RegIndirectDisplacement &&
478 MemOp.OuterReg == M68k::PC;
481 M68kOperand::addExpr(Inst, MemOp.OuterDisp);
487 MemOp.Op == M68kMemOp::Kind::RegIndirectDisplacementIndex &&
488 MemOp.OuterReg == M68k::PC;
491 M68kOperand::addExpr(Inst, MemOp.OuterDisp);
492 Inst.addOperand(MCOperand::createReg(MemOp.InnerReg));
783 M68kMemOp MemOp;
796 if (Parser.parseExpression(MemOp.OuterDisp))
803 MemOp.Op = M68kMemOp::Kind::Addr;
805 M68kOperand::createMemOp(MemOp, Start, getLexer().getLoc()));
817 if (Parser.parseExpression(MemOp.OuterDisp))
823 MemOp.Op = M68kMemOp::Kind::Addr;
825 M68kOperand::createMemOp(MemOp, Start, getLexer().getLoc()));
832 Result = parseRegister(MemOp.OuterReg);
844 Result = parseRegister(MemOp.InnerReg);
852 MemOp.Size = 4;
853 MemOp.Scale = 1;
854 MemOp.InnerDisp = MCConstantExpr::create(0, Parser.getContext(), true, 4);
876 MemOp.Op = M68kMemOp::Kind::RegPreDecrement;
878 MemOp.Op = M68kMemOp::Kind::RegPostIncrement;
880 MemOp.Op = M68kMemOp::Kind::RegIndirectDisplacementIndex;
882 MemOp.Op = M68kMemOp::Kind::RegIndirectDisplacement;
884 MemOp.Op = M68kMemOp::Kind::RegIndirect;
887 Operands.push_back(M68kOperand::createMemOp(MemOp, Start, End));
893 M68kMemOp MemOp(M68kMemOp::Kind::RegMask);
894 MemOp.RegMask = 0;
898 (MemOp.Op == M68kMemOp::Kind::RegMask) && (MemOp.RegMask == 0);
923 MemOp.Op = M68kMemOp::Kind::Reg;
924 MemOp.OuterReg = FirstRegister;
926 if (MemOp.Op == M68kMemOp::Kind::Reg) {
929 MemOp.Op = M68kMemOp::Kind::RegMask;
930 MemOp.RegMask = 1 << getRegisterIndex(MemOp.OuterReg);
932 if (MemOp.RegMask == 0)
941 if (NewMaskBits & MemOp.RegMask)
944 MemOp.RegMask |= NewMaskBits;
952 M68kOperand::createMemOp(MemOp, Start, getLexer().getLoc()));
1067 case KindTy::MemOp:
1068 MemOp.print(OS);