@@ -1639,9 +1639,9 @@ AVRTargetLowering::getConstraintType(StringRef Constraint) const {
1639
1639
case ' w' : // Special upper register pairs
1640
1640
return C_RegisterClass;
1641
1641
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
1645
1645
return C_Register;
1646
1646
case ' Q' : // A memory address based on Y or Z pointer with displacement.
1647
1647
return C_Memory;
@@ -1704,9 +1704,9 @@ AVRTargetLowering::getSingleConstraintMatchWeight(
1704
1704
case ' q' :
1705
1705
case ' t' :
1706
1706
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 ' :
1710
1710
weight = CW_SpecificReg;
1711
1711
break ;
1712
1712
case ' G' :
@@ -1825,10 +1825,13 @@ AVRTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
1825
1825
case ' w' : // Special upper register pairs: r24, r26, r28, r30.
1826
1826
return std::make_pair (0U , &AVR::IWREGSRegClass);
1827
1827
case ' x' : // Pointer register pair X: r27:r26.
1828
+ case ' X' :
1828
1829
return std::make_pair (unsigned (AVR::R27R26), &AVR::PTRREGSRegClass);
1829
1830
case ' y' : // Pointer register pair Y: r29:r28.
1831
+ case ' Y' :
1830
1832
return std::make_pair (unsigned (AVR::R29R28), &AVR::PTRREGSRegClass);
1831
1833
case ' z' : // Pointer register pair Z: r31:r30.
1834
+ case ' Z' :
1832
1835
return std::make_pair (unsigned (AVR::R31R30), &AVR::PTRREGSRegClass);
1833
1836
default :
1834
1837
break ;
0 commit comments