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 }