1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -relocation-model=static -O3 < %s -mips-os16 | FileCheck %s -check-prefix=32 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -relocation-model=static -O3 -mips16-constant-islands < %s -mips-os16 | FileCheck %s -check-prefix=cisle 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker@i = global i32 1, align 4 6*9880d681SAndroid Build Coastguard Worker@f = global float 1.000000e+00, align 4 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @vv() #0 { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker ret void 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; 32: .set mips16 14*9880d681SAndroid Build Coastguard Worker; 32: .ent vv 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; 32: save {{.+}} 17*9880d681SAndroid Build Coastguard Worker; 32: restore {{.+}} 18*9880d681SAndroid Build Coastguard Worker; 32: .end vv 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine i32 @iv() #0 { 21*9880d681SAndroid Build Coastguard Workerentry: 22*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* @i, align 4 23*9880d681SAndroid Build Coastguard Worker ret i32 %0 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; 32: .set mips16 27*9880d681SAndroid Build Coastguard Worker; 32: .ent iv 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; 32: save {{.+}} 30*9880d681SAndroid Build Coastguard Worker; 32: restore {{.+}} 31*9880d681SAndroid Build Coastguard Worker; 32: .end iv 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine void @vif(i32 %i, float %f) #0 { 34*9880d681SAndroid Build Coastguard Workerentry: 35*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 36*9880d681SAndroid Build Coastguard Worker %f.addr = alloca float, align 4 37*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 38*9880d681SAndroid Build Coastguard Worker store float %f, float* %f.addr, align 4 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; 32: .set mips16 43*9880d681SAndroid Build Coastguard Worker; 32: .ent vif 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; 32: save {{.+}} 46*9880d681SAndroid Build Coastguard Worker; 32: restore {{.+}} 47*9880d681SAndroid Build Coastguard Worker; 32: .end vif 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine void @foo() #0 { 50*9880d681SAndroid Build Coastguard Workerentry: 51*9880d681SAndroid Build Coastguard Worker store float 2.000000e+00, float* @f, align 4 52*9880d681SAndroid Build Coastguard Worker ret void 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker; 32: .set mips16 56*9880d681SAndroid Build Coastguard Worker; 32: .ent foo 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; 32: save {{.+}} 59*9880d681SAndroid Build Coastguard Worker; 32: restore {{.+}} 60*9880d681SAndroid Build Coastguard Worker; 32: .end foo 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; cisle: .end foo 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerdefine float @fv() #0 { 68*9880d681SAndroid Build Coastguard Workerentry: 69*9880d681SAndroid Build Coastguard Worker ret float 1.000000e+00 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 73*9880d681SAndroid Build Coastguard Worker; 32: .ent fv 74*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 75*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 76*9880d681SAndroid Build Coastguard Worker; 32: .set noat 77*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 78*9880d681SAndroid Build Coastguard Worker; 32: .set at 79*9880d681SAndroid Build Coastguard Worker; 32: .set macro 80*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 81*9880d681SAndroid Build Coastguard Worker; 32: .end fv 82