@@ -1639,9 +1639,9 @@ AVRTargetLowering::getConstraintType(StringRef Constraint) const {
16391639 case ' w' : // Special upper register pairs
16401640 return C_RegisterClass;
16411641 case ' t' : // Temporary register
1642- case ' x' : // Pointer register pair X
1643- case ' y' : // Pointer register pair Y
1644- case ' z' : // Pointer register pair Z
1642+ case ' x' : case ' X ' : // Pointer register pair X
1643+ case ' y' : case ' Y ' : // Pointer register pair Y
1644+ case ' z' : case ' Z ' : // Pointer register pair Z
16451645 return C_Register;
16461646 case ' Q' : // A memory address based on Y or Z pointer with displacement.
16471647 return C_Memory;
@@ -1704,9 +1704,9 @@ AVRTargetLowering::getSingleConstraintMatchWeight(
17041704 case ' q' :
17051705 case ' t' :
17061706 case ' w' :
1707- case ' x' :
1708- case ' y' :
1709- case ' z' :
1707+ case ' x' : case ' X ' :
1708+ case ' y' : case ' Y ' :
1709+ case ' z' : case ' Z ' :
17101710 weight = CW_SpecificReg;
17111711 break ;
17121712 case ' G' :
@@ -1825,10 +1825,13 @@ AVRTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
18251825 case ' w' : // Special upper register pairs: r24, r26, r28, r30.
18261826 return std::make_pair (0U , &AVR::IWREGSRegClass);
18271827 case ' x' : // Pointer register pair X: r27:r26.
1828+ case ' X' :
18281829 return std::make_pair (unsigned (AVR::R27R26), &AVR::PTRREGSRegClass);
18291830 case ' y' : // Pointer register pair Y: r29:r28.
1831+ case ' Y' :
18301832 return std::make_pair (unsigned (AVR::R29R28), &AVR::PTRREGSRegClass);
18311833 case ' z' : // Pointer register pair Z: r31:r30.
1834+ case ' Z' :
18321835 return std::make_pair (unsigned (AVR::R31R30), &AVR::PTRREGSRegClass);
18331836 default :
18341837 break ;
0 commit comments