diff options
| author | Justin Holewinski <jholewinski@nvidia.com> | 2012-11-29 14:26:28 +0000 |
|---|---|---|
| committer | Justin Holewinski <jholewinski@nvidia.com> | 2012-11-29 14:26:28 +0000 |
| commit | 0ac49bf846325c471908b39c70c25446cdb3f16f (patch) | |
| tree | fa0749b6f0704a0f40ce939af975202ca96a8d3f /llvm/test/CodeGen/NVPTX/vector-select.ll | |
| parent | bc45119b4465f6045b88fbdaca8cb4780338b4f0 (diff) | |
| download | bcm5719-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.ll | 16 |
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 +} |

