@@ -1655,6 +1655,13 @@ bool HexagonInstrInfo::isPostIncrement(const MachineInstr &MI) const {
1655
1655
return getAddrMode (MI) == HexagonII::PostInc;
1656
1656
}
1657
1657
1658
+ bool HexagonInstrInfo::isPostIncWithImmOffset (const MachineInstr &MI) const {
1659
+ unsigned BasePos, OffsetPos;
1660
+ if (!getBaseAndOffsetPosition (MI, BasePos, OffsetPos))
1661
+ return false ;
1662
+ return isPostIncrement (MI) && MI.getOperand (OffsetPos).isImm ();
1663
+ }
1664
+
1658
1665
// Returns true if an instruction is predicated irrespective of the predicate
1659
1666
// sense. For example, all of the following will return true.
1660
1667
// if (p0) R1 = add(R2, R3)
@@ -2436,6 +2443,55 @@ bool HexagonInstrInfo::isLoopN(const MachineInstr &MI) const {
2436
2443
Opcode == Hexagon::J2_loop1rext;
2437
2444
}
2438
2445
2446
+ bool HexagonInstrInfo::isCircBufferInstr (const MachineInstr &MI) const {
2447
+ switch (MI.getOpcode ()) {
2448
+ default :
2449
+ return false ;
2450
+ case Hexagon::L2_loadalignb_pci:
2451
+ case Hexagon::L2_loadalignb_pcr:
2452
+ case Hexagon::L2_loadalignh_pci:
2453
+ case Hexagon::L2_loadalignh_pcr:
2454
+ case Hexagon::L2_loadbsw2_pci:
2455
+ case Hexagon::L2_loadbsw2_pcr:
2456
+ case Hexagon::L2_loadbsw4_pci:
2457
+ case Hexagon::L2_loadbsw4_pcr:
2458
+ case Hexagon::L2_loadbzw2_pci:
2459
+ case Hexagon::L2_loadbzw2_pcr:
2460
+ case Hexagon::L2_loadbzw4_pci:
2461
+ case Hexagon::L2_loadbzw4_pcr:
2462
+ case Hexagon::L2_loadrb_pci:
2463
+ case Hexagon::L2_loadrb_pcr:
2464
+ case Hexagon::L2_loadrd_pci:
2465
+ case Hexagon::L2_loadrd_pcr:
2466
+ case Hexagon::L2_loadrh_pci:
2467
+ case Hexagon::L2_loadrh_pcr:
2468
+ case Hexagon::L2_loadri_pci:
2469
+ case Hexagon::L2_loadri_pcr:
2470
+ case Hexagon::L2_loadrub_pci:
2471
+ case Hexagon::L2_loadrub_pcr:
2472
+ case Hexagon::L2_loadruh_pci:
2473
+ case Hexagon::L2_loadruh_pcr:
2474
+ case Hexagon::S2_storerbnew_pci:
2475
+ case Hexagon::S2_storerbnew_pcr:
2476
+ case Hexagon::S2_storerb_pci:
2477
+ case Hexagon::S2_storerb_pcr:
2478
+ case Hexagon::S2_storerd_pci:
2479
+ case Hexagon::S2_storerd_pcr:
2480
+ case Hexagon::S2_storerf_pci:
2481
+ case Hexagon::S2_storerf_pcr:
2482
+ case Hexagon::S2_storerhnew_pci:
2483
+ case Hexagon::S2_storerhnew_pcr:
2484
+ case Hexagon::S2_storerh_pci:
2485
+ case Hexagon::S2_storerh_pcr:
2486
+ case Hexagon::S2_storerinew_pci:
2487
+ case Hexagon::S2_storerinew_pcr:
2488
+ case Hexagon::S2_storeri_pci:
2489
+ case Hexagon::S2_storeri_pcr:
2490
+ return true ;
2491
+ }
2492
+ return false ;
2493
+ }
2494
+
2439
2495
bool HexagonInstrInfo::isMemOp (const MachineInstr &MI) const {
2440
2496
switch (MI.getOpcode ()) {
2441
2497
default : return false ;
0 commit comments