comparison test/CodeGen/X86/x86-shifts.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
1 ; RUN: llc < %s -march=x86-64 -mattr=sse2 | FileCheck %s 1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+sse2 | FileCheck %s
2 2
3 ; Splat patterns below 3 ; Splat patterns below
4 4
5 5
6 define <4 x i32> @shl4(<4 x i32> %A) nounwind { 6 define <4 x i32> @shl4(<4 x i32> %A) nounwind {
116 } 116 }
117 117
118 118
119 define <2 x i64> @shr2_nosplat(<2 x i64> %A) nounwind { 119 define <2 x i64> @shr2_nosplat(<2 x i64> %A) nounwind {
120 entry: 120 entry:
121 ; CHECK: shr2_nosplat 121 ; CHECK-LABEL: shr2_nosplat
122 ; CHECK-NOT: psrlq 122 ; CHECK: movdqa %xmm0, %xmm1
123 ; CHECK-NOT: psrlq 123 ; CHECK-NEXT: psrlq $1, %xmm1
124 ; CHECK: ret 124 ; CHECK-NEXT: movdqa %xmm0, %xmm2
125 ; CHECK-NEXT: psrlq $8, %xmm2
126 ; CHECK-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
127 ; CHECK-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1]
128 ; CHECK-NEXT: xorpd %xmm0, %xmm1
129 ; CHECK-NEXT: movapd %xmm1, %xmm0
130 ; CHECK-NEXT: ret
125 %B = lshr <2 x i64> %A, < i64 8, i64 1> 131 %B = lshr <2 x i64> %A, < i64 8, i64 1>
126 %C = lshr <2 x i64> %A, < i64 1, i64 0> 132 %C = lshr <2 x i64> %A, < i64 1, i64 0>
127 %K = xor <2 x i64> %B, %C 133 %K = xor <2 x i64> %B, %C
128 ret <2 x i64> %K 134 ret <2 x i64> %K
129 } 135 }