Index: lib/Target/Sparc/SparcISelLowering.cpp =================================================================== --- lib/Target/Sparc/SparcISelLowering.cpp +++ lib/Target/Sparc/SparcISelLowering.cpp @@ -3383,7 +3383,9 @@ if (Constraint.size() == 1) { switch (Constraint[0]) { default: break; - case 'r': return C_RegisterClass; + case 'r': + case 'f': + return C_RegisterClass; case 'I': // SIMM13 return C_Other; } @@ -3457,6 +3459,18 @@ MVT VT) const { if (Constraint.size() == 1) { switch (Constraint[0]) { + case 'f': + if (VT == MVT::f32) + return std::make_pair(0U, &SP::FPRegsRegClass); + else if (VT == MVT::f64) + return std::make_pair(0U, &SP::DFPRegsRegClass); + else if (VT == MVT::f128) + return std::make_pair(0U, &SP::QFPRegsRegClass); + + llvm_unreachable("Unknown ValueType for f-register-type!"); + + break; + case 'r': if (VT == MVT::v2i32) return std::make_pair(0U, &SP::IntPairRegClass);