| Index: src/IceInstX8632.h
|
| diff --git a/src/IceInstX8632.h b/src/IceInstX8632.h
|
| index 7725ad72a43c9b3dd71154bebb13e767d9a407c6..7c547f76878378f7a2e09703e87141a2fa130fe2 100644
|
| --- a/src/IceInstX8632.h
|
| +++ b/src/IceInstX8632.h
|
| @@ -196,6 +196,7 @@ public:
|
| Idiv,
|
| Imul,
|
| Insertps,
|
| + Jmp,
|
| Label,
|
| Lea,
|
| Load,
|
| @@ -400,6 +401,26 @@ private:
|
| const InstX8632Label *Label; // Intra-block branch target
|
| };
|
|
|
| +// Jump to a target outside this function, such as tailcall, nacljump,
|
| +// naclret, unreachable. This is different from a Branch instruction
|
| +// in that there is no intra-function control flow to represent.
|
| +class InstX8632Jmp : public InstX8632 {
|
| + InstX8632Jmp(const InstX8632Jmp &) = delete;
|
| + InstX8632Jmp &operator=(const InstX8632Jmp &) = delete;
|
| +
|
| +public:
|
| + static InstX8632Jmp *create(Cfg *Func, Operand *Target) {
|
| + return new (Func->allocate<InstX8632Jmp>()) InstX8632Jmp(Func, Target);
|
| + }
|
| + 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, Jmp); }
|
| +
|
| +private:
|
| + InstX8632Jmp(Cfg *Func, Operand *Target);
|
| +};
|
| +
|
| // AdjustStack instruction - subtracts esp by the given amount and
|
| // updates the stack offset during code emission.
|
| class InstX8632AdjustStack : public InstX8632 {
|
|
|