Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/vshift-4.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 60c9769439b8 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
11 %shl = shl <2 x i64> %val, %shamt | 11 %shl = shl <2 x i64> %val, %shamt |
12 store <2 x i64> %shl, <2 x i64>* %dst | 12 store <2 x i64> %shl, <2 x i64>* %dst |
13 ret void | 13 ret void |
14 } | 14 } |
15 | 15 |
16 ; shift1b can't use a packed shift | 16 ; shift1b can't use a packed shift but can shift lanes separately and shuffle back together |
17 define void @shift1b(<2 x i64> %val, <2 x i64>* %dst, <2 x i64> %sh) nounwind { | 17 define void @shift1b(<2 x i64> %val, <2 x i64>* %dst, <2 x i64> %sh) nounwind { |
18 entry: | 18 entry: |
19 ; CHECK-LABEL: shift1b: | 19 ; CHECK-LABEL: shift1b: |
20 ; CHECK: shll | 20 ; CHECK: pshufd {{.*#+}} xmm2 = xmm1[2,3,0,1] |
21 ; CHECK-NEXT: movdqa %xmm0, %xmm3 | |
22 ; CHECK-NEXT: psllq %xmm2, %xmm3 | |
23 ; CHECK-NEXT: movq {{.*#+}} xmm1 = xmm1[0],zero | |
24 ; CHECK-NEXT: psllq %xmm1, %xmm0 | |
25 ; CHECK-NEXT: movsd {{.*#+}} xmm3 = xmm0[0],xmm3[1] | |
21 %shamt = shufflevector <2 x i64> %sh, <2 x i64> undef, <2 x i32> <i32 0, i32 1> | 26 %shamt = shufflevector <2 x i64> %sh, <2 x i64> undef, <2 x i32> <i32 0, i32 1> |
22 %shl = shl <2 x i64> %val, %shamt | 27 %shl = shl <2 x i64> %val, %shamt |
23 store <2 x i64> %shl, <2 x i64>* %dst | 28 store <2 x i64> %shl, <2 x i64>* %dst |
24 ret void | 29 ret void |
25 } | 30 } |