72 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3define i16 @f1(ptr %v) {4entry:5; CHECK-LABEL: f1:6; CHECK: ldrh r0, [r0]7 %tmp = load i16, ptr %v8 ret i16 %tmp9}10 11define i16 @f2(ptr %v) {12entry:13; CHECK-LABEL: f2:14; CHECK: ldrh.w r0, [r0, #2046]15 %tmp2 = getelementptr i16, ptr %v, i16 102316 %tmp = load i16, ptr %tmp217 ret i16 %tmp18}19 20define i16 @f3(ptr %v) {21entry:22; CHECK-LABEL: f3:23; CHECK: mov.w r1, #409624; CHECK: ldrh r0, [r0, r1]25 %tmp2 = getelementptr i16, ptr %v, i16 204826 %tmp = load i16, ptr %tmp227 ret i16 %tmp28}29 30define i16 @f4(i32 %base) {31entry:32; CHECK-LABEL: f4:33; CHECK: ldrh r0, [r0, #-128]34 %tmp1 = sub i32 %base, 12835 %tmp2 = inttoptr i32 %tmp1 to ptr36 %tmp3 = load i16, ptr %tmp237 ret i16 %tmp338}39 40define i16 @f5(i32 %base, i32 %offset) {41entry:42; CHECK-LABEL: f5:43; CHECK: ldrh r0, [r0, r1]44 %tmp1 = add i32 %base, %offset45 %tmp2 = inttoptr i32 %tmp1 to ptr46 %tmp3 = load i16, ptr %tmp247 ret i16 %tmp348}49 50define i16 @f6(i32 %base, i32 %offset) {51entry:52; CHECK-LABEL: f6:53; CHECK: ldrh.w r0, [r0, r1, lsl #2]54 %tmp1 = shl i32 %offset, 255 %tmp2 = add i32 %base, %tmp156 %tmp3 = inttoptr i32 %tmp2 to ptr57 %tmp4 = load i16, ptr %tmp358 ret i16 %tmp459}60 61define i16 @f7(i32 %base, i32 %offset) {62entry:63; CHECK-LABEL: f7:64; CHECK: lsrs r1, r1, #265; CHECK: ldrh r0, [r0, r1]66 %tmp1 = lshr i32 %offset, 267 %tmp2 = add i32 %base, %tmp168 %tmp3 = inttoptr i32 %tmp2 to ptr69 %tmp4 = load i16, ptr %tmp370 ret i16 %tmp471}72