summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-07-25 23:47:11 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-07-25 23:47:11 +0000
commit185cc18d4265b2822956c91ba65622d8256fdcec (patch)
treefb0f34f27b604f601514b502da4167c25a0f98ad /llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
parentc824458e81db8fdd0d0ca11f906d68ff406b6f9c (diff)
downloadbcm5719-llvm-185cc18d4265b2822956c91ba65622d8256fdcec.tar.gz
bcm5719-llvm-185cc18d4265b2822956c91ba65622d8256fdcec.zip
[x86] Teach the X86 backend to print shuffle comments for PSHUFB
instructions which happen to have a constant mask. Currently, this only handles a very narrow set of cases, but those happen to be the cases that I care about for testing shuffles sanely. This is a bit trickier than other shuffle instructions because we're decoding constants out of the constant pool. The current MC layer makes it completely impossible to inspect a constant pool entry, so we have to do it at the MI level and attach the comment to the streamer on its way out. So no joy for disassembling, but it does make test cases and asm dumps *much* nicer. Sorry for no test cases, but it didn't really seem that valuable to go trolling through existing old test cases and updating them. I'll have lots of testing of this in the upcoming patch for SSSE3 emission in the new vector shuffle lowering code paths. llvm-svn: 213986
Diffstat (limited to 'llvm/lib/Target/X86/Utils/X86ShuffleDecode.h')
-rw-r--r--llvm/lib/Target/X86/Utils/X86ShuffleDecode.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.h b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
index 9e75b6b945c..3ac0afe1e34 100644
--- a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
+++ b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
@@ -22,6 +22,7 @@
//===----------------------------------------------------------------------===//
namespace llvm {
+class ConstantDataSequential;
class MVT;
enum {
@@ -59,6 +60,8 @@ void DecodeUNPCKHMask(MVT VT, SmallVectorImpl<int> &ShuffleMask);
/// different datatypes and vector widths.
void DecodeUNPCKLMask(MVT VT, SmallVectorImpl<int> &ShuffleMask);
+void DecodePSHUFBMask(const ConstantDataSequential *C,
+ SmallVectorImpl<int> &ShuffleMask);
void DecodeVPERM2X128Mask(MVT VT, unsigned Imm,
SmallVectorImpl<int> &ShuffleMask);
OpenPOWER on IntegriCloud