mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
[Mips] Adjust float ABI settings in case of MIPS16 mode.
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
This commit is contained in:
@@ -81,6 +81,16 @@ MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &CPU,
|
||||
// Parse features string.
|
||||
ParseSubtargetFeatures(CPUName, FS);
|
||||
|
||||
if (InMips16Mode && !TM->Options.UseSoftFloat) {
|
||||
// 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).
|
||||
TM->Options.UseSoftFloat = true;
|
||||
TM->Options.FloatABIType = FloatABI::Soft;
|
||||
InMips16HardFloat = true;
|
||||
}
|
||||
|
||||
PreviousInMips16Mode = InMips16Mode;
|
||||
|
||||
// Initialize scheduling itinerary for the specified CPU.
|
||||
|
||||
Reference in New Issue
Block a user