| Index: src/IceInstARM32.h
|
| diff --git a/src/IceInstARM32.h b/src/IceInstARM32.h
|
| index 461fa48ccb0482f210a1a3e365b80decaa03a3f4..898f6a46876794f695260297aadabed5ab7a3a9c 100644
|
| --- a/src/IceInstARM32.h
|
| +++ b/src/IceInstARM32.h
|
| @@ -344,6 +344,8 @@ public:
|
|
|
| void dump(const Cfg *Func) const override;
|
|
|
| + void emitIAS(const Cfg *Func) const override;
|
| +
|
| protected:
|
| InstARM32(Cfg *Func, InstKindARM32 Kind, SizeT Maxsrcs, Variable *Dest)
|
| : InstTarget(Func, static_cast<InstKind>(Kind), Maxsrcs, Dest) {}
|
| @@ -351,6 +353,10 @@ protected:
|
| static bool isClassof(const Inst *Inst, InstKindARM32 MyKind) {
|
| return Inst->getKind() == static_cast<InstKind>(MyKind);
|
| }
|
| +
|
| + // Generates text of assembly instruction using method emit(), and then adds
|
| + // to the assembly buffer as a Fixup.
|
| + void emitUsingTextFixup(const Cfg *Func) const;
|
| };
|
|
|
| /// A predicable ARM instruction.
|
| @@ -412,10 +418,6 @@ public:
|
| return;
|
| emitUnaryopGPR(Opcode, this, Func, NeedsWidthSuffix);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm_unreachable("Not yet implemented");
|
| - }
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -456,10 +458,6 @@ public:
|
| return;
|
| emitUnaryopFP(Opcode, this, Func);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm::report_fatal_error("Not yet implemented");
|
| - }
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -501,10 +499,7 @@ public:
|
| return;
|
| emitTwoAddr(Opcode, this, Func);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm::report_fatal_error("Not yet implemented");
|
| - }
|
| + void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -542,7 +537,6 @@ public:
|
| InstARM32LoadBase(Func, Dest, Source, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -636,10 +630,6 @@ public:
|
| return;
|
| emitThreeAddrFP(Opcode, this, Func);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm::report_fatal_error("Not yet implemented");
|
| - }
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -682,10 +672,6 @@ public:
|
| return;
|
| emitFourAddr(Opcode, this, Func);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm::report_fatal_error("Not yet implemented");
|
| - }
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -729,10 +715,6 @@ public:
|
| return;
|
| emitCmpLike(Opcode, this, Func);
|
| }
|
| - void emitIAS(const Cfg *Func) const override {
|
| - (void)Func;
|
| - llvm_unreachable("Not yet implemented");
|
| - }
|
| void dump(const Cfg *Func) const override {
|
| if (!BuildDefs::dump())
|
| return;
|
| @@ -810,7 +792,6 @@ public:
|
| IceString getName(const Cfg *Func) const;
|
| SizeT getNumber() const { return Number; }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
|
|
| private:
|
| @@ -879,7 +860,6 @@ public:
|
| }
|
| bool repointEdges(CfgNode *OldNode, CfgNode *NewNode) override;
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Br); }
|
|
|
| @@ -910,7 +890,6 @@ public:
|
| InstARM32AdjustStack(Func, SP, Amount, SrcAmount);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Adjuststack); }
|
| SizeT getAmount() const { return Amount; }
|
| @@ -936,7 +915,6 @@ public:
|
| }
|
| Operand *getCallTarget() const { return getSrc(0); }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Call); }
|
|
|
| @@ -956,7 +934,6 @@ public:
|
| return new (Func->allocate<InstARM32Pop>()) InstARM32Pop(Func, Dests);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Pop); }
|
|
|
| @@ -978,7 +955,6 @@ public:
|
| return new (Func->allocate<InstARM32Push>()) InstARM32Push(Func, Srcs);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Push); }
|
|
|
| @@ -1029,7 +1005,6 @@ public:
|
| InstARM32Str(Func, Value, Mem, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Str); }
|
|
|
| @@ -1055,7 +1030,6 @@ public:
|
| InstARM32Strex(Func, Dest, Value, Mem, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Strex); }
|
|
|
| @@ -1074,7 +1048,6 @@ public:
|
| return new (Func->allocate<InstARM32Trap>()) InstARM32Trap(Func);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Trap); }
|
|
|
| @@ -1097,7 +1070,6 @@ public:
|
| InstARM32Umull(Func, DestLo, DestHi, Src0, Src1, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Umull); }
|
|
|
| @@ -1122,7 +1094,6 @@ public:
|
| InstARM32Vcvt(Func, Dest, Src, Variant, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Vcvt); }
|
|
|
| @@ -1189,7 +1160,6 @@ public:
|
| InstARM32Vcmp(Func, Src0, Src1, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Vcmp); }
|
|
|
| @@ -1209,7 +1179,6 @@ public:
|
| return new (Func->allocate<InstARM32Vmrs>()) InstARM32Vmrs(Func, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Vmrs); }
|
|
|
| @@ -1229,7 +1198,6 @@ public:
|
| InstARM32Vabs(Func, Dest, Src, Predicate);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Vabs); }
|
|
|
| @@ -1248,7 +1216,6 @@ public:
|
| return new (Func->allocate<InstARM32Dmb>()) InstARM32Dmb(Func);
|
| }
|
| void emit(const Cfg *Func) const override;
|
| - void emitIAS(const Cfg *Func) const override;
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Dmb); }
|
|
|
|
|