| Index: src/IceTargetLoweringX86Base.h
|
| diff --git a/src/IceTargetLoweringX86Base.h b/src/IceTargetLoweringX86Base.h
|
| index f84c6df1d492b72c4230c6b26a26662e9ad5b915..71b824f7ad3e4bcdbdb2fa0f70c69647d389edb3 100644
|
| --- a/src/IceTargetLoweringX86Base.h
|
| +++ b/src/IceTargetLoweringX86Base.h
|
| @@ -801,6 +801,10 @@ protected:
|
| AutoMemorySandboxer<> _(this, &Dest, &Src0);
|
| Context.insert<typename Traits::Insts::Por>(Dest, Src0);
|
| }
|
| + void _punpckl(Variable *Dest, Operand *Src0) {
|
| + AutoMemorySandboxer<> _(this, &Dest, &Src0);
|
| + Context.insert<typename Traits::Insts::Punpckl>(Dest, Src0);
|
| + }
|
| void _pshufd(Variable *Dest, Operand *Src0, Operand *Src1) {
|
| AutoMemorySandboxer<> _(this, &Dest, &Src0, &Src1);
|
| Context.insert<typename Traits::Insts::Pshufd>(Dest, Src0, Src1);
|
| @@ -1082,6 +1086,23 @@ private:
|
|
|
| BoolFolding<Traits> FoldingInfo;
|
|
|
| + /// Helpers for lowering ShuffleVector
|
| + /// @{
|
| + Variable *lowerShuffleVector_AllFromSameSrc(Variable *Src, SizeT Index0,
|
| + SizeT Index1, SizeT Index2,
|
| + SizeT Index3);
|
| + static constexpr SizeT IGNORE_INDEX = 0x80000000u;
|
| + Variable *lowerShuffleVector_TwoFromSameSrc(Variable *Src0, SizeT Index0,
|
| + SizeT Index1, Variable *Src1,
|
| + SizeT Index2, SizeT Index3);
|
| + static constexpr SizeT UNIFIED_INDEX_0 = 0;
|
| + static constexpr SizeT UNIFIED_INDEX_1 = 2;
|
| + Variable *lowerShuffleVector_UnifyFromDifferentSrcs(Variable *Src0,
|
| + SizeT Index0,
|
| + Variable *Src1,
|
| + SizeT Index1);
|
| + /// @}
|
| +
|
| static FixupKind PcRelFixup;
|
| static FixupKind AbsFixup;
|
| };
|
|
|