summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Khasanov <rob.khasanov@gmail.com>2014-06-24 18:08:04 +0000
committerRobert Khasanov <rob.khasanov@gmail.com>2014-06-24 18:08:04 +0000
commit21c836823f9cb70da40c81354cb1df84c723507c (patch)
tree5de4b77edb06f2bda7208edb018660f22a6b32fc
parentd40b970616b20d40a8fdfd03c48bb395cae8bc55 (diff)
downloadbcm5719-llvm-21c836823f9cb70da40c81354cb1df84c723507c.tar.gz
bcm5719-llvm-21c836823f9cb70da40c81354cb1df84c723507c.zip
vpblend intrinsics combines as shifts intrinsics due to absence return stmt between them
Fix PR20088 Differential Revision: http://reviews.llvm.org/D4277 llvm-svn: 211617
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp2
-rw-r--r--llvm/test/CodeGen/X86/pr20088.ll9
2 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index e3fd0ceae31..874257f2124 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -19188,6 +19188,8 @@ static SDValue PerformINTRINSIC_WO_CHAINCombine(SDNode *N, SelectionDAG &DAG,
if (C->isAllOnesValue())
return Op1;
}
+
+ return SDValue();
}
// Packed SSE2/AVX2 arithmetic shift immediate intrinsics.
diff --git a/llvm/test/CodeGen/X86/pr20088.ll b/llvm/test/CodeGen/X86/pr20088.ll
new file mode 100644
index 00000000000..d7aab7fcba4
--- /dev/null
+++ b/llvm/test/CodeGen/X86/pr20088.ll
@@ -0,0 +1,9 @@
+; RUN: llc < %s -mattr=+avx | FileCheck %s
+
+declare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>)
+
+define <16 x i8> @foo(<16 x i8> %x) {
+; CHECK: vpblendvb
+ %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> zeroinitializer, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, <16 x i8> %x)
+ ret <16 x i8> %res;
+}
OpenPOWER on IntegriCloud