| Index: src/IceInst.h
|
| diff --git a/src/IceInst.h b/src/IceInst.h
|
| index 0397e02a7e54d4743b0f7b3c5d42bf3c7ede4e82..0a6c61d75cd3ea79ea19ad966450422c7ae7594d 100644
|
| --- a/src/IceInst.h
|
| +++ b/src/IceInst.h
|
| @@ -41,9 +41,11 @@ public:
|
| Br,
|
| Call,
|
| Cast,
|
| + ExtractElement,
|
| Fcmp,
|
| Icmp,
|
| IntrinsicCall,
|
| + InsertElement,
|
| Load,
|
| Phi,
|
| Ret,
|
| @@ -344,6 +346,29 @@ private:
|
| const OpKind CastKind;
|
| };
|
|
|
| +// ExtractElement instruction.
|
| +class InstExtractElement : public Inst {
|
| +public:
|
| + static InstExtractElement *create(Cfg *Func, Variable *Dest, Operand *Source1,
|
| + Operand *Source2) {
|
| + return new (Func->allocateInst<InstExtractElement>())
|
| + InstExtractElement(Func, Dest, Source1, Source2);
|
| + }
|
| +
|
| + virtual void dump(const Cfg *Func) const;
|
| + static bool classof(const Inst *Inst) {
|
| + return Inst->getKind() == ExtractElement;
|
| + }
|
| +
|
| +private:
|
| + InstExtractElement(Cfg *Func, Variable *Dest, Operand *Source1,
|
| + Operand *Source2);
|
| + InstExtractElement(const InstExtractElement &) LLVM_DELETED_FUNCTION;
|
| + InstExtractElement &
|
| + operator=(const InstExtractElement &) LLVM_DELETED_FUNCTION;
|
| + virtual ~InstExtractElement() {}
|
| +};
|
| +
|
| // Floating-point comparison instruction. The source operands are
|
| // captured in getSrc(0) and getSrc(1).
|
| class InstFcmp : public Inst {
|
| @@ -402,6 +427,28 @@ private:
|
| const ICond Condition;
|
| };
|
|
|
| +// InsertElement instruction.
|
| +class InstInsertElement : public Inst {
|
| +public:
|
| + static InstInsertElement *create(Cfg *Func, Variable *Dest, Operand *Source1,
|
| + Operand *Source2, Operand *Source3) {
|
| + return new (Func->allocateInst<InstInsertElement>())
|
| + InstInsertElement(Func, Dest, Source1, Source2, Source3);
|
| + }
|
| +
|
| + virtual void dump(const Cfg *Func) const;
|
| + static bool classof(const Inst *Inst) {
|
| + return Inst->getKind() == InsertElement;
|
| + }
|
| +
|
| +private:
|
| + InstInsertElement(Cfg *Func, Variable *Dest, Operand *Source1,
|
| + Operand *Source2, Operand *Source3);
|
| + InstInsertElement(const InstInsertElement &) LLVM_DELETED_FUNCTION;
|
| + InstInsertElement &operator=(const InstInsertElement &) LLVM_DELETED_FUNCTION;
|
| + virtual ~InstInsertElement() {}
|
| +};
|
| +
|
| // Call to an intrinsic function. The call target is captured as getSrc(0),
|
| // and arg I is captured as getSrc(I+1).
|
| class InstIntrinsicCall : public InstCall {
|
|
|