summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/NVPTX/vector-select.ll
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2012-11-29 14:26:28 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2012-11-29 14:26:28 +0000
commit0ac49bf846325c471908b39c70c25446cdb3f16f (patch)
treefa0749b6f0704a0f40ce939af975202ca96a8d3f /llvm/test/CodeGen/NVPTX/vector-select.ll
parentbc45119b4465f6045b88fbdaca8cb4780338b4f0 (diff)
downloadbcm5719-llvm-0ac49bf846325c471908b39c70c25446cdb3f16f.tar.gz
bcm5719-llvm-0ac49bf846325c471908b39c70c25446cdb3f16f.zip
Teach the legalizer how to handle operands for VSELECT nodes
If we need to split the operand of a VSELECT, it must be the mask operand. We split the entire VSELECT operand with EXTRACT_SUBVECTOR. llvm-svn: 168883
Diffstat (limited to 'llvm/test/CodeGen/NVPTX/vector-select.ll')
-rw-r--r--llvm/test/CodeGen/NVPTX/vector-select.ll16
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/NVPTX/vector-select.ll b/llvm/test/CodeGen/NVPTX/vector-select.ll
new file mode 100644
index 00000000000..11893df1032
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/vector-select.ll
@@ -0,0 +1,16 @@
+; RUN: llc < %s -march=nvptx -mcpu=sm_20
+; RUN: llc < %s -march=nvptx64 -mcpu=sm_20
+
+; This test makes sure that vector selects are scalarized by the type legalizer.
+; If not, type legalization will fail.
+
+define void @foo(<2 x i32> addrspace(1)* %def_a, <2 x i32> addrspace(1)* %def_b, <2 x i32> addrspace(1)* %def_c) {
+entry:
+ %tmp4 = load <2 x i32> addrspace(1)* %def_a
+ %tmp6 = load <2 x i32> addrspace(1)* %def_c
+ %tmp8 = load <2 x i32> addrspace(1)* %def_b
+ %0 = icmp sge <2 x i32> %tmp4, zeroinitializer
+ %cond = select <2 x i1> %0, <2 x i32> %tmp6, <2 x i32> %tmp8
+ store <2 x i32> %cond, <2 x i32> addrspace(1)* %def_c
+ ret void
+}
OpenPOWER on IntegriCloud