1*9880d681SAndroid Build Coastguard Worker; RUN: llc -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@x = global float 1.000000e+00, align 4 4*9880d681SAndroid Build Coastguard Worker@y = global float 2.000000e+00, align 4 5*9880d681SAndroid Build Coastguard Worker@zz = common global float 0.000000e+00, align 4 6*9880d681SAndroid Build Coastguard Worker@z = common global float 0.000000e+00, align 4 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine float @fv() #0 { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker ret float 1.000000e+00 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 14*9880d681SAndroid Build Coastguard Worker; 32: .ent fv 15*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 16*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 17*9880d681SAndroid Build Coastguard Worker; 32: .set noat 18*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 19*9880d681SAndroid Build Coastguard Worker; 32: .set at 20*9880d681SAndroid Build Coastguard Worker; 32: .set macro 21*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 22*9880d681SAndroid Build Coastguard Worker; 32: .end fv 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine double @dv() #0 { 25*9880d681SAndroid Build Coastguard Workerentry: 26*9880d681SAndroid Build Coastguard Worker ret double 2.000000e+00 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 30*9880d681SAndroid Build Coastguard Worker; 32: .ent dv 31*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 32*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 33*9880d681SAndroid Build Coastguard Worker; 32: .set noat 34*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 35*9880d681SAndroid Build Coastguard Worker; 32: .set at 36*9880d681SAndroid Build Coastguard Worker; 32: .set macro 37*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 38*9880d681SAndroid Build Coastguard Worker; 32: .end dv 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine void @vf(float %x) #0 { 41*9880d681SAndroid Build Coastguard Workerentry: 42*9880d681SAndroid Build Coastguard Worker %x.addr = alloca float, align 4 43*9880d681SAndroid Build Coastguard Worker store float %x, float* %x.addr, align 4 44*9880d681SAndroid Build Coastguard Worker ret void 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 48*9880d681SAndroid Build Coastguard Worker; 32: .ent vf 49*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 50*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 51*9880d681SAndroid Build Coastguard Worker; 32: .set noat 52*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 53*9880d681SAndroid Build Coastguard Worker; 32: .set at 54*9880d681SAndroid Build Coastguard Worker; 32: .set macro 55*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 56*9880d681SAndroid Build Coastguard Worker; 32: .end vf 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine void @vd(double %x) #0 { 59*9880d681SAndroid Build Coastguard Workerentry: 60*9880d681SAndroid Build Coastguard Worker %x.addr = alloca double, align 8 61*9880d681SAndroid Build Coastguard Worker store double %x, double* %x.addr, align 8 62*9880d681SAndroid Build Coastguard Worker ret void 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 66*9880d681SAndroid Build Coastguard Worker; 32: .ent vd 67*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 68*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 69*9880d681SAndroid Build Coastguard Worker; 32: .set noat 70*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 71*9880d681SAndroid Build Coastguard Worker; 32: .set at 72*9880d681SAndroid Build Coastguard Worker; 32: .set macro 73*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 74*9880d681SAndroid Build Coastguard Worker; 32: .end vd 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine void @foo1() #0 { 77*9880d681SAndroid Build Coastguard Workerentry: 78*9880d681SAndroid Build Coastguard Worker store float 1.000000e+00, float* @zz, align 4 79*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @y, align 4 80*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @x, align 4 81*9880d681SAndroid Build Coastguard Worker %add = fadd float %0, %1 82*9880d681SAndroid Build Coastguard Worker store float %add, float* @z, align 4 83*9880d681SAndroid Build Coastguard Worker ret void 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 87*9880d681SAndroid Build Coastguard Worker; 32: .ent foo1 88*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 89*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 90*9880d681SAndroid Build Coastguard Worker; 32: .set noat 91*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 92*9880d681SAndroid Build Coastguard Worker; 32: .set at 93*9880d681SAndroid Build Coastguard Worker; 32: .set macro 94*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 95*9880d681SAndroid Build Coastguard Worker; 32: .end foo1 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerdefine void @foo2() #0 { 98*9880d681SAndroid Build Coastguard Workerentry: 99*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @x, align 4 100*9880d681SAndroid Build Coastguard Worker call void @vf(float %0) 101*9880d681SAndroid Build Coastguard Worker ret void 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 106*9880d681SAndroid Build Coastguard Worker; 32: .ent foo2 107*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 108*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 109*9880d681SAndroid Build Coastguard Worker; 32: .set noat 110*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 111*9880d681SAndroid Build Coastguard Worker; 32: .set at 112*9880d681SAndroid Build Coastguard Worker; 32: .set macro 113*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 114*9880d681SAndroid Build Coastguard Worker; 32: .end foo2 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerdefine void @foo3() #0 { 117*9880d681SAndroid Build Coastguard Workerentry: 118*9880d681SAndroid Build Coastguard Worker %call = call float @fv() 119*9880d681SAndroid Build Coastguard Worker store float %call, float* @x, align 4 120*9880d681SAndroid Build Coastguard Worker ret void 121*9880d681SAndroid Build Coastguard Worker} 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker; 32: .set nomips16 124*9880d681SAndroid Build Coastguard Worker; 32: .ent foo3 125*9880d681SAndroid Build Coastguard Worker; 32: .set noreorder 126*9880d681SAndroid Build Coastguard Worker; 32: .set nomacro 127*9880d681SAndroid Build Coastguard Worker; 32: .set noat 128*9880d681SAndroid Build Coastguard Worker; 32: jr $ra 129*9880d681SAndroid Build Coastguard Worker; 32: .set at 130*9880d681SAndroid Build Coastguard Worker; 32: .set macro 131*9880d681SAndroid Build Coastguard Worker; 32: .set reorder 132*9880d681SAndroid Build Coastguard Worker; 32: .end foo3 133*9880d681SAndroid Build Coastguard Worker 134*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" } 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerdefine void @vv() #0 { 137*9880d681SAndroid Build Coastguard Workerentry: 138*9880d681SAndroid Build Coastguard Worker ret void 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Worker; 32: .set mips16 142*9880d681SAndroid Build Coastguard Worker; 32: .ent vv 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Worker; 32: save {{.+}} 145*9880d681SAndroid Build Coastguard Worker; 32: restore {{.+}} 146*9880d681SAndroid Build Coastguard Worker; 32: .end vv 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker 150