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