diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-02-07 15:39:22 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-02-07 15:39:22 +0000 |
commit | a3d674470cfa2fa44b627d3f5b79b6800e749221 (patch) | |
tree | 247a8540f434bcf44e1cca9f585f138ebe7c4df0 /llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp | |
parent | ad5c3fc47d4ff7aaac48a735f773e713395a75bb (diff) | |
download | llvm-a3d674470cfa2fa44b627d3f5b79b6800e749221.zip llvm-a3d674470cfa2fa44b627d3f5b79b6800e749221.tar.gz llvm-a3d674470cfa2fa44b627d3f5b79b6800e749221.tar.bz2 |
[X86][SSE] Added support for MOVHPD/MOVLPD + MOVHPS/MOVLPS shuffle decoding.
llvm-svn: 260034
Diffstat (limited to 'llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp')
-rw-r--r-- | llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp index 08c039f..e2e3f8c 100644 --- a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp +++ b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp @@ -44,6 +44,17 @@ void DecodeINSERTPSMask(unsigned Imm, SmallVectorImpl<int> &ShuffleMask) { if (ZMask & 8) ShuffleMask[3] = SM_SentinelZero; } +void DecodeInsertElementMask(MVT VT, unsigned Idx, unsigned Len, + SmallVectorImpl<int> &ShuffleMask) { + unsigned NumElts = VT.getVectorNumElements(); + assert((Idx + Len) <= NumElts && "Insertion out of range"); + + for (unsigned i = 0; i != NumElts; ++i) + ShuffleMask.push_back(i); + for (unsigned i = 0; i != Len; ++i) + ShuffleMask[Idx + i] = NumElts + i; +} + // <3,1> or <6,7,2,3> void DecodeMOVHLPSMask(unsigned NElts, SmallVectorImpl<int> &ShuffleMask) { for (unsigned i = NElts / 2; i != NElts; ++i) |