mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-01 04:29:57 +00:00
Hard float for mips16 means essentially to compile as soft float but to use a runtime library for soft float that is written with native mips32 floating point instructions (those runtime routines run in mips32 hard float mode). The patch reviewed by Reed Kotler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195123 91177308-0d34-0410-b5e6-96231b3b80d8
93 lines
2.1 KiB
LLVM
93 lines
2.1 KiB
LLVM
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static -mips32-function-mask=10 -mips-os16 < %s | FileCheck %s -check-prefix=fmask1
|
|
|
|
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static -mips32-function-mask=01 -mips-os16 < %s | FileCheck %s -check-prefix=fmask2
|
|
|
|
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static -mips32-function-mask=10. -mips-os16 < %s | FileCheck %s -check-prefix=fmask1nr
|
|
|
|
; Function Attrs: nounwind optsize readnone
|
|
define void @foo1() {
|
|
entry:
|
|
ret void
|
|
; fmask1: .ent foo1
|
|
; fmask1: .set noreorder
|
|
; fmask1: .set nomacro
|
|
; fmask1: .set noat
|
|
; fmask1: .set at
|
|
; fmask1: .set macro
|
|
; fmask1: .set reorder
|
|
; fmask1: .end foo1
|
|
; fmask2: .ent foo1
|
|
; fmask2: save {{.*}}
|
|
; fmask2: .end foo1
|
|
; fmask1nr: .ent foo1
|
|
; fmask1nr: .set noreorder
|
|
; fmask1nr: .set nomacro
|
|
; fmask1nr: .set noat
|
|
; fmask1nr: .set at
|
|
; fmask1nr: .set macro
|
|
; fmask1nr: .set reorder
|
|
; fmask1nr: .end foo1
|
|
}
|
|
|
|
; Function Attrs: nounwind optsize readnone
|
|
define void @foo2() {
|
|
entry:
|
|
ret void
|
|
; fmask2: .ent foo2
|
|
; fmask2: .set noreorder
|
|
; fmask2: .set nomacro
|
|
; fmask2: .set noat
|
|
; fmask2: .set at
|
|
; fmask2: .set macro
|
|
; fmask2: .set reorder
|
|
; fmask2: .end foo2
|
|
; fmask1: .ent foo2
|
|
; fmask1: save {{.*}}
|
|
; fmask1: .end foo2
|
|
; fmask1nr: .ent foo2
|
|
; fmask1nr: save {{.*}}
|
|
; fmask1nr: .end foo2
|
|
}
|
|
|
|
; Function Attrs: nounwind optsize readnone
|
|
define void @foo3() {
|
|
entry:
|
|
ret void
|
|
; fmask1: .ent foo3
|
|
; fmask1: .set noreorder
|
|
; fmask1: .set nomacro
|
|
; fmask1: .set noat
|
|
; fmask1: .set at
|
|
; fmask1: .set macro
|
|
; fmask1: .set reorder
|
|
; fmask1: .end foo3
|
|
; fmask2: .ent foo3
|
|
; fmask2: save {{.*}}
|
|
; fmask2: .end foo3
|
|
; fmask1r: .ent foo3
|
|
; fmask1r: save {{.*}}
|
|
; fmask1r: .end foo3
|
|
}
|
|
|
|
; Function Attrs: nounwind optsize readnone
|
|
define void @foo4() {
|
|
entry:
|
|
ret void
|
|
; fmask2: .ent foo4
|
|
; fmask2: .set noreorder
|
|
; fmask2: .set nomacro
|
|
; fmask2: .set noat
|
|
; fmask2: .set at
|
|
; fmask2: .set macro
|
|
; fmask2: .set reorder
|
|
; fmask2: .end foo4
|
|
; fmask1: .ent foo4
|
|
; fmask1: save {{.*}}
|
|
; fmask1: .end foo4
|
|
; fmask1nr: .ent foo4
|
|
; fmask1nr: save {{.*}}
|
|
; fmask1nr: .end foo4
|
|
}
|
|
|
|
|