| ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -relocation-model=static -O3 < %s -mips-os16 | FileCheck %s -check-prefix=32 | |
| ; 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 | |
| @i = global i32 1, align 4 | |
| @f = global float 1.000000e+00, align 4 | |
| define void @vv() #0 { | |
| entry: | |
| ret void | |
| } | |
| ; 32: .set mips16 | |
| ; 32: .ent vv | |
| ; 32: save {{.+}} | |
| ; 32: restore {{.+}} | |
| ; 32: .end vv | |
| define i32 @iv() #0 { | |
| entry: | |
| %0 = load i32, i32* @i, align 4 | |
| ret i32 %0 | |
| } | |
| ; 32: .set mips16 | |
| ; 32: .ent iv | |
| ; 32: save {{.+}} | |
| ; 32: restore {{.+}} | |
| ; 32: .end iv | |
| define void @vif(i32 %i, float %f) #0 { | |
| entry: | |
| %i.addr = alloca i32, align 4 | |
| %f.addr = alloca float, align 4 | |
| store i32 %i, i32* %i.addr, align 4 | |
| store float %f, float* %f.addr, align 4 | |
| ret void | |
| } | |
| ; 32: .set mips16 | |
| ; 32: .ent vif | |
| ; 32: save {{.+}} | |
| ; 32: restore {{.+}} | |
| ; 32: .end vif | |
| define void @foo() #0 { | |
| entry: | |
| store float 2.000000e+00, float* @f, align 4 | |
| ret void | |
| } | |
| ; 32: .set mips16 | |
| ; 32: .ent foo | |
| ; 32: save {{.+}} | |
| ; 32: restore {{.+}} | |
| ; 32: .end foo | |
| ; cisle: .end foo | |
| attributes #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" } | |
| define float @fv() #0 { | |
| entry: | |
| ret float 1.000000e+00 | |
| } | |
| ; 32: .set nomips16 | |
| ; 32: .ent fv | |
| ; 32: .set noreorder | |
| ; 32: .set nomacro | |
| ; 32: .set noat | |
| ; 32: jr $ra | |
| ; 32: .set at | |
| ; 32: .set macro | |
| ; 32: .set reorder | |
| ; 32: .end fv |