This should always be signed chars, so use int8_t. This fixes a miscompile when
[llvm/stm8.git] / test / CodeGen / X86 / vec_shift3.ll
blob1ebf455c05550195b77d2cdcda206ccd88e0ac94
1 ; RUN: llc < %s -march=x86 -mattr=+sse2 | grep psllq
2 ; RUN: llc < %s -march=x86 -mattr=+sse2 | grep psraw
3 ; RUN: llc < %s -march=x86 -mattr=+sse2 | grep movd | count 2
5 define <2 x i64> @t1(<2 x i64> %x1, i32 %bits) nounwind  {
6 entry:
7         %tmp3 = tail call <2 x i64> @llvm.x86.sse2.pslli.q( <2 x i64> %x1, i32 %bits ) nounwind readnone                ; <<2 x i64>> [#uses=1]
8         ret <2 x i64> %tmp3
11 define <2 x i64> @t2(<2 x i64> %x1) nounwind  {
12 entry:
13         %tmp3 = tail call <2 x i64> @llvm.x86.sse2.pslli.q( <2 x i64> %x1, i32 10 ) nounwind readnone           ; <<2 x i64>> [#uses=1]
14         ret <2 x i64> %tmp3
17 define <2 x i64> @t3(<2 x i64> %x1, i32 %bits) nounwind  {
18 entry:
19         %tmp2 = bitcast <2 x i64> %x1 to <8 x i16>              ; <<8 x i16>> [#uses=1]
20         %tmp4 = tail call <8 x i16> @llvm.x86.sse2.psrai.w( <8 x i16> %tmp2, i32 %bits ) nounwind readnone              ; <<8 x i16>> [#uses=1]
21         %tmp5 = bitcast <8 x i16> %tmp4 to <2 x i64>            ; <<2 x i64>> [#uses=1]
22         ret <2 x i64> %tmp5
25 declare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone 
26 declare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone