Benjamin Kramer | d52d9cd | 2012-02-05 11:19:39 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=x86 -mattr=+sse2 < %s | FileCheck %s |
Mon P Wang | 845b189 | 2012-02-01 22:15:20 +0000 | [diff] [blame] | 2 | |
| 3 | ; Make sure that we don't generate an illegal i64 extract after LegalizeType. |
| 4 | ; CHECK: shll |
| 5 | |
| 6 | |
| 7 | define void @test_cl(<4 x i64>* %dst, <4 x i64>* %src, i32 %idx) { |
| 8 | entry: |
| 9 | %arrayidx = getelementptr inbounds <4 x i64> * %src, i32 %idx |
| 10 | %0 = load <4 x i64> * %arrayidx, align 32 |
| 11 | %arrayidx1 = getelementptr inbounds <4 x i64> * %dst, i32 %idx |
| 12 | %1 = load <4 x i64> * %arrayidx1, align 32 |
| 13 | %2 = extractelement <4 x i64> %1, i32 0 |
| 14 | %and = and i64 %2, 63 |
| 15 | %3 = insertelement <4 x i64> undef, i64 %and, i32 0 |
| 16 | %splat = shufflevector <4 x i64> %3, <4 x i64> undef, <4 x i32> zeroinitializer |
| 17 | %shl = shl <4 x i64> %0, %splat |
| 18 | store <4 x i64> %shl, <4 x i64> * %arrayidx1, align 32 |
| 19 | ret void |
| 20 | } |