diff options
Diffstat (limited to 'contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff')
-rw-r--r-- | contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff b/contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff new file mode 100644 index 0000000..167aa6a --- /dev/null +++ b/contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff @@ -0,0 +1,28 @@ +Pull in r199186 from upstream llvm trunk (by Jakob Stoklund Olesen): + + Switch the NEON register class from QPR to DPair. + + The already allocatable DPair superclass contains odd-even D register + pair in addition to the even-odd pairs in the QPR register class. There + is no reason to constrain the set of D register pairs that can be used + for NEON values. Any NEON instructions that require a Q register will + automatically constrain the register class to QPR. + + The allocation order for DPair begins with the QPR registers, so + register allocation is unlikely to change much. + +Introduced here: http://svn.freebsd.org/changeset/base/262261 + +Index: lib/Target/ARM/ARMISelLowering.cpp +=================================================================== +--- lib/Target/ARM/ARMISelLowering.cpp ++++ lib/Target/ARM/ARMISelLowering.cpp +@@ -156,7 +156,7 @@ void ARMTargetLowering::addDRTypeForNEON(MVT VT) { + } + + void ARMTargetLowering::addQRTypeForNEON(MVT VT) { +- addRegisterClass(VT, &ARM::QPRRegClass); ++ addRegisterClass(VT, &ARM::DPairRegClass); + addTypeForNEON(VT, MVT::v2f64, MVT::v4i32); + } + |