summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/vec_split.ll
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2013-09-21 04:55:22 +0000
committerJuergen Ributzka <juergen@apple.com>2013-09-21 04:55:22 +0000
commitfcfc234130e9b065cda0363f6945c9ce5a930c31 (patch)
treedc996d07899f1d69a223de393bc13524d5d67bed /test/CodeGen/X86/vec_split.ll
parent1941431f8a0f61fb5d5e3175cc49efd5dd19033c (diff)
downloadllvm-fcfc234130e9b065cda0363f6945c9ce5a930c31.tar.gz
llvm-fcfc234130e9b065cda0363f6945c9ce5a930c31.tar.bz2
llvm-fcfc234130e9b065cda0363f6945c9ce5a930c31.tar.xz
[X86] Emulate AVX 256bit MIN/MAX support by splitting the vector.
In AVX 256bit vectors are valid vectors and therefore the Type Legalizer doesn't split the VSELECT and SETCC nodes. AVX only supports MIN/MAX on 128bit vectors and this fix enables vector splitting for this special case in the X86 DAG Combiner. This fix is related to PR16695, PR17002, and <rdar://problem/14594431>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191131 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/vec_split.ll')
-rw-r--r--test/CodeGen/X86/vec_split.ll9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/CodeGen/X86/vec_split.ll b/test/CodeGen/X86/vec_split.ll
index a49af34f57..8d0802e9fc 100644
--- a/test/CodeGen/X86/vec_split.ll
+++ b/test/CodeGen/X86/vec_split.ll
@@ -1,10 +1,14 @@
; RUN: llc -march=x86-64 -mcpu=corei7 < %s | FileCheck %s -check-prefix=SSE4
+; RUN: llc -march=x86-64 -mcpu=corei7-avx < %s | FileCheck %s -check-prefix=AVX1
; RUN: llc -march=x86-64 -mcpu=core-avx2 < %s | FileCheck %s -check-prefix=AVX2
define <16 x i16> @split16(<16 x i16> %a, <16 x i16> %b, <16 x i8> %__mask) {
; SSE4-LABEL: split16:
; SSE4: pminuw
; SSE4: pminuw
+; AVX1-LABEL: split16:
+; AVX1: vpminuw
+; AVX1: vpminuw
; AVX2-LABEL: split16:
; AVX2: vpminuw
; AVX2: ret
@@ -19,6 +23,11 @@ define <32 x i16> @split32(<32 x i16> %a, <32 x i16> %b, <32 x i8> %__mask) {
; SSE4: pminuw
; SSE4: pminuw
; SSE4: pminuw
+; AVX1-LABEL: split32:
+; AVX1: vpminuw
+; AVX1: vpminuw
+; AVX1: vpminuw
+; AVX1: vpminuw
; AVX2-LABEL: split32:
; AVX2: vpminuw
; AVX2: vpminuw