1263320SdimPull in r199186 from upstream llvm trunk (by Jakob Stoklund Olesen): 2263320Sdim 3263320Sdim Switch the NEON register class from QPR to DPair. 4263320Sdim 5263320Sdim The already allocatable DPair superclass contains odd-even D register 6263320Sdim pair in addition to the even-odd pairs in the QPR register class. There 7263320Sdim is no reason to constrain the set of D register pairs that can be used 8263320Sdim for NEON values. Any NEON instructions that require a Q register will 9263320Sdim automatically constrain the register class to QPR. 10263320Sdim 11263320Sdim The allocation order for DPair begins with the QPR registers, so 12263320Sdim register allocation is unlikely to change much. 13263320Sdim 14263320SdimIntroduced here: http://svn.freebsd.org/changeset/base/262261 15263320Sdim 16263320SdimIndex: lib/Target/ARM/ARMISelLowering.cpp 17263320Sdim=================================================================== 18263320Sdim--- lib/Target/ARM/ARMISelLowering.cpp 19263320Sdim+++ lib/Target/ARM/ARMISelLowering.cpp 20263320Sdim@@ -156,7 +156,7 @@ void ARMTargetLowering::addDRTypeForNEON(MVT VT) { 21263320Sdim } 22263320Sdim 23263320Sdim void ARMTargetLowering::addQRTypeForNEON(MVT VT) { 24263320Sdim- addRegisterClass(VT, &ARM::QPRRegClass); 25263320Sdim+ addRegisterClass(VT, &ARM::DPairRegClass); 26263320Sdim addTypeForNEON(VT, MVT::v2f64, MVT::v4i32); 27263320Sdim } 28263320Sdim 29