llvm-6502/lib
Daniel Sanders 663e484df9 [mips][fp64a] Temporarily disable odd-numbered double-precision registers when using the FP64A ABI.
Summary:
A few instructions (mostly cvt.d.w and similar) are causing problems with
-mfp64 and -mno-odd-spreg and it looks like fixing it properly may
take several weeks. In the meantime, let's disable the odd-numbered
double-precision registers so that the generated code is at least valid.

The problem is that instructions like cvt.d.w read from the 32-bit low
subregister of a double-precision FPU register. This often leads to the compiler
to inserting moves to transfer a GPR32 to a FGR32 using mtc1. Such moves
violate the rules against 32-bit writes to odd-numbered FPU registers imposed
by -mno-odd-spreg. By disabling the odd-numbered double-precision registers, it
becomes impossible for the 32-bit low subregister to be odd-numbered.

This fixes numerous test-suite failures when compiling for the FP64A ABI
('-mfp64 -mno-odd-spreg'). There is no LLVM test case because it's difficult to
test that odd-numbered FPU registers are not allocatable. Instead, we depend on
the assembler (GAS and -fintegrated-as) raising errors when the rules are
violated.

Differential Revision: http://reviews.llvm.org/D4532


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213160 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 15:34:07 +00:00
..
Analysis Teach computeKnownBits to look through addrspacecast. 2014-07-15 01:55:03 +00:00
AsmParser
Bitcode Roundtrip the inalloca bit on allocas through bitcode 2014-07-16 01:34:27 +00:00
CodeGen Remove TLI from isInTailCallPosition's arguments. NFC. 2014-07-16 00:01:22 +00:00
DebugInfo
ExecutionEngine [RuntimeDyld] Revert r211652 - MachO object GDB registration support. 2014-07-15 19:35:22 +00:00
IR Emit warnings if vectorization is forced and fails. 2014-07-16 00:36:00 +00:00
IRReader
LineEditor
Linker
LTO Prune Redundant libdeps in CMake's target_link_libraries and LLVMBuild.txt. 2014-07-15 11:37:03 +00:00
MC CodeGen: Stick constant pool entries in COMDAT sections for WinCOFF 2014-07-14 22:57:27 +00:00
Object [RuntimeDyld] Revert r211652 - MachO object GDB registration support. 2014-07-15 19:35:22 +00:00
Option Generic: add range-adapter for option parsing. 2014-07-09 13:03:37 +00:00
ProfileData
Support Perform wildcard expansion in Process::GetArgumentVector on Windows (PR17098) 2014-07-16 00:52:11 +00:00
TableGen
Target [mips][fp64a] Temporarily disable odd-numbered double-precision registers when using the FP64A ABI. 2014-07-16 15:34:07 +00:00
Transforms Fix comment in InstCombiner::visitAddrSpaceCast. 2014-07-16 01:34:21 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile