diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
commit | f8af5cf600354830d4ccf59732403f0f073eccb9 (patch) | |
tree | 2ba0398b4c42ad4f55561327538044fd2c925a8b /test/CodeGen/SystemZ/shift-09.ll | |
parent | 59d6cff90eecf31cb3dd860c4e786674cfdd42eb (diff) | |
download | src-f8af5cf600354830d4ccf59732403f0f073eccb9.tar.gz src-f8af5cf600354830d4ccf59732403f0f073eccb9.zip |
Vendor import of llvm release_34 branch r197841 (effectively, 3.4 RC3):vendor/llvm/llvm-release_34-r197841
Notes
Notes:
svn path=/vendor/llvm/dist/; revision=259698
svn path=/vendor/llvm/llvm-release_34-r197841/; revision=259700; tag=vendor/llvm/llvm-release_34-r197841
Diffstat (limited to 'test/CodeGen/SystemZ/shift-09.ll')
-rw-r--r-- | test/CodeGen/SystemZ/shift-09.ll | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/CodeGen/SystemZ/shift-09.ll b/test/CodeGen/SystemZ/shift-09.ll new file mode 100644 index 000000000000..c87cf0d9a1ee --- /dev/null +++ b/test/CodeGen/SystemZ/shift-09.ll @@ -0,0 +1,63 @@ +; Test three-operand shifts. +; +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s + +; Check that we use SLLK over SLL where useful. +define i32 @f1(i32 %a, i32 %b, i32 %amt) { +; CHECK-LABEL: f1: +; CHECK: sllk %r2, %r3, 15(%r4) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = shl i32 %b, %add + ret i32 %shift +} + +; Check that we use SLL over SLLK where possible. +define i32 @f2(i32 %a, i32 %amt) { +; CHECK-LABEL: f2: +; CHECK: sll %r2, 15(%r3) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = shl i32 %a, %add + ret i32 %shift +} + +; Check that we use SRLK over SRL where useful. +define i32 @f3(i32 %a, i32 %b, i32 %amt) { +; CHECK-LABEL: f3: +; CHECK: srlk %r2, %r3, 15(%r4) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = lshr i32 %b, %add + ret i32 %shift +} + +; Check that we use SRL over SRLK where possible. +define i32 @f4(i32 %a, i32 %amt) { +; CHECK-LABEL: f4: +; CHECK: srl %r2, 15(%r3) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = lshr i32 %a, %add + ret i32 %shift +} + +; Check that we use SRAK over SRA where useful. +define i32 @f5(i32 %a, i32 %b, i32 %amt) { +; CHECK-LABEL: f5: +; CHECK: srak %r2, %r3, 15(%r4) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = ashr i32 %b, %add + ret i32 %shift +} + +; Check that we use SRA over SRAK where possible. +define i32 @f6(i32 %a, i32 %amt) { +; CHECK-LABEL: f6: +; CHECK: sra %r2, 15(%r3) +; CHECK: br %r14 + %add = add i32 %amt, 15 + %shift = ashr i32 %a, %add + ret i32 %shift +} |