1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=THUMB 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @t1(i32* nocapture %ptr) nounwind readonly { 4*9880d681SAndroid Build Coastguard Workerentry: 5*9880d681SAndroid Build Coastguard Worker; THUMB: t1 6*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -1 7*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %add.ptr, align 4 8*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r{{[0-9]}}, [r0, #-4] 9*9880d681SAndroid Build Coastguard Worker ret i32 %0 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine i32 @t2(i32* nocapture %ptr) nounwind readonly { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker; THUMB: t2 15*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -63 16*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %add.ptr, align 4 17*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r{{[0-9]}}, [r0, #-252] 18*9880d681SAndroid Build Coastguard Worker ret i32 %0 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine i32 @t3(i32* nocapture %ptr) nounwind readonly { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker; THUMB: t3 24*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -64 25*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %add.ptr, align 4 26*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r{{[0-9]}}, [r0] 27*9880d681SAndroid Build Coastguard Worker ret i32 %0 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @t4(i16* nocapture %ptr) nounwind readonly { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker; THUMB: t4 33*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -1 34*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %add.ptr, align 2 35*9880d681SAndroid Build Coastguard Worker; THUMB: ldrh r{{[0-9]}}, [r0, #-2] 36*9880d681SAndroid Build Coastguard Worker ret i16 %0 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @t5(i16* nocapture %ptr) nounwind readonly { 40*9880d681SAndroid Build Coastguard Workerentry: 41*9880d681SAndroid Build Coastguard Worker; THUMB: t5 42*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -127 43*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %add.ptr, align 2 44*9880d681SAndroid Build Coastguard Worker; THUMB: ldrh r{{[0-9]}}, [r0, #-254] 45*9880d681SAndroid Build Coastguard Worker ret i16 %0 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @t6(i16* nocapture %ptr) nounwind readonly { 49*9880d681SAndroid Build Coastguard Workerentry: 50*9880d681SAndroid Build Coastguard Worker; THUMB: t6 51*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -128 52*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %add.ptr, align 2 53*9880d681SAndroid Build Coastguard Worker; THUMB: ldrh r{{[0-9]}}, [r0] 54*9880d681SAndroid Build Coastguard Worker ret i16 %0 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @t7(i8* nocapture %ptr) nounwind readonly { 58*9880d681SAndroid Build Coastguard Workerentry: 59*9880d681SAndroid Build Coastguard Worker; THUMB: t7 60*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -1 61*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %add.ptr, align 1 62*9880d681SAndroid Build Coastguard Worker; THUMB: ldrb r{{[0-9]}}, [r0, #-1] 63*9880d681SAndroid Build Coastguard Worker ret i8 %0 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @t8(i8* nocapture %ptr) nounwind readonly { 67*9880d681SAndroid Build Coastguard Workerentry: 68*9880d681SAndroid Build Coastguard Worker; THUMB: t8 69*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -255 70*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %add.ptr, align 1 71*9880d681SAndroid Build Coastguard Worker; THUMB: ldrb r{{[0-9]}}, [r0, #-255] 72*9880d681SAndroid Build Coastguard Worker ret i8 %0 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @t9(i8* nocapture %ptr) nounwind readonly { 76*9880d681SAndroid Build Coastguard Workerentry: 77*9880d681SAndroid Build Coastguard Worker; THUMB: t9 78*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -256 79*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %add.ptr, align 1 80*9880d681SAndroid Build Coastguard Worker; THUMB: ldrb r{{[0-9]}}, [r0] 81*9880d681SAndroid Build Coastguard Worker ret i8 %0 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine void @t10(i32* nocapture %ptr) nounwind { 85*9880d681SAndroid Build Coastguard Workerentry: 86*9880d681SAndroid Build Coastguard Worker; THUMB: t10 87*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -1 88*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %add.ptr, align 4 89*9880d681SAndroid Build Coastguard Worker; THUMB: str r{{[0-9]}}, [r0, #-4] 90*9880d681SAndroid Build Coastguard Worker ret void 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerdefine void @t11(i32* nocapture %ptr) nounwind { 94*9880d681SAndroid Build Coastguard Workerentry: 95*9880d681SAndroid Build Coastguard Worker; THUMB: t11 96*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -63 97*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %add.ptr, align 4 98*9880d681SAndroid Build Coastguard Worker; THUMB: str r{{[0-9]}}, [r0, #-252] 99*9880d681SAndroid Build Coastguard Worker ret void 100*9880d681SAndroid Build Coastguard Worker} 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine void @t12(i32* nocapture %ptr) nounwind { 103*9880d681SAndroid Build Coastguard Workerentry: 104*9880d681SAndroid Build Coastguard Worker; THUMB: t12 105*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i32, i32* %ptr, i32 -64 106*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %add.ptr, align 4 107*9880d681SAndroid Build Coastguard Worker; THUMB: str r{{[0-9]}}, [r0] 108*9880d681SAndroid Build Coastguard Worker ret void 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine void @t13(i16* nocapture %ptr) nounwind { 112*9880d681SAndroid Build Coastguard Workerentry: 113*9880d681SAndroid Build Coastguard Worker; THUMB: t13 114*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -1 115*9880d681SAndroid Build Coastguard Worker store i16 0, i16* %add.ptr, align 2 116*9880d681SAndroid Build Coastguard Worker; THUMB: strh r{{[0-9]}}, [r0, #-2] 117*9880d681SAndroid Build Coastguard Worker ret void 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerdefine void @t14(i16* nocapture %ptr) nounwind { 121*9880d681SAndroid Build Coastguard Workerentry: 122*9880d681SAndroid Build Coastguard Worker; THUMB: t14 123*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -127 124*9880d681SAndroid Build Coastguard Worker store i16 0, i16* %add.ptr, align 2 125*9880d681SAndroid Build Coastguard Worker; THUMB: strh r{{[0-9]}}, [r0, #-254] 126*9880d681SAndroid Build Coastguard Worker ret void 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdefine void @t15(i16* nocapture %ptr) nounwind { 130*9880d681SAndroid Build Coastguard Workerentry: 131*9880d681SAndroid Build Coastguard Worker; THUMB: t15 132*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i16, i16* %ptr, i32 -128 133*9880d681SAndroid Build Coastguard Worker store i16 0, i16* %add.ptr, align 2 134*9880d681SAndroid Build Coastguard Worker; THUMB: strh r{{[0-9]}}, [r0] 135*9880d681SAndroid Build Coastguard Worker ret void 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine void @t16(i8* nocapture %ptr) nounwind { 139*9880d681SAndroid Build Coastguard Workerentry: 140*9880d681SAndroid Build Coastguard Worker; THUMB: t16 141*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -1 142*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %add.ptr, align 1 143*9880d681SAndroid Build Coastguard Worker; THUMB: strb r{{[0-9]}}, [r0, #-1] 144*9880d681SAndroid Build Coastguard Worker ret void 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Workerdefine void @t17(i8* nocapture %ptr) nounwind { 148*9880d681SAndroid Build Coastguard Workerentry: 149*9880d681SAndroid Build Coastguard Worker; THUMB: t17 150*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -255 151*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %add.ptr, align 1 152*9880d681SAndroid Build Coastguard Worker; THUMB: strb r{{[0-9]}}, [r0, #-255] 153*9880d681SAndroid Build Coastguard Worker ret void 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine void @t18(i8* nocapture %ptr) nounwind { 157*9880d681SAndroid Build Coastguard Workerentry: 158*9880d681SAndroid Build Coastguard Worker; THUMB: t18 159*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %ptr, i32 -256 160*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %add.ptr, align 1 161*9880d681SAndroid Build Coastguard Worker; THUMB: strb r{{[0-9]}}, [r0] 162*9880d681SAndroid Build Coastguard Worker ret void 163*9880d681SAndroid Build Coastguard Worker} 164