@@ -1733,6 +1733,77 @@ AIE2PInstrInfo::getZOLSupport() const {
17331733 return Result;
17341734}
17351735
1736+ bool AIE2PInstrInfo::isOffsetInImmediateRange (
1737+ unsigned Opcode, unsigned LoadStoreSize,
1738+ std::optional<APInt> Offset) const {
1739+ if (!Offset)
1740+ return false ;
1741+
1742+ switch (Opcode) {
1743+ case AIE2P::G_AIE_OFFSET_STORE:
1744+ case AIE2P::G_AIE_OFFSET_LOAD: {
1745+ switch (LoadStoreSize) {
1746+ case 8 :
1747+ return checkSignedImmediateRange<4 , 1 >(Offset);
1748+ case 16 :
1749+ return checkSignedImmediateRange<4 , 2 >(Offset);
1750+ case 20 :
1751+ case 32 :
1752+ return checkSignedImmediateRange<4 , 4 >(Offset);
1753+ case 128 :
1754+ return checkSignedImmediateRange<4 , 16 >(Offset);
1755+ case 256 :
1756+ return checkSignedImmediateRange<4 , 32 >(Offset);
1757+ case 512 :
1758+ return checkSignedImmediateRange<4 , 64 >(Offset);
1759+ case 1024 :
1760+ return checkSignedImmediateRangeSplitting<4 , 64 , 64 >(Offset);
1761+ case 2048 :
1762+ return checkSignedImmediateRangeSplitting<4 , 64 , 192 >(Offset);
1763+ default :
1764+ return false ;
1765+ }
1766+ }
1767+ case AIE2P::G_AIE_OFFSET_SEXTLOAD:
1768+ case AIE2P::G_AIE_OFFSET_ZEXTLOAD:
1769+ case AIE2P::G_AIE_POSTINC_ZEXTLOAD:
1770+ case AIE2P::G_AIE_POSTINC_SEXTLOAD: {
1771+ switch (LoadStoreSize) {
1772+ case 8 :
1773+ return checkSignedImmediateRange<4 , 1 >(Offset);
1774+ case 16 :
1775+ return checkSignedImmediateRange<4 , 2 >(Offset);
1776+ default :
1777+ return false ;
1778+ }
1779+ }
1780+ case AIE2P::G_AIE_POSTINC_STORE:
1781+ case AIE2P::G_AIE_POSTINC_LOAD: {
1782+ switch (LoadStoreSize) {
1783+ case 8 :
1784+ return checkSignedImmediateRange<4 , 1 >(Offset);
1785+ case 16 :
1786+ return checkSignedImmediateRange<4 , 2 >(Offset);
1787+ case 20 :
1788+ case 32 :
1789+ return checkSignedImmediateRange<4 , 4 >(Offset);
1790+ case 128 :
1791+ return checkSignedImmediateRange<4 , 16 >(Offset);
1792+ case 256 :
1793+ return checkSignedImmediateRange<4 , 32 >(Offset);
1794+ case 512 :
1795+ case 1024 :
1796+ case 2048 :
1797+ return checkSignedImmediateRange<4 , 64 >(Offset);
1798+ default :
1799+ return false ;
1800+ }
1801+ }
1802+ default :
1803+ return false ;
1804+ }
1805+ }
1806+
17361807unsigned AIE2PInstrInfo::getGenericAddVectorEltOpcode () const {
17371808 return AIE2P::G_AIE_ADD_VECTOR_ELT_HI;
17381809}
0 commit comments