1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O0 -fast-isel-abort=1 -verify-machineinstrs -mtriple=arm64-apple-darwin < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker;; Test returns. 4*9880d681SAndroid Build Coastguard Workerdefine void @t0() nounwind ssp { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker; CHECK: t0 7*9880d681SAndroid Build Coastguard Worker; CHECK: ret 8*9880d681SAndroid Build Coastguard Worker ret void 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine i32 @t1(i32 %a) nounwind ssp { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker; CHECK: t1 14*9880d681SAndroid Build Coastguard Worker; CHECK: str w0, [sp, #12] 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ldr w0, [sp, #12] 16*9880d681SAndroid Build Coastguard Worker; CHECK: ret 17*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i32, align 4 18*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* %a.addr, align 4 19*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %a.addr, align 4 20*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine i64 @t2(i64 %a) nounwind ssp { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker; CHECK: t2 26*9880d681SAndroid Build Coastguard Worker; CHECK: str x0, [sp, #8] 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ldr x0, [sp, #8] 28*9880d681SAndroid Build Coastguard Worker; CHECK: ret 29*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i64, align 8 30*9880d681SAndroid Build Coastguard Worker store i64 %a, i64* %a.addr, align 8 31*9880d681SAndroid Build Coastguard Worker %tmp = load i64, i64* %a.addr, align 8 32*9880d681SAndroid Build Coastguard Worker ret i64 %tmp 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine signext i16 @ret_i16(i16 signext %a) nounwind { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker; CHECK: @ret_i16 38*9880d681SAndroid Build Coastguard Worker; CHECK: sxth w0, w0 39*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 1 40*9880d681SAndroid Build Coastguard Worker store i16 %a, i16* %a.addr, align 1 41*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %a.addr, align 1 42*9880d681SAndroid Build Coastguard Worker ret i16 %0 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine signext i8 @ret_i8(i8 signext %a) nounwind { 46*9880d681SAndroid Build Coastguard Workerentry: 47*9880d681SAndroid Build Coastguard Worker; CHECK: @ret_i8 48*9880d681SAndroid Build Coastguard Worker; CHECK: sxtb w0, w0 49*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 1 50*9880d681SAndroid Build Coastguard Worker store i8 %a, i8* %a.addr, align 1 51*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %a.addr, align 1 52*9880d681SAndroid Build Coastguard Worker ret i8 %0 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerdefine signext i1 @ret_i1(i1 signext %a) nounwind { 56*9880d681SAndroid Build Coastguard Workerentry: 57*9880d681SAndroid Build Coastguard Worker; CHECK: @ret_i1 58*9880d681SAndroid Build Coastguard Worker; CHECK: and w0, w0, #0x1 59*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i1, align 1 60*9880d681SAndroid Build Coastguard Worker store i1 %a, i1* %a.addr, align 1 61*9880d681SAndroid Build Coastguard Worker %0 = load i1, i1* %a.addr, align 1 62*9880d681SAndroid Build Coastguard Worker ret i1 %0 63*9880d681SAndroid Build Coastguard Worker} 64