73 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3define i8 @f1(ptr %v) {4entry:5; CHECK-LABEL: f1:6; CHECK: ldrb r0, [r0]7 %tmp = load i8, ptr %v8 ret i8 %tmp9}10 11define i8 @f2(ptr %v) {12entry:13; CHECK-LABEL: f2:14; CHECK: ldrb r0, [r0, #-1]15 %tmp2 = getelementptr i8, ptr %v, i8 102316 %tmp = load i8, ptr %tmp217 ret i8 %tmp18}19 20define i8 @f3(i32 %base) {21entry:22; CHECK-LABEL: f3:23; CHECK: mov.w r1, #409624; CHECK: ldrb r0, [r0, r1]25 %tmp1 = add i32 %base, 409626 %tmp2 = inttoptr i32 %tmp1 to ptr27 %tmp3 = load i8, ptr %tmp228 ret i8 %tmp329}30 31define i8 @f4(i32 %base) {32entry:33; CHECK-LABEL: f4:34; CHECK: ldrb r0, [r0, #-128]35 %tmp1 = sub i32 %base, 12836 %tmp2 = inttoptr i32 %tmp1 to ptr37 %tmp3 = load i8, ptr %tmp238 ret i8 %tmp339}40 41define i8 @f5(i32 %base, i32 %offset) {42entry:43; CHECK-LABEL: f5:44; CHECK: ldrb r0, [r0, r1]45 %tmp1 = add i32 %base, %offset46 %tmp2 = inttoptr i32 %tmp1 to ptr47 %tmp3 = load i8, ptr %tmp248 ret i8 %tmp349}50 51define i8 @f6(i32 %base, i32 %offset) {52entry:53; CHECK-LABEL: f6:54; CHECK: ldrb.w r0, [r0, r1, lsl #2]55 %tmp1 = shl i32 %offset, 256 %tmp2 = add i32 %base, %tmp157 %tmp3 = inttoptr i32 %tmp2 to ptr58 %tmp4 = load i8, ptr %tmp359 ret i8 %tmp460}61 62define i8 @f7(i32 %base, i32 %offset) {63entry:64; CHECK-LABEL: f7:65; CHECK: lsrs r1, r1, #266; CHECK: ldrb r0, [r0, r1]67 %tmp1 = lshr i32 %offset, 268 %tmp2 = add i32 %base, %tmp169 %tmp3 = inttoptr i32 %tmp2 to ptr70 %tmp4 = load i8, ptr %tmp371 ret i8 %tmp472}73