Home | History | Annotate | Download | only in src

Lines Matching refs:Func

105   static OperandARM32Mem *create(Cfg *Func, Type Ty, Variable *Base,
108 return new (Func->allocate<OperandARM32Mem>())
109 OperandARM32Mem(Func, Ty, Base, ImmOffset, Mode);
113 static OperandARM32Mem *create(Cfg *Func, Type Ty, Variable *Base,
117 return new (Func->allocate<OperandARM32Mem>())
118 OperandARM32Mem(Func, Ty, Base, Index, ShiftOp, ShiftAmt, Mode);
137 void emit(const Cfg *Func) const override;
139 void dump(const Cfg *Func, Ostream &Str) const override;
152 OperandARM32Mem(Cfg *Func, Type Ty, Variable *Base,
154 OperandARM32Mem(Cfg *Func, Type Ty, Variable *Base, Variable *Index,
174 static OperandARM32ShAmtImm *create(Cfg *Func, ConstantInteger32 *ShAmt) {
175 return new (Func->allocate<OperandARM32ShAmtImm>())
183 void emit(const Cfg *Func) const override;
185 void dump(const Cfg *Func, Ostream &Str) const override;
221 static OperandARM32FlexImm *create(Cfg *Func, Type Ty, uint32_t Imm,
224 void emit(const Cfg *Func) const override;
226 void dump(const Cfg *Func, Ostream &Str) const override;
241 OperandARM32FlexImm(Cfg *Func, Type Ty, uint32_t Imm, uint32_t RotateAmt);
254 static OperandARM32FlexFpImm *create(Cfg *Func, Type Ty,
256 return new (Func->allocate<OperandARM32FlexFpImm>())
257 OperandARM32FlexFpImm(Func, Ty, ModifiedImm);
260 void emit(const Cfg *Func) const override;
262 void dump(const Cfg *Func, Ostream &Str) const override;
273 OperandARM32FlexFpImm(Cfg *Func, Type Ty, uint32_t ModifiedImm);
285 static OperandARM32FlexFpZero *create(Cfg *Func, Type Ty) {
286 return new (Func->allocate<OperandARM32FlexFpZero>())
287 OperandARM32FlexFpZero(Func, Ty);
290 void emit(const Cfg *Func) const override;
292 void dump(const Cfg *Func, Ostream &Str) const override;
299 OperandARM32FlexFpZero(Cfg *Func, Type Ty);
310 static OperandARM32FlexReg *create(Cfg *Func, Type Ty, Variable *Reg,
312 return new (Func->allocate<OperandARM32FlexReg>())
313 OperandARM32FlexReg(Func, Ty, Reg, ShiftOp, ShiftAmt);
316 void emit(const Cfg *Func) const override;
318 void dump(const Cfg *Func, Ostream &Str) const override;
330 OperandARM32FlexReg(Cfg *Func, Type Ty, Variable *Reg, ShiftKind ShiftOp,
349 static StackVariable *create(Cfg *Func, Type Ty, SizeT Index) {
350 return new (Func->allocate<StackVariable>()) StackVariable(Func, Ty, Index);
362 StackVariable(const Cfg *Func, Type Ty, SizeT Index)
363 : Variable(Func, StackVariableKind, Ty, Index) {}
459 void startNextInst(const Cfg *Func) const;
471 const InstARM32 *Instr, const Cfg *Func,
474 const InstARM32 *Instr, const Cfg *Func);
477 void dump(const Cfg *Func) const override;
479 void emitIAS(const Cfg *Func) const override;
482 InstARM32(Cfg *Func, InstKindARM32 Kind, SizeT Maxsrcs, Variable *Dest)
483 : InstTarget(Func, static_cast<InstKind>(Kind), Maxsrcs, Dest) {}
491 void emitUsingTextFixup(const Cfg *Func) const;
501 InstARM32Pred(Cfg *Func, InstKindARM32 Kind, SizeT Maxsrcs, Variable *Dest,
503 : InstARM32(Func, Kind, Maxsrcs, Dest), Predicate(Predicate) {}
513 const Cfg *Func, bool NeedsWidthSuffix);
515 const InstARM32Pred *Instr, const Cfg *Func);
517 const Cfg *Func);
519 const Cfg *Func, bool SetFlags);
521 const Cfg *Func);
523 const Cfg *Func);
543 static InstARM32UnaryopGPR *create(Cfg *Func, Variable *Dest, Operand *Src,
545 return new (Func->allocate<InstARM32UnaryopGPR>())
546 InstARM32UnaryopGPR(Func, Dest, Src, Predicate);
548 void emit(const Cfg *Func) const override {
551 emitUnaryopGPR(Opcode, this, Func, NeedsWidthSuffix);
553 void emitIAS(const Cfg *Func) const override;
554 void dump(const Cfg *Func) const override {
557 Ostream &Str = Func->getContext()->getStrDump();
558 dumpDest(Func);
562 dumpSources(Func);
567 InstARM32UnaryopGPR(Cfg *Func, Variable *Dest, Operand *Src,
569 : InstARM32Pred(Func, K, 1, Dest, Predicate) {
584 static InstARM32UnaryopFP *create(Cfg *Func, Variable *Dest, Variable *Src,
586 return new (Func->allocate<InstARM32UnaryopFP>())
587 InstARM32UnaryopFP(Func, Dest, Src, Predicate);
589 void emit(const Cfg *Func) const override {
592 emitUnaryopFP(Opcode, Sign, this, Func);
594 void emitIAS(const Cfg *Func) const override;
595 void dump(const Cfg *Func) const override {
598 Ostream &Str = Func->getContext()->getStrDump();
599 dumpDest(Func);
603 dumpSources(Func);
608 InstARM32UnaryopFP(Cfg *Func, Variable *Dest, Operand *Src,
610 : InstARM32Pred(Func, K, 1, Dest, Predicate) {
627 create(Cfg *Func, Variable *Dest, Variable *Src, CondARM32::Cond Predicate) {
628 return new (Func->allocate<InstARM32UnaryopSignAwareFP>())
629 InstARM32UnaryopSignAwareFP(Func, Dest, Src, Predicate);
631 void emitIAS(const Cfg *Func) const override;
635 InstARM32UnaryopSignAwareFP(Cfg *Func, Variable *Dest, Operand *Src,
637 : InstARM32UnaryopFP<K>(Func, Dest, Src, Predicate) {}
649 static InstARM32TwoAddrGPR *create(Cfg *Func, Variable *Dest, Operand *Src,
651 return new (Func->allocate<InstARM32TwoAddrGPR>())
652 InstARM32TwoAddrGPR(Func, Dest, Src, Predicate);
654 void emit(const Cfg *Func) const override {
657 emitTwoAddr(Opcode, this, Func);
659 void emitIAS(const Cfg *Func) const override;
660 void dump(const Cfg *Func) const override {
663 Ostream &Str = Func->getContext()->getStrDump();
664 dumpDest(Func);
668 dumpSources(Func);
673 InstARM32TwoAddrGPR(Cfg *Func, Variable *Dest, Operand *Src,
675 : InstARM32Pred(Func, K, 2, Dest, Predicate) {
691 static InstARM32LoadBase *create(Cfg *Func, Variable *Dest, Operand *Source,
693 return new (Func->allocate<InstARM32LoadBase>())
694 InstARM32LoadBase(Func, Dest, Source, Predicate);
696 void emit(const Cfg *Func) const override;
697 void emitIAS(const Cfg *Func) const override;
698 void dump(const Cfg *Func) const override {
701 Ostream &Str = Func->getContext()->getStrDump();
704 dumpDest(Func);
706 dumpSources(Func);
711 InstARM32LoadBase(Cfg *Func, Variable *Dest, Operand *Source,
713 : InstARM32Pred(Func, K, 1, Dest, Predicate) {
731 static InstARM32ThreeAddrGPR *create(Cfg *Func, Variable *Dest,
735 return new (Func->allocate<InstARM32ThreeAddrGPR>())
736 InstARM32ThreeAddrGPR(Func, Dest, Src0, Src1, Predicate, SetFlags);
738 void emit(const Cfg *Func) const override {
741 emitThreeAddr(Opcode, this, Func, SetFlags);
743 void emitIAS(const Cfg *Func) const override;
744 void dump(const Cfg *Func) const override {
747 Ostream &Str = Func->getContext()->getStrDump();
748 dumpDest(Func);
752 dumpSources(Func);
757 InstARM32ThreeAddrGPR(Cfg *Func, Variable *Dest, Variable *Src0,
759 : InstARM32Pred(Func, K, 2, Dest, Predicate), SetFlags(SetFlags) {
782 static InstARM32ThreeAddrFP *create(Cfg *Func, Variable *Dest, Variable *Src0,
784 return new (Func->allocate<InstARM32ThreeAddrFP>())
785 InstARM32ThreeAddrFP(Func, Dest, Src0, Src1);
787 void emit(const Cfg *Func) const override {
791 emitThreeAddrFP(Opcode, Sign, this, Func, OpType);
793 void emitIAS(const Cfg *Func) const override;
794 void dump(const Cfg *Func) const override {
797 Ostream &Str = Func->getContext()->getStrDump();
798 dumpDest(Func);
801 dumpSources(Func);
808 InstARM32ThreeAddrFP(Cfg *Func, Variable *Dest, Variable *Src0, Operand *Src1)
809 : InstARM32(Func, K, 2, Dest) {
832 static InstARM32ThreeAddrSignAwareFP *create(Cfg *Func, Variable *Dest,
834 return new (Func->allocate<InstARM32ThreeAddrSignAwareFP>())
835 InstARM32ThreeAddrSignAwareFP(Func, Dest, Src0, Src1);
839 create(Cfg *Func, Variable *Dest, Variable *Src0, ConstantInteger32 *Src1) {
840 return new (Func->allocate<InstARM32ThreeAddrSignAwareFP>())
841 InstARM32ThreeAddrSignAwareFP(Func, Dest, Src0, Src1);
844 void emitIAS(const Cfg *Func) const override;
848 InstARM32ThreeAddrSignAwareFP(Cfg *Func, Variable *Dest, Variable *Src0,
850 : InstARM32ThreeAddrFP<K>(Func, Dest, Src0, Src1) {}
862 static InstARM32FourAddrGPR *create(Cfg *Func, Variable *Dest, Variable *Src0,
865 return new (Func->allocate<InstARM32FourAddrGPR>())
866 InstARM32FourAddrGPR(Func, Dest, Src0, Src1, Src2, Predicate);
868 void emit(const Cfg *Func) const override {
871 emitFourAddr(Opcode, this, Func);
873 void emitIAS(const Cfg *Func) const override;
874 void dump(const Cfg *Func) const override {
877 Ostream &Str = Func->getContext()->getStrDump();
878 dumpDest(Func);
882 dumpSources(Func);
887 InstARM32FourAddrGPR(Cfg *Func, Variable *Dest, Variable *Src0,
890 : InstARM32Pred(Func, K, 3, Dest, Predicate) {
912 static InstARM32FourAddrFP *create(Cfg *Func, Variable *Dest, Variable *Src0,
914 return new (Func->allocate<InstARM32FourAddrFP>())
915 InstARM32FourAddrFP(Func, Dest, Src0, Src1);
917 void emit(const Cfg *Func) const override {
920 emitFourAddrFP(Opcode, Sign, this, Func);
922 void emitIAS(const Cfg *Func) const override;
923 void dump(const Cfg *Func) const override {
926 Ostream &Str = Func->getContext()->getStrDump();
927 dumpDest(Func);
930 dumpDest(Func);
932 dumpSources(Func);
937 InstARM32FourAddrFP(Cfg *Func, Variable *Dest, Variable *Src0, Variable *Src1)
938 : InstARM32(Func, K, 3, Dest) {
956 static InstARM32CmpLike *create(Cfg *Func, Variable *Src0, Operand *Src1,
958 return new (Func->allocate<InstARM32CmpLike>())
959 InstARM32CmpLike(Func, Src0, Src1, Predicate);
961 void emit(const Cfg *Func) const override {
964 emitCmpLike(Opcode, this, Func);
966 void emitIAS(const Cfg *Func) const override;
967 void dump(const Cfg *Func) const override {
970 Ostream &Str = Func->getContext()->getStrDump();
973 dumpSources(Func);
978 InstARM32CmpLike(Cfg *Func, Variable *Src0, Operand *Src1,
980 : InstARM32Pred(Func, K, 2, nullptr, Predicate) {
1053 static InstARM32Label *create(Cfg *Func, TargetARM32 *Target) {
1054 return new (Func->allocate<InstARM32Label>()) InstARM32Label(Func, Target);
1059 void emit(const Cfg *Func) const override;
1060 void emitIAS(const Cfg *Func) const override;
1061 void dump(const Cfg *Func) const override;
1065 InstARM32Label(Cfg *Func, TargetARM32 *Target);
1080 static InstARM32Br *create(Cfg *Func, CfgNode *TargetTrue,
1084 return new (Func->allocate<InstARM32Br>())
1085 InstARM32Br(Func, TargetTrue, TargetFalse, NoLabel, Predicate);
1088 static InstARM32Br *create(Cfg *Func, CfgNode *Target) {
1091 return new (Func->allocate<InstARM32Br>())
1092 InstARM32Br(Func, NoCondTarget, Target, NoLabel, CondARM32::AL);
1097 static InstARM32Br *create(Cfg *Func, CfgNode *Target,
1102 return new (Func->allocate<InstARM32Br>())
1103 InstARM32Br(Func, Target, NoUncondTarget, NoLabel, Predicate);
1107 static InstARM32Br *create(Cfg *Func, InstARM32Label *Label,
1111 return new (Func->allocate<InstARM32Br>())
1112 InstARM32Br(Func, NoCondTarget, NoUncondTarget, Label, Predicate);
1131 void emit(const Cfg *Func) const override;
1132 void emitIAS(const Cfg *Func) const override;
1133 void dump(const Cfg *Func) const override;
1137 InstARM32Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse,
1154 static InstARM32Call *create(Cfg *Func, Variable *Dest, Operand *CallTarget) {
1155 return new (Func->allocate<InstARM32Call>())
1156 InstARM32Call(Func, Dest, CallTarget);
1159 void emit(const Cfg *Func) const override;
1160 void emitIAS(const Cfg *Func) const override;
1161 void dump(const Cfg *Func) const override;
1165 InstARM32Call(Cfg *Func, Variable *Dest, Operand *CallTarget);
1175 void emit(const Cfg *Func) const override;
1176 void emitIAS(const Cfg *Func) const override;
1177 void dump(const Cfg *Func) const override;
1180 InstARM32RegisterStackOp(Cfg *Func, InstKindARM32 Kind, SizeT Maxsrcs,
1182 : InstARM32(Func, Kind, Maxsrcs, Dest) {}
1183 void emitUsingForm(const Cfg *Func, const EmitForm Form) const;
1184 void emitGPRsAsText(const Cfg *Func) const;
1185 void emitSRegsAsText(const Cfg *Func, const Variable *BaseReg,
1187 void emitSRegsOp(const Cfg *Func, const EmitForm, const Variable *BaseReg,
1194 virtual void emitSingleGPR(const Cfg *Func, const EmitForm Form,
1196 virtual void emitMultipleGPRs(const Cfg *Func, const EmitForm Form,
1198 virtual void emitSRegs(const Cfg *Func, const EmitForm Form,
1210 static InstARM32Pop *create(Cfg *Func, const VarList &Dests) {
1211 return new (Func->allocate<InstARM32Pop>()) InstARM32Pop(Func, Dests);
1216 InstARM32Pop(Cfg *Func, const VarList &Dests);
1221 void emitSingleGPR(const Cfg *Func, const EmitForm Form,
1223 void emitMultipleGPRs(const Cfg *Func, const EmitForm Form,
1225 void emitSRegs(const Cfg *Func, const EmitForm Form, const Variable *BaseReg,
1238 static InstARM32Push *create(Cfg *Func, const VarList &Srcs) {
1239 return new (Func->allocate<InstARM32Push>()) InstARM32Push(Func, Srcs);
1244 InstARM32Push(Cfg *Func, const VarList &Srcs);
1249 void emitSingleGPR(const Cfg *Func, const EmitForm Form,
1251 void emitMultipleGPRs(const Cfg *Func, const EmitForm Form,
1253 void emitSRegs(const Cfg *Func, const EmitForm Form, const Variable *BaseReg,
1272 static InstARM32Ret *create(Cfg *Func, Variable *LR,
1274 return new (Func->allocate<InstARM32Ret>()) InstARM32Ret(Func, LR, Source);
1276 void emit(const Cfg *Func) const override;
1277 void emitIAS(const Cfg *Func) const override;
1278 void dump(const Cfg *Func) const override;
1282 InstARM32Ret(Cfg *Func, Variable *LR, Variable *Source);
1294 static InstARM32Str *create(Cfg *Func, Variable *Value, OperandARM32Mem *Mem,
1296 return new (Func->allocate<InstARM32Str>())
1297 InstARM32Str(Func, Value, Mem, Predicate);
1299 void emit(const Cfg *Func) const override;
1300 void emitIAS(const Cfg *Func) const override;
1301 void dump(const Cfg *Func) const override;
1305 InstARM32Str(Cfg *Func, Variable *Value, OperandARM32Mem *Mem,
1319 static InstARM32Strex *create(Cfg *Func, Variable *Dest, Variable *Value,
1322 return new (Func->allocate<InstARM32Strex>())
1323 InstARM32Strex(Func, Dest, Value, Mem, Predicate);
1325 void emit(const Cfg *Func) const override;
1326 void emitIAS(const Cfg *Func) const override;
1327 void dump(const Cfg *Func) const override;
1331 InstARM32Strex(Cfg *Func, Variable *Dest, Variable *Value,
1341 static InstARM32Trap *create(Cfg *Func) {
1342 return new (Func->allocate<InstARM32Trap>()) InstARM32Trap(Func);
1344 void emit(const Cfg *Func) const override;
1345 Func) const override;
1346 void dump(const Cfg *Func) const override;
1350 explicit InstARM32Trap(Cfg *Func);
1361 static InstARM32Umull *create(Cfg *Func, Variable *DestLo, Variable *DestHi,
1364 return new (Func->allocate<InstARM32Umull>())
1365 InstARM32Umull(Func, DestLo, DestHi, Src0, Src1, Predicate);
1367 void emit(const Cfg *Func) const override;
1368 void emitIAS(const Cfg *Func) const override;
1369 void dump(const Cfg *Func) const override;
1373 InstARM32Umull(Cfg *Func, Variable *DestLo, Variable *DestHi, Variable *Src0,
1402 static InstARM32Vcvt *create(Cfg *Func, Variable *Dest, Variable *Src,
1404 return new (Func->allocate<InstARM32Vcvt>())
1405 InstARM32Vcvt(Func, Dest, Src, Variant, Predicate);
1407 void emit(const Cfg *Func) const override;
1408 void emitIAS(const Cfg *Func) const override;
1409 void dump(const Cfg *Func) const override;
1413 InstARM32Vcvt(Cfg *Func, Variable *Dest, Variable *Src, VcvtVariant Variant,
1426 static InstARM32Mov *create(Cfg *Func, Variable *Dest, Operand *Src,
1428 return new (Func->allocate<InstARM32Mov>())
1429 InstARM32Mov(Func, Dest, Src, Predicate);
1437 void emit(const Cfg *Func) const override;
1438 void emitIAS(const Cfg *Func) const override;
1439 void dump(const Cfg *Func) const override;
1452 InstARM32Mov(Cfg *Func, Variable *Dest, Operand *Src,
1454 void emitMultiDestSingleSource(const Cfg *Func) const;
1455 void emitSingleDestMultiSource(const Cfg *Func) const;
1456 void emitSingleDestSingleSource(const Cfg *Func) const;
1469 static InstARM32Extract *create(Cfg *Func, Variable *Dest, Variable *Src0,
1471 return new (Func->allocate<InstARM32Extract>())
1472 InstARM32Extract(Func, Dest, Src0, Index, Predicate);
1474 void emit(const Cfg *Func) const override;
1475 void emitIAS(const Cfg *Func) const override;
1479 InstARM32Extract(Cfg *Func, Variable *Dest, Variable *Src0, uint32_t Index,
1481 : InstARM32Pred(Func, InstARM32::Extract, 1, Dest, Predicate),
1498 static InstARM32Insert *create(Cfg *Func, Variable *Dest, Variable *Src0,
1500 return new (Func->allocate<InstARM32Insert>())
1501 InstARM32Insert(Func, Dest, Src0, Index, Predicate);
1503 void emit(const Cfg *Func) const override;
1504 void emitIAS(const Cfg *Func) const override;
1508 InstARM32Insert(Cfg *Func, Variable *Dest, Variable *Src0, uint32_t Index,
1510 : InstARM32Pred(Func, InstARM32::Insert, 1, Dest, Predicate),
1525 static InstARM32Vcmp *create(Cfg *Func, Variable *Src0, Variable *Src1,
1527 return new (Func->allocate<InstARM32Vcmp>())
1528 InstARM32Vcmp(Func, Src0, Src1, Predicate);
1530 static InstARM32Vcmp *create(Cfg *Func, Variable *Src0,
1533 return new (Func->allocate<InstARM32Vcmp>())
1534 InstARM32Vcmp(Func, Src0, Src1, Predicate);
1536 void emit(const Cfg *Func) const override;
1537 void emitIAS(const Cfg *Func) const override;
1538 void dump(const Cfg *Func) const override;
1542 InstARM32Vcmp(Cfg *Func, Variable *Src0, Operand *Src1,
1553 static InstARM32Vmrs *create(Cfg *Func, CondARM32::Cond Predicate) {
1554 return new (Func->allocate<InstARM32Vmrs>()) InstARM32Vmrs(Func, Predicate);
1556 void emit(const Cfg *Func) const override;
1557 void emitIAS(const Cfg *Func) const override;
1558 void dump(const Cfg *Func) const override;
1562 InstARM32Vmrs(Cfg *Func, CondARM32::Cond Predicate);
1571 static InstARM32Vabs *create(Cfg *Func, Variable *Dest, Variable *Src,
1573 return new (Func->allocate<InstARM32Vabs>())
1574 InstARM32Vabs(Func, Dest, Src, Predicate);
1576 void emit(const Cfg *Func) const override;
1577 void emitIAS(const Cfg *Func) const override;
1578 void dump(const Cfg *Func) const override;
1582 InstARM32Vabs(Cfg *Func, Variable *Dest, Variable *Src,
1592 static InstARM32Dmb *create(Cfg *Func) {
1593 return new (Func->allocate<InstARM32Dmb>()) InstARM32Dmb(Func);
1595 void emit(const Cfg *Func) const override;
1596 void emitIAS(const Cfg *Func) const override;
1597 void dump(const Cfg *Func) const override;
1601 explicit InstARM32Dmb(Cfg *Func);
1610 static InstARM32Nop *create(Cfg *Func) {
1611 return new (Func->allocate<InstARM32Nop>()) InstARM32Nop(Func);
1613 void emit(const Cfg *Func) const override;
1614 void emitIAS(const Cfg *Func) const override;
1615 void dump(const Cfg *Func) const override;
1619 explicit InstARM32Nop(Cfg *Func);
1626 template <> void InstARM32Ldr::emit(const Cfg *Func) const;
1627 template <> void InstARM32Movw::emit(const Cfg *Func) const;
1628 template <> void InstARM32Movt::emit(const Cfg *Func) const;