Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static < %s | FileCheck %s |
| 2 | |
Reed Kotler | 5c29d63 | 2013-12-15 20:49:30 +0000 | [diff] [blame^] | 3 | ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=NEG |
| 4 | |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 5 | @f = common global float 0.000000e+00, align 4 |
| 6 | |
| 7 | ; Function Attrs: nounwind |
| 8 | define void @foo1() #0 { |
| 9 | entry: |
| 10 | %c = alloca [10 x i8], align 1 |
| 11 | %arraydecay = getelementptr inbounds [10 x i8]* %c, i32 0, i32 0 |
| 12 | call void @x(i8* %arraydecay) |
| 13 | %arraydecay1 = getelementptr inbounds [10 x i8]* %c, i32 0, i32 0 |
| 14 | call void @x(i8* %arraydecay1) |
| 15 | ret void |
| 16 | ; CHECK: .ent foo1 |
Reed Kotler | 5c29d63 | 2013-12-15 20:49:30 +0000 | [diff] [blame^] | 17 | ; CHECK: save $16, $17, $ra, [[FS:[0-9]+]] # 16 bit inst |
| 18 | ; CHECK: restore $16, $17, $ra, [[FS]] # 16 bit inst |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 19 | ; CHECK: .end foo1 |
| 20 | } |
| 21 | |
| 22 | declare void @x(i8*) #1 |
| 23 | |
| 24 | ; Function Attrs: nounwind |
| 25 | define void @foo2() #0 { |
| 26 | entry: |
| 27 | %c = alloca [150 x i8], align 1 |
| 28 | %arraydecay = getelementptr inbounds [150 x i8]* %c, i32 0, i32 0 |
| 29 | call void @x(i8* %arraydecay) |
| 30 | %arraydecay1 = getelementptr inbounds [150 x i8]* %c, i32 0, i32 0 |
| 31 | call void @x(i8* %arraydecay1) |
| 32 | ret void |
| 33 | ; CHECK: .ent foo2 |
Reed Kotler | 5c29d63 | 2013-12-15 20:49:30 +0000 | [diff] [blame^] | 34 | ; CHECK: save $16, $17, $ra, [[FS:[0-9]+]] |
| 35 | ; CHECK: restore $16, $17, $ra, [[FS]] |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 36 | ; CHECK: .end foo2 |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 37 | } |
| 38 | |
| 39 | ; Function Attrs: nounwind |
| 40 | define void @foo3() #0 { |
| 41 | entry: |
| 42 | %call = call float @xf() |
| 43 | store float %call, float* @f, align 4 |
| 44 | ret void |
| 45 | ; CHECK: .ent foo3 |
Reed Kotler | 5c29d63 | 2013-12-15 20:49:30 +0000 | [diff] [blame^] | 46 | ; CHECK: save $16, $17, $ra, $18, [[FS:[0-9]+]] |
| 47 | ; CHECK: restore $16, $17, $ra, $18, [[FS]] |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 48 | ; CHECK: .end foo3 |
| 49 | ; NEG: .ent foo3 |
Reed Kotler | 5c29d63 | 2013-12-15 20:49:30 +0000 | [diff] [blame^] | 50 | ; NEG-NOT: save $16, $17, $ra, $18, [[FS:[0-9]+]] # 16 bit inst |
| 51 | ; NEG-NOT: restore $16, $17, $ra, $18, [[FS]] # 16 bit inst |
Reed Kotler | 5bde5c3 | 2013-12-11 03:32:44 +0000 | [diff] [blame] | 52 | ; NEG: .end foo3 |
| 53 | } |
| 54 | |
| 55 | declare float @xf() #1 |
| 56 | |
| 57 | 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" } |
| 58 | 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" } |
| 59 | |
| 60 | |