| ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mattr=mips16 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC |
| |
| ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mattr=mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC |
| |
| |
| @xi = common global i32 0, align 4 |
| @x = common global float 0.000000e+00, align 4 |
| @xd = common global double 0.000000e+00, align 8 |
| |
| ; Function Attrs: nounwind |
| define void @it() #0 { |
| entry: |
| %call = call i32 @i(i32 1) |
| store i32 %call, i32* @xi, align 4 |
| ret void |
| ; PIC: .ent it |
| ; STATIC: .ent it |
| ; PIC: save $16, $17, $ra, [[FS:[0-9]+]] |
| ; STATIC: save $16, $ra, [[FS:[0-9]+]] |
| ; PIC: restore $16, $17, $ra, [[FS]] |
| ; STATIC: restore $16, $ra, [[FS]] |
| ; PIC: .end it |
| ; STATIC: .end it |
| } |
| |
| declare i32 @i(i32) #1 |
| |
| ; Function Attrs: nounwind |
| define void @ft() #0 { |
| entry: |
| %call = call float @f() |
| store float %call, float* @x, align 4 |
| ret void |
| ; PIC: .ent ft |
| ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] |
| ; PIC: restore $16, $17, $ra, $18, [[FS]] |
| ; PIC: .end ft |
| } |
| |
| declare float @f() #1 |
| |
| ; Function Attrs: nounwind |
| define void @dt() #0 { |
| entry: |
| %call = call double @d() |
| store double %call, double* @xd, align 8 |
| ret void |
| ; PIC: .ent dt |
| ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] |
| ; PIC: restore $16, $17, $ra, $18, [[FS]] |
| ; PIC: .end dt |
| } |
| |
| declare double @d() #1 |
| |
| ; Function Attrs: nounwind |
| define void @fft() #0 { |
| entry: |
| %0 = load float, float* @x, align 4 |
| %call = call float @ff(float %0) |
| store float %call, float* @x, align 4 |
| ret void |
| ; PIC: .ent fft |
| ; PIC: save $16, $17, $ra, $18, [[FS:[0-9]+]] |
| ; PIC: restore $16, $17, $ra, $18, [[FS]] |
| ; PIC: .end fft |
| } |
| |
| declare float @ff(float) #1 |
| |
| ; Function Attrs: nounwind |
| define void @vft() #0 { |
| entry: |
| %0 = load float, float* @x, align 4 |
| call void @vf(float %0) |
| ret void |
| ; PIC: .ent vft |
| ; STATIC: .ent vft |
| ; PIC: save $16, $ra, [[FS:[0-9]+]] |
| ; STATIC: save $16, $ra, [[FS:[0-9]+]] |
| ; PIC: restore $16, $ra, [[FS]] |
| ; STATIC: restore $16, $ra, [[FS]] |
| ; PIC: .end vft |
| ; STATIC: .end vft |
| } |
| |
| declare void @vf(float) #1 |
| |
| 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" } |
| 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" } |
| |
| |