diff options
| author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-09-02 22:43:39 +0000 |
|---|---|---|
| committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-09-02 22:43:39 +0000 |
| commit | 2c60b6be1893a868222e9a92b6c4a6172ef37527 (patch) | |
| tree | 0f1719aa428916e795e6c792fff87f0d9ebd3aa8 /lib | |
| parent | 6491843a4d92ed6192a1aeda2af97536075e64fb (diff) | |
| download | external_llvm-2c60b6be1893a868222e9a92b6c4a6172ef37527.zip external_llvm-2c60b6be1893a868222e9a92b6c4a6172ef37527.tar.gz external_llvm-2c60b6be1893a868222e9a92b6c4a6172ef37527.tar.bz2 | |
Move insertps mask decoding to header file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112896 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Target/X86/AsmPrinter/X86InstComments.cpp | 28 | ||||
| -rw-r--r-- | lib/Target/X86/X86ShuffleDecode.h | 24 |
2 files changed, 24 insertions, 28 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86InstComments.cpp b/lib/Target/X86/AsmPrinter/X86InstComments.cpp index 61f5065..da9d5a3 100644 --- a/lib/Target/X86/AsmPrinter/X86InstComments.cpp +++ b/lib/Target/X86/AsmPrinter/X86InstComments.cpp @@ -20,34 +20,6 @@ using namespace llvm; //===----------------------------------------------------------------------===// -// Vector Mask Decoding for non-shuffles -//===----------------------------------------------------------------------===// - -static void DecodeINSERTPSMask(unsigned Imm, - SmallVectorImpl<unsigned> &ShuffleMask) { - // Defaults the copying the dest value. - ShuffleMask.push_back(0); - ShuffleMask.push_back(1); - ShuffleMask.push_back(2); - ShuffleMask.push_back(3); - - // Decode the immediate. - unsigned ZMask = Imm & 15; - unsigned CountD = (Imm >> 4) & 3; - unsigned CountS = (Imm >> 6) & 3; - - // CountS selects which input element to use. - unsigned InVal = 4+CountS; - // CountD specifies which element of destination to update. - ShuffleMask[CountD] = InVal; - // ZMask zaps values, potentially overriding the CountD elt. - if (ZMask & 1) ShuffleMask[0] = SM_SentinelZero; - if (ZMask & 2) ShuffleMask[1] = SM_SentinelZero; - if (ZMask & 4) ShuffleMask[2] = SM_SentinelZero; - if (ZMask & 8) ShuffleMask[3] = SM_SentinelZero; -} - -//===----------------------------------------------------------------------===// // Top Level Entrypoint //===----------------------------------------------------------------------===// diff --git a/lib/Target/X86/X86ShuffleDecode.h b/lib/Target/X86/X86ShuffleDecode.h index 818f7ca..df04052 100644 --- a/lib/Target/X86/X86ShuffleDecode.h +++ b/lib/Target/X86/X86ShuffleDecode.h @@ -26,6 +26,30 @@ enum { SM_SentinelZero = ~0U }; +static inline +void DecodeINSERTPSMask(unsigned Imm, SmallVectorImpl<unsigned> &ShuffleMask) { + // Defaults the copying the dest value. + ShuffleMask.push_back(0); + ShuffleMask.push_back(1); + ShuffleMask.push_back(2); + ShuffleMask.push_back(3); + + // Decode the immediate. + unsigned ZMask = Imm & 15; + unsigned CountD = (Imm >> 4) & 3; + unsigned CountS = (Imm >> 6) & 3; + + // CountS selects which input element to use. + unsigned InVal = 4+CountS; + // CountD specifies which element of destination to update. + ShuffleMask[CountD] = InVal; + // ZMask zaps values, potentially overriding the CountD elt. + if (ZMask & 1) ShuffleMask[0] = SM_SentinelZero; + if (ZMask & 2) ShuffleMask[1] = SM_SentinelZero; + if (ZMask & 4) ShuffleMask[2] = SM_SentinelZero; + if (ZMask & 8) ShuffleMask[3] = SM_SentinelZero; +} + // <3,1> or <6,7,2,3> static void DecodeMOVHLPSMask(unsigned NElts, SmallVectorImpl<unsigned> &ShuffleMask) { |
