summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/avx-trunc.ll
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2012-02-01 07:56:44 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2012-02-01 07:56:44 +0000
commit3ae98150e3e3c4770644a33cf38fe42a582509bb (patch)
tree9210d27ac48d904fd6efa3304c62b2a68a401532 /test/CodeGen/X86/avx-trunc.ll
parent24473120a253a05f3601cd3373403b47e6d03d41 (diff)
downloadllvm-3ae98150e3e3c4770644a33cf38fe42a582509bb.tar.gz
llvm-3ae98150e3e3c4770644a33cf38fe42a582509bb.tar.bz2
llvm-3ae98150e3e3c4770644a33cf38fe42a582509bb.tar.xz
Optimization for "truncate" operation on AVX.
Truncating v4i64 -> v4i32 and v8i32 -> v8i16 may be done with set of shuffles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149485 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/avx-trunc.ll')
-rwxr-xr-xtest/CodeGen/X86/avx-trunc.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/CodeGen/X86/avx-trunc.ll b/test/CodeGen/X86/avx-trunc.ll
new file mode 100755
index 0000000000..dd0e268c3c
--- /dev/null
+++ b/test/CodeGen/X86/avx-trunc.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx | FileCheck %s
+
+define <4 x i32> @trunc_64_32(<4 x i64> %A) nounwind uwtable readnone ssp{
+; CHECK: trunc_64_32
+; CHECK: pshufd
+ %B = trunc <4 x i64> %A to <4 x i32>
+ ret <4 x i32>%B
+}
+define <8 x i16> @trunc_32_16(<8 x i32> %A) nounwind uwtable readnone ssp{
+; CHECK: trunc_32_16
+; CHECK: pshufb
+ %B = trunc <8 x i32> %A to <8 x i16>
+ ret <8 x i16>%B
+}
+