summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Thumb
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/Thumb')
-rw-r--r--llvm/test/CodeGen/Thumb/shift-and.ll70
1 files changed, 70 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Thumb/shift-and.ll b/llvm/test/CodeGen/Thumb/shift-and.ll
index 3981d2c9702..b8e3416adbb 100644
--- a/llvm/test/CodeGen/Thumb/shift-and.ll
+++ b/llvm/test/CodeGen/Thumb/shift-and.ll
@@ -188,3 +188,73 @@ entry:
%shl = shl i32 %shr, 3
ret i32 %shl
}
+
+define i32 @test16(i32 %x) {
+; CHECK-LABEL: test16:
+; CHECK: @ %bb.0: @ %entry
+; CHECK-NEXT: lsls r0, r0, #28
+; CHECK-NEXT: lsrs r0, r0, #26
+; CHECK-NEXT: bx lr
+entry:
+ %0 = and i32 %x, 15
+ %shl = shl i32 %0, 2
+ ret i32 %shl
+}
+
+define i32* @test17(i32* %p, i32 %x) {
+; CHECK-LABEL: test17:
+; CHECK: @ %bb.0: @ %entry
+; CHECK-NEXT: lsls r1, r1, #28
+; CHECK-NEXT: lsrs r1, r1, #26
+; CHECK-NEXT: adds r0, r0, r1
+; CHECK-NEXT: bx lr
+entry:
+ %0 = and i32 %x, 15
+ %shl = getelementptr i32, i32* %p, i32 %0
+ ret i32* %shl
+}
+
+define i32* @test18(i32* %p, i32 %x) {
+; CHECK-LABEL: test18:
+; CHECK: @ %bb.0: @ %entry
+; CHECK-NEXT: adds r1, r1, #1
+; CHECK-NEXT: lsls r1, r1, #28
+; CHECK-NEXT: lsrs r1, r1, #26
+; CHECK-NEXT: adds r0, r0, r1
+; CHECK-NEXT: bx lr
+entry:
+ %xx = add i32 %x, 1
+ %0 = and i32 %xx, 15
+ %shl = getelementptr i32, i32* %p, i32 %0
+ ret i32* %shl
+}
+
+define i32* @test19(i32* %p, i32 %x) {
+; CHECK-LABEL: test19:
+; CHECK: @ %bb.0: @ %entry
+; CHECK-NEXT: subs r1, r1, #1
+; CHECK-NEXT: lsls r1, r1, #28
+; CHECK-NEXT: lsrs r1, r1, #26
+; CHECK-NEXT: adds r0, r0, r1
+; CHECK-NEXT: bx lr
+entry:
+ %xx = sub i32 %x, 1
+ %0 = and i32 %xx, 15
+ %shl = getelementptr i32, i32* %p, i32 %0
+ ret i32* %shl
+}
+
+define i32* @test20(i32* %p, i32 %x) {
+; CHECK-LABEL: test20:
+; CHECK: @ %bb.0: @ %entry
+; CHECK-NEXT: subs r1, r1, #1
+; CHECK-NEXT: lsls r1, r1, #28
+; CHECK-NEXT: lsrs r1, r1, #26
+; CHECK-NEXT: adds r0, r0, r1
+; CHECK-NEXT: bx lr
+entry:
+ %xx = add i32 %x, 15
+ %0 = and i32 %xx, 15
+ %shl = getelementptr i32, i32* %p, i32 %0
+ ret i32* %shl
+}
OpenPOWER on IntegriCloud