Dan Gohman | 0a06310 | 2009-09-08 23:54:48 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march=x86 -mcpu=penryn -disable-mmx -o %t |
Mon P Wang | c9f1672 | 2009-03-17 06:33:10 +0000 | [diff] [blame] | 2 | ; RUN: grep unpcklpd %t | count 1 |
| 3 | ; RUN: grep movapd %t | count 1 |
Nate Begeman | 65e8003 | 2009-06-05 21:37:30 +0000 | [diff] [blame] | 4 | ; RUN: grep movaps %t | count 1 |
Mon P Wang | c9f1672 | 2009-03-17 06:33:10 +0000 | [diff] [blame] | 5 | |
| 6 | ; Shows a dag combine bug that will generate an illegal build vector |
| 7 | ; with v2i64 build_vector i32, i32. |
| 8 | |
Nate Begeman | 65e8003 | 2009-06-05 21:37:30 +0000 | [diff] [blame] | 9 | define void @test(<2 x double>* %dst, <4 x double> %src) nounwind { |
Mon P Wang | c9f1672 | 2009-03-17 06:33:10 +0000 | [diff] [blame] | 10 | entry: |
| 11 | %tmp7.i = shufflevector <4 x double> %src, <4 x double> undef, <2 x i32> < i32 0, i32 2 > |
| 12 | store <2 x double> %tmp7.i, <2 x double>* %dst |
| 13 | ret void |
Evan Cheng | 4b96149 | 2009-03-17 17:08:25 +0000 | [diff] [blame] | 14 | } |
Nate Begeman | 65e8003 | 2009-06-05 21:37:30 +0000 | [diff] [blame] | 15 | |
| 16 | define void @test2(<4 x i16>* %src, <4 x i32>* %dest) nounwind { |
| 17 | entry: |
| 18 | %tmp1 = load <4 x i16>* %src |
| 19 | %tmp3 = shufflevector <4 x i16> %tmp1, <4 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef> |
| 20 | %0 = tail call <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16> %tmp3) |
| 21 | store <4 x i32> %0, <4 x i32>* %dest |
| 22 | ret void |
| 23 | } |
| 24 | |
| 25 | declare <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16>) nounwind readnone |