Mercurial > hg > CbC > CbC_llvm
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 } |