| Index: src/IceInstX86Base.h
|
| diff --git a/src/IceInstX86Base.h b/src/IceInstX86Base.h
|
| index c29538a4553f57a52a87e8f8fd2407958ee39943..655b38d36831fe47acf75e14ca419eedc11f6e9b 100644
|
| --- a/src/IceInstX86Base.h
|
| +++ b/src/IceInstX86Base.h
|
| @@ -142,6 +142,7 @@ template <typename TraitsType> struct InstImpl {
|
| Pmuludq,
|
| Pop,
|
| Por,
|
| + Pshufb,
|
| Pshufd,
|
| Punpckl,
|
| Psll,
|
| @@ -2844,6 +2845,22 @@ template <typename TraitsType> struct InstImpl {
|
| InstX86IacaEnd(Cfg *Func);
|
| };
|
|
|
| + class InstX86Pshufb
|
| + : public InstX86BaseBinopXmm<InstX86Base::Pshufb, false,
|
| + InstX86Base::SseSuffix::None> {
|
| + public:
|
| + static InstX86Pshufb *create(Cfg *Func, Variable *Dest, Operand *Source) {
|
| + return new (Func->allocate<InstX86Pshufb>())
|
| + InstX86Pshufb(Func, Dest, Source);
|
| + }
|
| +
|
| + private:
|
| + InstX86Pshufb(Cfg *Func, Variable *Dest, Operand *Source)
|
| + : InstX86BaseBinopXmm<InstX86Base::Pshufb, false,
|
| + InstX86Base::SseSuffix::None>(Func, Dest,
|
| + Source) {}
|
| + };
|
| +
|
| class InstX86Punpckl
|
| : public InstX86BaseBinopXmm<InstX86Base::Punpckl, false,
|
| InstX86Base::SseSuffix::Unpack> {
|
| @@ -2982,6 +2999,7 @@ template <typename TraitsType> struct Insts {
|
| using IacaStart = typename InstImpl<TraitsType>::InstX86IacaStart;
|
| using IacaEnd = typename InstImpl<TraitsType>::InstX86IacaEnd;
|
|
|
| + using Pshufb = typename InstImpl<TraitsType>::InstX86Pshufb;
|
| using Punpckl = typename InstImpl<TraitsType>::InstX86Punpckl;
|
| };
|
|
|
| @@ -3214,6 +3232,9 @@ template <typename TraitsType> struct Insts {
|
| const char *InstImpl<TraitsType>::InstX86Pshufd::Base::Opcode = "pshufd"; \
|
| template <> \
|
| template <> \
|
| + const char *InstImpl<TraitsType>::InstX86Pshufb::Base::Opcode = "pshufb"; \
|
| + template <> \
|
| + template <> \
|
| const char *InstImpl<TraitsType>::InstX86Punpckl::Base::Opcode = "punpckl"; \
|
| /* Inplace GPR ops */ \
|
| template <> \
|
| @@ -3579,6 +3600,12 @@ template <typename TraitsType> struct Insts {
|
| template <> \
|
| template <> \
|
| const InstImpl<TraitsType>::Assembler::XmmEmitterRegOp \
|
| + InstImpl<TraitsType>::InstX86Pshufb::Base::Emitter = { \
|
| + &InstImpl<TraitsType>::Assembler::pshufb, \
|
| + &InstImpl<TraitsType>::Assembler::pshufb}; \
|
| + template <> \
|
| + template <> \
|
| + const InstImpl<TraitsType>::Assembler::XmmEmitterRegOp \
|
| InstImpl<TraitsType>::InstX86Punpckl::Base::Emitter = { \
|
| &InstImpl<TraitsType>::Assembler::punpckldq, \
|
| &InstImpl<TraitsType>::Assembler::punpckldq}; \
|
|
|