diff options
author | Dan Gohman <gohman@apple.com> | 2010-03-02 02:14:38 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-03-02 02:14:38 +0000 |
commit | 4cec5439522410706badcf73769cbce0195f8033 (patch) | |
tree | 9f8176fb1016268372c73e8e9fd9f7a569672034 /llvm/test/CodeGen/X86/vec_cast.ll | |
parent | 52f55639732cffc7615f71d4f7521a19c1db43d8 (diff) | |
download | bcm5719-llvm-4cec5439522410706badcf73769cbce0195f8033.tar.gz bcm5719-llvm-4cec5439522410706badcf73769cbce0195f8033.zip |
Fix several places to handle vector operands properly.
Based on a patch by Micah Villmow for PR6438.
llvm-svn: 97538
Diffstat (limited to 'llvm/test/CodeGen/X86/vec_cast.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/vec_cast.ll | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/llvm/test/CodeGen/X86/vec_cast.ll b/llvm/test/CodeGen/X86/vec_cast.ll index 1f899b3c20a..6f18d13cc9d 100644 --- a/llvm/test/CodeGen/X86/vec_cast.ll +++ b/llvm/test/CodeGen/X86/vec_cast.ll @@ -31,11 +31,10 @@ define <1 x i32> @f(<1 x i16> %a) nounwind { ret <1 x i32> %c } -; TODO: Legalize doesn't yet handle this. -;define <8 x i16> @g(<8 x i32> %a) nounwind { -; %c = trunc <8 x i32> %a to <8 x i16> -; ret <8 x i16> %c -;} +define <8 x i16> @g(<8 x i32> %a) nounwind { + %c = trunc <8 x i32> %a to <8 x i16> + ret <8 x i16> %c +} define <3 x i16> @h(<3 x i32> %a) nounwind { %c = trunc <3 x i32> %a to <3 x i16> @@ -46,3 +45,12 @@ define <1 x i16> @i(<1 x i32> %a) nounwind { %c = trunc <1 x i32> %a to <1 x i16> ret <1 x i16> %c } + +; PR6438 +define void @__OpenCL_math_kernel4_kernel() nounwind { + %tmp12.i = and <4 x i32> zeroinitializer, <i32 2139095040, i32 2139095040, i32 2139095040, i32 2139095040> ; <<4 x i32>> [#uses=1] + %cmp13.i = icmp eq <4 x i32> %tmp12.i, <i32 2139095040, i32 2139095040, i32 2139095040, i32 2139095040> ; <<4 x i1>> [#uses=2] + %cmp.ext14.i = sext <4 x i1> %cmp13.i to <4 x i32> ; <<4 x i32>> [#uses=0] + %tmp2110.i = and <4 x i1> %cmp13.i, zeroinitializer ; <<4 x i1>> [#uses=0] + ret void +} |