summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/x86-shifts.ll
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-10-30 17:31:21 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-10-30 17:31:21 +0000
commitdade3c144818e4888831ed13c1efaef28934ac78 (patch)
tree3041fe09b09382135008db3d6fa1083019c605d9 /test/CodeGen/X86/x86-shifts.ll
parent6762427e8e068c8517ff7ab6a54f699e2bb2dec7 (diff)
downloadllvm-dade3c144818e4888831ed13c1efaef28934ac78.tar.gz
llvm-dade3c144818e4888831ed13c1efaef28934ac78.tar.bz2
llvm-dade3c144818e4888831ed13c1efaef28934ac78.tar.xz
X86: Emit logical shift by constant splat of <16 x i8> as a <8 x i16> shift and zero out the bits where zeros should've been shifted in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143315 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/x86-shifts.ll')
-rw-r--r--test/CodeGen/X86/x86-shifts.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGen/X86/x86-shifts.ll b/test/CodeGen/X86/x86-shifts.ll
index 5a91b09047..3e44eafa24 100644
--- a/test/CodeGen/X86/x86-shifts.ll
+++ b/test/CodeGen/X86/x86-shifts.ll
@@ -152,3 +152,21 @@ entry:
%K = xor <2 x i32> %B, %C
ret <2 x i32> %K
}
+
+define <16 x i8> @shl9(<16 x i8> %A) nounwind {
+ %B = shl <16 x i8> %A, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
+ ret <16 x i8> %B
+; CHECK: shl9:
+; CHECK: psllw $3
+; CHECK: pand
+; CHECK: ret
+}
+
+define <16 x i8> @shr9(<16 x i8> %A) nounwind {
+ %B = lshr <16 x i8> %A, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
+ ret <16 x i8> %B
+; CHECK: shr9:
+; CHECK: psrlw $3
+; CHECK: pand
+; CHECK: ret
+}