77 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3define i32 @f1(i32 %a, ptr %v) {4; CHECK-LABEL: f1:5; CHECK: str r0, [r1]6 store i32 %a, ptr %v7 ret i32 %a8}9 10define i32 @f2(i32 %a, ptr %v) {11; CHECK-LABEL: f2:12; CHECK: str.w r0, [r1, #4092]13 %tmp2 = getelementptr i32, ptr %v, i32 102314 store i32 %a, ptr %tmp215 ret i32 %a16}17 18define i32 @f2a(i32 %a, ptr %v) {19; CHECK-LABEL: f2a:20; CHECK: str r0, [r1, #-128]21 %tmp2 = getelementptr i32, ptr %v, i32 -3222 store i32 %a, ptr %tmp223 ret i32 %a24}25 26define i32 @f3(i32 %a, ptr %v) {27; CHECK-LABEL: f3:28; CHECK: mov.w r2, #409629; CHECK: str r0, [r1, r2]30 %tmp2 = getelementptr i32, ptr %v, i32 102431 store i32 %a, ptr %tmp232 ret i32 %a33}34 35define i32 @f4(i32 %a, i32 %base) {36entry:37; CHECK-LABEL: f4:38; CHECK: str r0, [r1, #-128]39 %tmp1 = sub i32 %base, 12840 %tmp2 = inttoptr i32 %tmp1 to ptr41 store i32 %a, ptr %tmp242 ret i32 %a43}44 45define i32 @f5(i32 %a, i32 %base, i32 %offset) {46entry:47; CHECK-LABEL: f5:48; CHECK: str r0, [r1, r2]49 %tmp1 = add i32 %base, %offset50 %tmp2 = inttoptr i32 %tmp1 to ptr51 store i32 %a, ptr %tmp252 ret i32 %a53}54 55define i32 @f6(i32 %a, i32 %base, i32 %offset) {56entry:57; CHECK-LABEL: f6:58; CHECK: str.w r0, [r1, r2, lsl #2]59 %tmp1 = shl i32 %offset, 260 %tmp2 = add i32 %base, %tmp161 %tmp3 = inttoptr i32 %tmp2 to ptr62 store i32 %a, ptr %tmp363 ret i32 %a64}65 66define i32 @f7(i32 %a, i32 %base, i32 %offset) {67entry:68; CHECK-LABEL: f7:69; CHECK: lsrs r2, r2, #270; CHECK: str r0, [r1, r2]71 %tmp1 = lshr i32 %offset, 272 %tmp2 = add i32 %base, %tmp173 %tmp3 = inttoptr i32 %tmp2 to ptr74 store i32 %a, ptr %tmp375 ret i32 %a76}77