diff options
author | Juergen Ributzka <juergen@apple.com> | 2013-09-21 04:55:22 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2013-09-21 04:55:22 +0000 |
commit | fcfc234130e9b065cda0363f6945c9ce5a930c31 (patch) | |
tree | dc996d07899f1d69a223de393bc13524d5d67bed /test/CodeGen/X86/vec_split.ll | |
parent | 1941431f8a0f61fb5d5e3175cc49efd5dd19033c (diff) | |
download | llvm-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.ll | 9 |
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 |