1 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mattr=mips16 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC 2 3 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mattr=mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC 4 5 6 @xi = common global i32 0, align 4 7 @x = common global float 0.000000e+00, align 4 8 @xd = common global double 0.000000e+00, align 8 9 10 ; Function Attrs: nounwind 11 define void @it() #0 { 12 entry: 13 %call = call i32 @i(i32 1) 14 store i32 %call, i32* @xi, align 4 15 ret void 16 ; PIC: .ent it 17 ; STATIC: .ent it 18 ; PIC: save $16, $17, $ra, [[FS:[0-9]+]] 19 ; STATIC: save $16, $ra, [[FS:[0-9]+]] 20 ; PIC: restore $16, $17, $ra, [[FS]] 21 ; STATIC: restore $16, $ra, [[FS]] 22 ; PIC: .end it 23 ; STATIC: .end it 24 } 25 26 declare i32 @i(i32) #1 27 28 ; Function Attrs: nounwind 29 define void @ft() #0 { 30 entry: 31 %call = call float @f() 32 store float %call, float* @x, align 4 33 ret void 34 ; PIC: .ent ft 35 ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] 36 ; PIC: restore $16, $17, $ra, $18, [[FS]] 37 ; PIC: .end ft 38 } 39 40 declare float @f() #1 41 42 ; Function Attrs: nounwind 43 define void @dt() #0 { 44 entry: 45 %call = call double @d() 46 store double %call, double* @xd, align 8 47 ret void 48 ; PIC: .ent dt 49 ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] 50 ; PIC: restore $16, $17, $ra, $18, [[FS]] 51 ; PIC: .end dt 52 } 53 54 declare double @d() #1 55 56 ; Function Attrs: nounwind 57 define void @fft() #0 { 58 entry: 59 %0 = load float, float* @x, align 4 60 %call = call float @ff(float %0) 61 store float %call, float* @x, align 4 62 ret void 63 ; PIC: .ent fft 64 ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] 65 ; PIC: restore $16, $17, $ra, $18, [[FS]] 66 ; PIC: .end fft 67 } 68 69 declare float @ff(float) #1 70 71 ; Function Attrs: nounwind 72 define void @vft() #0 { 73 entry: 74 %0 = load float, float* @x, align 4 75 call void @vf(float %0) 76 ret void 77 ; PIC: .ent vft 78 ; STATIC: .ent vft 79 ; PIC: save $16, $ra, [[FS:[0-9]+]] 80 ; STATIC: save $16, $ra, [[FS:[0-9]+]] 81 ; PIC: restore $16, $ra, [[FS]] 82 ; STATIC: restore $16, $ra, [[FS]] 83 ; PIC: .end vft 84 ; STATIC: .end vft 85 } 86 87 declare void @vf(float) #1 88 89 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" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 90 attributes #1 = { "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" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 91 92 93