Skip to content

Commit 7f4f732

Browse files
committed
[AIE2P] Remove Size Constraints for PostInc Combiner
1 parent 22b634c commit 7f4f732

File tree

2 files changed

+19
-35
lines changed

2 files changed

+19
-35
lines changed

llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,6 @@ std::optional<unsigned> AIE2PInstrInfo::getCombinedPostIncOpcode(
297297
MachineInstr &BaseMemI, MachineInstr &PostIncI, TypeSize Size) const {
298298
switch (PostIncI.getOpcode()) {
299299
case TargetOpcode::G_PTR_ADD:
300-
if (Size >= 2048)
301-
return {};
302300
switch (BaseMemI.getOpcode()) {
303301
case TargetOpcode::G_STORE:
304302
return AIE2P::G_AIE_POSTINC_STORE;
@@ -313,8 +311,6 @@ std::optional<unsigned> AIE2PInstrInfo::getCombinedPostIncOpcode(
313311
case TargetOpcode::G_INTRINSIC:
314312
switch (cast<GIntrinsic>(PostIncI).getIntrinsicID()) {
315313
case Intrinsic::aie2p_add_2d:
316-
if (Size >= 1024)
317-
return {};
318314
switch (BaseMemI.getOpcode()) {
319315
case TargetOpcode::G_STORE:
320316
return AIE2P::G_AIE_POSTINC_2D_STORE;
@@ -327,8 +323,6 @@ std::optional<unsigned> AIE2PInstrInfo::getCombinedPostIncOpcode(
327323
}
328324
break;
329325
case Intrinsic::aie2p_add_3d:
330-
if (Size >= 1024)
331-
return {};
332326
switch (BaseMemI.getOpcode()) {
333327
case TargetOpcode::G_STORE:
334328
return AIE2P::G_AIE_POSTINC_3D_STORE;

llvm/test/CodeGen/AIE/aie2p/combine-loads-stores.mir

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,11 +1575,9 @@ body: |
15751575
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
15761576
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
15771577
; CHECK-NEXT: [[C:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1578-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<32 x s32>) = G_LOAD [[COPY]](p0) :: (load (<32 x s32>))
1579-
; CHECK-NEXT: G_STORE [[LOAD]](<32 x s32>), [[COPY1]](p0) :: (store (<32 x s32>))
1580-
; CHECK-NEXT: [[INT:%[0-9]+]]:_(p0), [[INT1:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.2d), [[COPY]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1581-
; CHECK-NEXT: [[INT2:%[0-9]+]]:_(p0), [[INT3:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.2d), [[COPY1]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1582-
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[INT]](p0), implicit [[INT2]](p0)
1578+
; CHECK-NEXT: [[AIE_POSTINC_2D_LOAD:%[0-9]+]]:_(<32 x s32>), [[AIE_POSTINC_2D_LOAD1:%[0-9]+]]:_(p0), [[AIE_POSTINC_2D_LOAD2:%[0-9]+]]:_(s20) = G_AIE_POSTINC_2D_LOAD [[COPY]], [[C]], [[C]], [[C]], [[C]] :: (load (<32 x s32>))
1579+
; CHECK-NEXT: [[AIE_POSTINC_2D_STORE:%[0-9]+]]:_(p0), [[AIE_POSTINC_2D_STORE1:%[0-9]+]]:_(s20) = G_AIE_POSTINC_2D_STORE [[AIE_POSTINC_2D_LOAD]](<32 x s32>), [[COPY1]], [[C]], [[C]], [[C]], [[C]] :: (store (<32 x s32>))
1580+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[AIE_POSTINC_2D_LOAD1]](p0), implicit [[AIE_POSTINC_2D_STORE]](p0)
15831581
%0:_(p0) = COPY $p0
15841582
%6:_(p0) = COPY $p1
15851583
%1:_(s20) = G_CONSTANT i20 64
@@ -1598,11 +1596,9 @@ body: |
15981596
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
15991597
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
16001598
; CHECK-NEXT: [[C:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1601-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<32 x s32>) = G_LOAD [[COPY]](p0) :: (load (<32 x s32>))
1602-
; CHECK-NEXT: G_STORE [[LOAD]](<32 x s32>), [[COPY1]](p0) :: (store (<32 x s32>))
1603-
; CHECK-NEXT: [[INT:%[0-9]+]]:_(p0), [[INT1:%[0-9]+]]:_(s20), [[INT2:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.3d), [[COPY]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1604-
; CHECK-NEXT: [[INT3:%[0-9]+]]:_(p0), [[INT4:%[0-9]+]]:_(s20), [[INT5:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.3d), [[COPY1]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1605-
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[INT]](p0), implicit [[INT3]](p0)
1599+
; CHECK-NEXT: [[AIE_POSTINC_3D_LOAD:%[0-9]+]]:_(<32 x s32>), [[AIE_POSTINC_3D_LOAD1:%[0-9]+]]:_(p0), [[AIE_POSTINC_3D_LOAD2:%[0-9]+]]:_(s20), [[AIE_POSTINC_3D_LOAD3:%[0-9]+]]:_ = G_AIE_POSTINC_3D_LOAD [[COPY]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]] :: (load (<32 x s32>))
1600+
; CHECK-NEXT: [[AIE_POSTINC_3D_STORE:%[0-9]+]]:_(p0), [[AIE_POSTINC_3D_STORE1:%[0-9]+]]:_(s20), [[AIE_POSTINC_3D_STORE2:%[0-9]+]]:_ = G_AIE_POSTINC_3D_STORE [[AIE_POSTINC_3D_LOAD]](<32 x s32>), [[COPY1]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]] :: (store (<32 x s32>))
1601+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[AIE_POSTINC_3D_LOAD1]](p0), implicit [[AIE_POSTINC_3D_STORE]](p0)
16061602
%0:_(p0) = COPY $p0
16071603
%6:_(p0) = COPY $p1
16081604
%1:_(s20) = G_CONSTANT i20 64
@@ -1621,15 +1617,13 @@ body: |
16211617
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
16221618
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
16231619
; CHECK-NEXT: [[C:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1624-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<64 x s32>) = G_LOAD [[COPY]](p0) :: (load (<64 x s32>))
1625-
; CHECK-NEXT: G_STORE [[LOAD]](<64 x s32>), [[COPY1]](p0) :: (store (<64 x s32>))
1626-
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s20)
1627-
; CHECK-NEXT: $p0 = COPY [[PTR_ADD]](p0)
1628-
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C]](s20)
1629-
; CHECK-NEXT: $p1 = COPY [[PTR_ADD1]](p0)
1630-
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1631-
; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s20)
1632-
; CHECK-NEXT: $p2 = COPY [[PTR_ADD2]](p0)
1620+
; CHECK-NEXT: [[AIE_POSTINC_LOAD:%[0-9]+]]:_(<64 x s32>), [[AIE_POSTINC_LOAD1:%[0-9]+]]:_(p0) = G_AIE_POSTINC_LOAD [[COPY]], [[C]](s20) :: (load (<64 x s32>))
1621+
; CHECK-NEXT: [[AIE_POSTINC_STORE:%[0-9]+]]:_(p0) = G_AIE_POSTINC_STORE [[AIE_POSTINC_LOAD]](<64 x s32>), [[COPY1]], [[C]](s20) :: (store (<64 x s32>))
1622+
; CHECK-NEXT: $p0 = COPY [[AIE_POSTINC_LOAD1]](p0)
1623+
; CHECK-NEXT: $p1 = COPY [[AIE_POSTINC_STORE]](p0)
1624+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 0
1625+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[AIE_POSTINC_STORE]], [[C1]](s20)
1626+
; CHECK-NEXT: $p2 = COPY [[PTR_ADD]](p0)
16331627
%0:_(p0) = COPY $p0
16341628
%6:_(p0) = COPY $p1
16351629
%1:_(s20) = G_CONSTANT i20 64
@@ -1652,11 +1646,9 @@ body: |
16521646
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
16531647
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
16541648
; CHECK-NEXT: [[C:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1655-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<64 x s32>) = G_LOAD [[COPY]](p0) :: (load (<64 x s32>))
1656-
; CHECK-NEXT: G_STORE [[LOAD]](<64 x s32>), [[COPY1]](p0) :: (store (<64 x s32>))
1657-
; CHECK-NEXT: [[INT:%[0-9]+]]:_(p0), [[INT1:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.2d), [[COPY]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1658-
; CHECK-NEXT: [[INT2:%[0-9]+]]:_(p0), [[INT3:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.2d), [[COPY1]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1659-
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[INT]](p0), implicit [[INT2]](p0)
1649+
; CHECK-NEXT: [[AIE_POSTINC_2D_LOAD:%[0-9]+]]:_(<64 x s32>), [[AIE_POSTINC_2D_LOAD1:%[0-9]+]]:_(p0), [[AIE_POSTINC_2D_LOAD2:%[0-9]+]]:_(s20) = G_AIE_POSTINC_2D_LOAD [[COPY]], [[C]], [[C]], [[C]], [[C]] :: (load (<64 x s32>))
1650+
; CHECK-NEXT: [[AIE_POSTINC_2D_STORE:%[0-9]+]]:_(p0), [[AIE_POSTINC_2D_STORE1:%[0-9]+]]:_(s20) = G_AIE_POSTINC_2D_STORE [[AIE_POSTINC_2D_LOAD]](<64 x s32>), [[COPY1]], [[C]], [[C]], [[C]], [[C]] :: (store (<64 x s32>))
1651+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[AIE_POSTINC_2D_LOAD1]](p0), implicit [[AIE_POSTINC_2D_STORE]](p0)
16601652
%0:_(p0) = COPY $p0
16611653
%6:_(p0) = COPY $p1
16621654
%1:_(s20) = G_CONSTANT i20 64
@@ -1675,11 +1667,9 @@ body: |
16751667
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
16761668
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
16771669
; CHECK-NEXT: [[C:%[0-9]+]]:_(s20) = G_CONSTANT i20 64
1678-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<64 x s32>) = G_LOAD [[COPY]](p0) :: (load (<64 x s32>))
1679-
; CHECK-NEXT: G_STORE [[LOAD]](<64 x s32>), [[COPY1]](p0) :: (store (<64 x s32>))
1680-
; CHECK-NEXT: [[INT:%[0-9]+]]:_(p0), [[INT1:%[0-9]+]]:_(s20), [[INT2:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.3d), [[COPY]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1681-
; CHECK-NEXT: [[INT3:%[0-9]+]]:_(p0), [[INT4:%[0-9]+]]:_(s20), [[INT5:%[0-9]+]]:_(s20) = G_INTRINSIC intrinsic(@llvm.aie2p.add.3d), [[COPY1]](p0), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20), [[C]](s20)
1682-
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[INT]](p0), implicit [[INT3]](p0)
1670+
; CHECK-NEXT: [[AIE_POSTINC_3D_LOAD:%[0-9]+]]:_(<64 x s32>), [[AIE_POSTINC_3D_LOAD1:%[0-9]+]]:_(p0), [[AIE_POSTINC_3D_LOAD2:%[0-9]+]]:_(s20), [[AIE_POSTINC_3D_LOAD3:%[0-9]+]]:_ = G_AIE_POSTINC_3D_LOAD [[COPY]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]] :: (load (<64 x s32>))
1671+
; CHECK-NEXT: [[AIE_POSTINC_3D_STORE:%[0-9]+]]:_(p0), [[AIE_POSTINC_3D_STORE1:%[0-9]+]]:_(s20), [[AIE_POSTINC_3D_STORE2:%[0-9]+]]:_ = G_AIE_POSTINC_3D_STORE [[AIE_POSTINC_3D_LOAD]](<64 x s32>), [[COPY1]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]], [[C]] :: (store (<64 x s32>))
1672+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[AIE_POSTINC_3D_LOAD1]](p0), implicit [[AIE_POSTINC_3D_STORE]](p0)
16831673
%0:_(p0) = COPY $p0
16841674
%6:_(p0) = COPY $p1
16851675
%1:_(s20) = G_CONSTANT i20 64

0 commit comments

Comments
 (0)