mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-06 10:38:54 +00:00
Expand the mask capability for deciding which functions are mips16 and mips32
so it can be better used for general interoperability testing between mips32 and mips16. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190762 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2ad0a2c122
commit
6febf857f6
@ -103,8 +103,9 @@ bool MipsOs16::runOnModule(Module &M) {
|
||||
if (F->isDeclaration()) continue;
|
||||
DEBUG(dbgs() << "Working on " << F->getName() << "\n");
|
||||
if (usingMask) {
|
||||
if ((functionIndex < Mips32FunctionMask.length()) &&
|
||||
(Mips32FunctionMask[functionIndex] == '1')) {
|
||||
if (functionIndex == Mips32FunctionMask.length())
|
||||
functionIndex = 0;
|
||||
if (Mips32FunctionMask[functionIndex] == '1') {
|
||||
DEBUG(dbgs() << "mask forced mips32: " << F->getName() << "\n");
|
||||
F->addFnAttr("nomips16");
|
||||
}
|
||||
|
73
test/CodeGen/Mips/fp16mix.ll
Normal file
73
test/CodeGen/Mips/fp16mix.ll
Normal file
@ -0,0 +1,73 @@
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -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 -soft-float -mips16-hard-float -relocation-model=static -mips32-function-mask=01 -mips-os16 < %s | FileCheck %s -check-prefix=fmask2
|
||||
|
||||
; 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
|
||||
}
|
||||
|
||||
; 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
|
||||
}
|
||||
|
||||
; 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
|
||||
}
|
||||
|
||||
; 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
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user