1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumb-eabi %s -o - | FileCheck %s -check-prefix=V5 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumb-eabi -mattr=+v6 %s -o - | FileCheck %s -check-prefix=V6 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; rdar://7176514 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i8* %t1) nounwind { 7*9880d681SAndroid Build Coastguard Worker; V5: ldrb 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; V6: ldrb 10*9880d681SAndroid Build Coastguard Worker %tmp.u = load i8, i8* %t1 11*9880d681SAndroid Build Coastguard Worker %tmp1.s = zext i8 %tmp.u to i32 12*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1.s 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i16* %t1) nounwind { 16*9880d681SAndroid Build Coastguard Worker; V5: ldrh 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; V6: ldrh 19*9880d681SAndroid Build Coastguard Worker %tmp.u = load i16, i16* %t1 20*9880d681SAndroid Build Coastguard Worker %tmp1.s = zext i16 %tmp.u to i32 21*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1.s 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine i32 @test3(i8* %t0) nounwind { 25*9880d681SAndroid Build Coastguard Worker; V5: ldrb 26*9880d681SAndroid Build Coastguard Worker; V5: lsls 27*9880d681SAndroid Build Coastguard Worker; V5: asrs 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; V6: ldrb 30*9880d681SAndroid Build Coastguard Worker; V6: sxtb 31*9880d681SAndroid Build Coastguard Worker %tmp.s = load i8, i8* %t0 32*9880d681SAndroid Build Coastguard Worker %tmp1.s = sext i8 %tmp.s to i32 33*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1.s 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine i32 @test4(i16* %t0) nounwind { 37*9880d681SAndroid Build Coastguard Worker; V5: ldrh 38*9880d681SAndroid Build Coastguard Worker; V5: lsls 39*9880d681SAndroid Build Coastguard Worker; V5: asrs 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; V6: ldrh 42*9880d681SAndroid Build Coastguard Worker; V6: sxth 43*9880d681SAndroid Build Coastguard Worker %tmp.s = load i16, i16* %t0 44*9880d681SAndroid Build Coastguard Worker %tmp1.s = sext i16 %tmp.s to i32 45*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1.s 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine i32 @test5() nounwind { 49*9880d681SAndroid Build Coastguard Worker; V5: movs r0, #0 50*9880d681SAndroid Build Coastguard Worker; V5: ldrsh 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; V6: movs r0, #0 53*9880d681SAndroid Build Coastguard Worker; V6: ldrsh 54*9880d681SAndroid Build Coastguard Worker %tmp.s = load i16, i16* null 55*9880d681SAndroid Build Coastguard Worker %tmp1.s = sext i16 %tmp.s to i32 56*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1.s 57*9880d681SAndroid Build Coastguard Worker} 58