@@ -1743,6 +1743,77 @@ AIE2PInstrInfo::getZOLSupport() const {
17431743 return Result;
17441744}
17451745
1746+ bool AIE2PInstrInfo::isOffsetInImmediateRange (
1747+ unsigned Opcode, unsigned LoadStoreSize,
1748+ std::optional<APInt> Offset) const {
1749+ if (!Offset)
1750+ return false ;
1751+
1752+ switch (Opcode) {
1753+ case AIE2P::G_AIE_OFFSET_STORE:
1754+ case AIE2P::G_AIE_OFFSET_LOAD: {
1755+ switch (LoadStoreSize) {
1756+ case 8 :
1757+ return checkSignedImmediateRange<4 , 1 >(Offset);
1758+ case 16 :
1759+ return checkSignedImmediateRange<4 , 2 >(Offset);
1760+ case 20 :
1761+ case 32 :
1762+ return checkSignedImmediateRange<4 , 4 >(Offset);
1763+ case 128 :
1764+ return checkSignedImmediateRange<4 , 16 >(Offset);
1765+ case 256 :
1766+ return checkSignedImmediateRange<4 , 32 >(Offset);
1767+ case 512 :
1768+ return checkSignedImmediateRange<4 , 64 >(Offset);
1769+ case 1024 :
1770+ return checkSignedImmediateRangeSplitting<4 , 64 , 64 >(Offset);
1771+ case 2048 :
1772+ return checkSignedImmediateRangeSplitting<4 , 64 , 192 >(Offset);
1773+ default :
1774+ return false ;
1775+ }
1776+ }
1777+ case AIE2P::G_AIE_OFFSET_SEXTLOAD:
1778+ case AIE2P::G_AIE_OFFSET_ZEXTLOAD:
1779+ case AIE2P::G_AIE_POSTINC_ZEXTLOAD:
1780+ case AIE2P::G_AIE_POSTINC_SEXTLOAD: {
1781+ switch (LoadStoreSize) {
1782+ case 8 :
1783+ return checkSignedImmediateRange<4 , 1 >(Offset);
1784+ case 16 :
1785+ return checkSignedImmediateRange<4 , 2 >(Offset);
1786+ default :
1787+ return false ;
1788+ }
1789+ }
1790+ case AIE2P::G_AIE_POSTINC_STORE:
1791+ case AIE2P::G_AIE_POSTINC_LOAD: {
1792+ switch (LoadStoreSize) {
1793+ case 8 :
1794+ return checkSignedImmediateRange<4 , 1 >(Offset);
1795+ case 16 :
1796+ return checkSignedImmediateRange<4 , 2 >(Offset);
1797+ case 20 :
1798+ case 32 :
1799+ return checkSignedImmediateRange<4 , 4 >(Offset);
1800+ case 128 :
1801+ return checkSignedImmediateRange<4 , 16 >(Offset);
1802+ case 256 :
1803+ return checkSignedImmediateRange<4 , 32 >(Offset);
1804+ case 512 :
1805+ case 1024 :
1806+ case 2048 :
1807+ return checkSignedImmediateRange<4 , 64 >(Offset);
1808+ default :
1809+ return false ;
1810+ }
1811+ }
1812+ default :
1813+ return false ;
1814+ }
1815+ }
1816+
17461817unsigned AIE2PInstrInfo::getGenericAddVectorEltOpcode () const {
17471818 return AIE2P::G_AIE_ADD_VECTOR_ELT_HI;
17481819}
0 commit comments