summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff')
-rw-r--r--contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff28
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);
+ }
+
OpenPOWER on IntegriCloud