Go to file
Daniel Sanders 68dcb4ffa3 [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

llvm-svn: 213160
2014-07-16 15:34:07 +00:00
clang Revert "clang/test/Driver/crash-report.c: This requires rewriter for -frewrite-includes. [PR20321]" 2014-07-16 15:12:48 +00:00
clang-tools-extra [clang-tidy] As a simple heuristic don't emit a swap fixit that would create 2014-07-16 14:52:07 +00:00
compiler-rt [ASan/Win] Handle situations when the client app has used DbgHelp before 2014-07-16 14:11:02 +00:00
debuginfo-tests relax testcase for LLDB output format compatibility. 2014-03-19 23:06:18 +00:00
libclc prepare-builtins: Fix broken build due to recent LLVM API change 2014-07-07 17:46:45 +00:00
libcxx Change Windows decoration on some base classes 2014-07-16 01:00:26 +00:00
libcxxabi Fix for libc++abi when using -Wl,--as-needed. 2014-07-14 17:00:29 +00:00
lld [ELF] Implement parsing `-l` prefixed items in the `GROUP` linker script command. 2014-07-15 17:17:30 +00:00
lldb Add kalimba as a platform. 2014-07-16 15:03:10 +00:00
llvm [mips][fp64a] Temporarily disable odd-numbered double-precision registers when using the FP64A ABI. 2014-07-16 15:34:07 +00:00
openmp CMake: remove duplicated source file from list 2014-06-02 13:09:24 +00:00
polly [Refactor] Use attributes to mark function as invalid for polly 2014-07-15 21:06:48 +00:00