summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-30 03:47:56 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-30 03:47:56 +0000
commitec0115c9b7b34613fef4cd439fddcd584ebe99af (patch)
tree01f12ced591cb8bf0b70671480f4817c10af23d3 /llvm/lib
parent5364655e02d051ed7acab56ef0f66c0fe3586621 (diff)
downloadbcm5719-llvm-ec0115c9b7b34613fef4cd439fddcd584ebe99af.tar.gz
bcm5719-llvm-ec0115c9b7b34613fef4cd439fddcd584ebe99af.zip
Add AVX SSE2 packed integer shuffle instructions
llvm-svn: 107245
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86InstrSSE.td14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td
index 305fb5016dc..e0a058b3bf4 100644
--- a/llvm/lib/Target/X86/X86InstrSSE.td
+++ b/llvm/lib/Target/X86/X86InstrSSE.td
@@ -2672,6 +2672,20 @@ def mi : Ii8<0x70, MRMSrcMem,
}
} // ExeDomain = SSEPackedInt
+let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE2] in {
+ let AddedComplexity = 5 in
+ defm VPSHUFD : sse2_pshuffle<"vpshufd", v4i32, pshufd, bc_v4i32>, OpSize,
+ VEX;
+
+ // SSE2 with ImmT == Imm8 and XS prefix.
+ defm VPSHUFHW : sse2_pshuffle<"vpshufhw", v8i16, pshufhw, bc_v8i16>, XS,
+ VEX;
+
+ // SSE2 with ImmT == Imm8 and XD prefix.
+ defm VPSHUFLW : sse2_pshuffle<"vpshuflw", v8i16, pshuflw, bc_v8i16>, XD,
+ VEX;
+}
+
let Predicates = [HasSSE2] in {
let AddedComplexity = 5 in
defm PSHUFD : sse2_pshuffle<"pshufd", v4i32, pshufd, bc_v4i32>, TB, OpSize;
OpenPOWER on IntegriCloud