Hexagon constant extender support.
Patch by Jyotsna Verma.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156634 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp b/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
index d4bca9f..fa1a969 100644
--- a/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
+++ b/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
@@ -257,7 +257,7 @@
bool HexagonPacketizerList::canReserveResourcesForConstExt(MachineInstr *MI) {
const HexagonInstrInfo *QII = (const HexagonInstrInfo *) TII;
- assert(QII->isExtended(MI) &&
+ assert((QII->isExtended(MI) || QII->isConstExtended(MI)) &&
"Should only be called for constant extended instructions");
MachineFunction *MF = MI->getParent()->getParent();
MachineInstr *PseudoMI = MF->CreateMachineInstr(QII->get(Hexagon::IMMEXT),
@@ -394,6 +394,16 @@
case Hexagon::POST_STbri_cdnPt_V4:
case Hexagon::POST_STbri_cNotPt:
case Hexagon::POST_STbri_cdnNotPt_V4:
+ case Hexagon::STrib_abs_V4:
+ case Hexagon::STrib_abs_cPt_V4:
+ case Hexagon::STrib_abs_cdnPt_V4:
+ case Hexagon::STrib_abs_cNotPt_V4:
+ case Hexagon::STrib_abs_cdnNotPt_V4:
+ case Hexagon::STrib_imm_abs_V4:
+ case Hexagon::STrib_imm_abs_cPt_V4:
+ case Hexagon::STrib_imm_abs_cdnPt_V4:
+ case Hexagon::STrib_imm_abs_cNotPt_V4:
+ case Hexagon::STrib_imm_abs_cdnNotPt_V4:
case Hexagon::STb_GP_cPt_V4:
case Hexagon::STb_GP_cNotPt_V4:
case Hexagon::STb_GP_cdnPt_V4:
@@ -427,6 +437,16 @@
case Hexagon::POST_SThri_cdnPt_V4:
case Hexagon::POST_SThri_cNotPt:
case Hexagon::POST_SThri_cdnNotPt_V4:
+ case Hexagon::STrih_abs_V4:
+ case Hexagon::STrih_abs_cPt_V4:
+ case Hexagon::STrih_abs_cdnPt_V4:
+ case Hexagon::STrih_abs_cNotPt_V4:
+ case Hexagon::STrih_abs_cdnNotPt_V4:
+ case Hexagon::STrih_imm_abs_V4:
+ case Hexagon::STrih_imm_abs_cPt_V4:
+ case Hexagon::STrih_imm_abs_cdnPt_V4:
+ case Hexagon::STrih_imm_abs_cNotPt_V4:
+ case Hexagon::STrih_imm_abs_cdnNotPt_V4:
case Hexagon::STh_GP_cPt_V4:
case Hexagon::STh_GP_cNotPt_V4:
case Hexagon::STh_GP_cdnPt_V4:
@@ -460,6 +480,16 @@
case Hexagon::POST_STwri_cdnPt_V4:
case Hexagon::POST_STwri_cNotPt:
case Hexagon::POST_STwri_cdnNotPt_V4:
+ case Hexagon::STriw_abs_V4:
+ case Hexagon::STriw_abs_cPt_V4:
+ case Hexagon::STriw_abs_cdnPt_V4:
+ case Hexagon::STriw_abs_cNotPt_V4:
+ case Hexagon::STriw_abs_cdnNotPt_V4:
+ case Hexagon::STriw_imm_abs_V4:
+ case Hexagon::STriw_imm_abs_cPt_V4:
+ case Hexagon::STriw_imm_abs_cdnPt_V4:
+ case Hexagon::STriw_imm_abs_cNotPt_V4:
+ case Hexagon::STriw_imm_abs_cdnNotPt_V4:
case Hexagon::STw_GP_cPt_V4:
case Hexagon::STw_GP_cNotPt_V4:
case Hexagon::STw_GP_cdnPt_V4:
@@ -752,6 +782,98 @@
case Hexagon::POST_STwri_cdnNotPt_V4:
return Hexagon::POST_STwri_cdnNotPt_nv_V4;
+// Absolute addressing mode -- global address
+ case Hexagon::STrib_abs_V4:
+ return Hexagon::STrib_abs_nv_V4;
+
+ case Hexagon::STrib_abs_cPt_V4:
+ return Hexagon::STrib_abs_cPt_nv_V4;
+
+ case Hexagon::STrib_abs_cdnPt_V4:
+ return Hexagon::STrib_abs_cdnPt_nv_V4;
+
+ case Hexagon::STrib_abs_cNotPt_V4:
+ return Hexagon::STrib_abs_cNotPt_nv_V4;
+
+ case Hexagon::STrib_abs_cdnNotPt_V4:
+ return Hexagon::STrib_abs_cdnNotPt_nv_V4;
+
+ case Hexagon::STrih_abs_V4:
+ return Hexagon::STrih_abs_nv_V4;
+
+ case Hexagon::STrih_abs_cPt_V4:
+ return Hexagon::STrih_abs_cPt_nv_V4;
+
+ case Hexagon::STrih_abs_cdnPt_V4:
+ return Hexagon::STrih_abs_cdnPt_nv_V4;
+
+ case Hexagon::STrih_abs_cNotPt_V4:
+ return Hexagon::STrih_abs_cNotPt_nv_V4;
+
+ case Hexagon::STrih_abs_cdnNotPt_V4:
+ return Hexagon::STrih_abs_cdnNotPt_nv_V4;
+
+ case Hexagon::STriw_abs_V4:
+ return Hexagon::STriw_abs_nv_V4;
+
+ case Hexagon::STriw_abs_cPt_V4:
+ return Hexagon::STriw_abs_cPt_nv_V4;
+
+ case Hexagon::STriw_abs_cdnPt_V4:
+ return Hexagon::STriw_abs_cdnPt_nv_V4;
+
+ case Hexagon::STriw_abs_cNotPt_V4:
+ return Hexagon::STriw_abs_cNotPt_nv_V4;
+
+ case Hexagon::STriw_abs_cdnNotPt_V4:
+ return Hexagon::STriw_abs_cdnNotPt_nv_V4;
+
+// Absolute addressing mode -- immediate value
+ case Hexagon::STrib_imm_abs_V4:
+ return Hexagon::STrib_imm_abs_nv_V4;
+
+ case Hexagon::STrib_imm_abs_cPt_V4:
+ return Hexagon::STrib_imm_abs_cPt_nv_V4;
+
+ case Hexagon::STrib_imm_abs_cdnPt_V4:
+ return Hexagon::STrib_imm_abs_cdnPt_nv_V4;
+
+ case Hexagon::STrib_imm_abs_cNotPt_V4:
+ return Hexagon::STrib_imm_abs_cNotPt_nv_V4;
+
+ case Hexagon::STrib_imm_abs_cdnNotPt_V4:
+ return Hexagon::STrib_imm_abs_cdnNotPt_nv_V4;
+
+ case Hexagon::STrih_imm_abs_V4:
+ return Hexagon::STrih_imm_abs_nv_V4;
+
+ case Hexagon::STrih_imm_abs_cPt_V4:
+ return Hexagon::STrih_imm_abs_cPt_nv_V4;
+
+ case Hexagon::STrih_imm_abs_cdnPt_V4:
+ return Hexagon::STrih_imm_abs_cdnPt_nv_V4;
+
+ case Hexagon::STrih_imm_abs_cNotPt_V4:
+ return Hexagon::STrih_imm_abs_cNotPt_nv_V4;
+
+ case Hexagon::STrih_imm_abs_cdnNotPt_V4:
+ return Hexagon::STrih_imm_abs_cdnNotPt_nv_V4;
+
+ case Hexagon::STriw_imm_abs_V4:
+ return Hexagon::STriw_imm_abs_nv_V4;
+
+ case Hexagon::STriw_imm_abs_cPt_V4:
+ return Hexagon::STriw_imm_abs_cPt_nv_V4;
+
+ case Hexagon::STriw_imm_abs_cdnPt_V4:
+ return Hexagon::STriw_imm_abs_cdnPt_nv_V4;
+
+ case Hexagon::STriw_imm_abs_cNotPt_V4:
+ return Hexagon::STriw_imm_abs_cNotPt_nv_V4;
+
+ case Hexagon::STriw_imm_abs_cdnNotPt_V4:
+ return Hexagon::STriw_imm_abs_cdnNotPt_nv_V4;
+
case Hexagon::STw_GP_cPt_V4:
return Hexagon::STw_GP_cPt_nv_V4;
@@ -1404,6 +1526,103 @@
return Hexagon::ZXTH_cdnPt_V4;
case Hexagon::ZXTH_cNotPt_V4 :
return Hexagon::ZXTH_cdnNotPt_V4;
+
+ // Load Absolute Addressing.
+ case Hexagon::LDrib_abs_cPt_V4 :
+ return Hexagon::LDrib_abs_cdnPt_V4;
+ case Hexagon::LDrib_abs_cNotPt_V4 :
+ return Hexagon::LDrib_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriub_abs_cPt_V4 :
+ return Hexagon::LDriub_abs_cdnPt_V4;
+ case Hexagon::LDriub_abs_cNotPt_V4 :
+ return Hexagon::LDriub_abs_cdnNotPt_V4;
+
+ case Hexagon::LDrih_abs_cPt_V4 :
+ return Hexagon::LDrih_abs_cdnPt_V4;
+ case Hexagon::LDrih_abs_cNotPt_V4 :
+ return Hexagon::LDrih_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriuh_abs_cPt_V4 :
+ return Hexagon::LDriuh_abs_cdnPt_V4;
+ case Hexagon::LDriuh_abs_cNotPt_V4 :
+ return Hexagon::LDriuh_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriw_abs_cPt_V4 :
+ return Hexagon::LDriw_abs_cdnPt_V4;
+ case Hexagon::LDriw_abs_cNotPt_V4 :
+ return Hexagon::LDriw_abs_cdnNotPt_V4;
+
+ case Hexagon::LDrid_abs_cPt_V4 :
+ return Hexagon::LDrid_abs_cdnPt_V4;
+ case Hexagon::LDrid_abs_cNotPt_V4 :
+ return Hexagon::LDrid_abs_cdnNotPt_V4;
+
+ case Hexagon::LDrib_imm_abs_cPt_V4:
+ return Hexagon::LDrib_imm_abs_cdnPt_V4;
+ case Hexagon::LDrib_imm_abs_cNotPt_V4:
+ return Hexagon::LDrib_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriub_imm_abs_cPt_V4:
+ return Hexagon::LDriub_imm_abs_cdnPt_V4;
+ case Hexagon::LDriub_imm_abs_cNotPt_V4:
+ return Hexagon::LDriub_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::LDrih_imm_abs_cPt_V4:
+ return Hexagon::LDrih_imm_abs_cdnPt_V4;
+ case Hexagon::LDrih_imm_abs_cNotPt_V4:
+ return Hexagon::LDrih_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriuh_imm_abs_cPt_V4:
+ return Hexagon::LDriuh_imm_abs_cdnPt_V4;
+ case Hexagon::LDriuh_imm_abs_cNotPt_V4:
+ return Hexagon::LDriuh_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::LDriw_imm_abs_cPt_V4:
+ return Hexagon::LDriw_imm_abs_cdnPt_V4;
+ case Hexagon::LDriw_imm_abs_cNotPt_V4:
+ return Hexagon::LDriw_imm_abs_cdnNotPt_V4;
+
+ // Store Absolute Addressing.
+ case Hexagon::STrib_abs_cPt_V4 :
+ return Hexagon::STrib_abs_cdnPt_V4;
+ case Hexagon::STrib_abs_cNotPt_V4 :
+ return Hexagon::STrib_abs_cdnNotPt_V4;
+
+ case Hexagon::STrih_abs_cPt_V4 :
+ return Hexagon::STrih_abs_cdnPt_V4;
+ case Hexagon::STrih_abs_cNotPt_V4 :
+ return Hexagon::STrih_abs_cdnNotPt_V4;
+
+ case Hexagon::STriw_abs_cPt_V4 :
+ return Hexagon::STriw_abs_cdnPt_V4;
+ case Hexagon::STriw_abs_cNotPt_V4 :
+ return Hexagon::STriw_abs_cdnNotPt_V4;
+
+ case Hexagon::STrid_abs_cPt_V4 :
+ return Hexagon::STrid_abs_cdnPt_V4;
+ case Hexagon::STrid_abs_cNotPt_V4 :
+ return Hexagon::STrid_abs_cdnNotPt_V4;
+
+ case Hexagon::STrib_imm_abs_cPt_V4:
+ return Hexagon::STrib_imm_abs_cdnPt_V4;
+ case Hexagon::STrib_imm_abs_cNotPt_V4:
+ return Hexagon::STrib_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::STrih_imm_abs_cPt_V4:
+ return Hexagon::STrih_imm_abs_cdnPt_V4;
+ case Hexagon::STrih_imm_abs_cNotPt_V4:
+ return Hexagon::STrih_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::STriw_imm_abs_cPt_V4:
+ return Hexagon::STriw_imm_abs_cdnPt_V4;
+ case Hexagon::STriw_imm_abs_cNotPt_V4:
+ return Hexagon::STriw_imm_abs_cdnNotPt_V4;
+
+ case Hexagon::TFRI_cPt_V4:
+ return Hexagon::TFRI_cdnPt_V4;
+ case Hexagon::TFRI_cNotPt_V4:
+ return Hexagon::TFRI_cdnNotPt_V4;
}
}
@@ -1431,7 +1650,6 @@
return false;
}
-
// Promote an instructiont to its .new form.
// At this time, we have already made a call to CanPromoteToDotNew
// and made sure that it can *indeed* be promoted.
@@ -2140,6 +2358,159 @@
case Hexagon::POST_STdri_cdnNotPt_V4 :
return Hexagon::POST_STdri_cNotPt;
+// Absolute addressing mode - global address
+ case Hexagon::STrib_abs_nv_V4:
+ return Hexagon::STrib_abs_V4;
+
+ case Hexagon::STrib_abs_cdnPt_V4:
+ case Hexagon::STrib_abs_cPt_nv_V4:
+ case Hexagon::STrib_abs_cdnPt_nv_V4:
+ return Hexagon::STrib_abs_cPt_V4;
+
+ case Hexagon::STrib_abs_cdnNotPt_V4:
+ case Hexagon::STrib_abs_cNotPt_nv_V4:
+ case Hexagon::STrib_abs_cdnNotPt_nv_V4:
+ return Hexagon::STrib_abs_cNotPt_V4;
+
+ case Hexagon::STrih_abs_nv_V4:
+ return Hexagon::STrih_abs_V4;
+
+ case Hexagon::STrih_abs_cdnPt_V4:
+ case Hexagon::STrih_abs_cPt_nv_V4:
+ case Hexagon::STrih_abs_cdnPt_nv_V4:
+ return Hexagon::STrih_abs_cPt_V4;
+
+ case Hexagon::STrih_abs_cdnNotPt_V4:
+ case Hexagon::STrih_abs_cNotPt_nv_V4:
+ case Hexagon::STrih_abs_cdnNotPt_nv_V4:
+ return Hexagon::STrih_abs_cNotPt_V4;
+
+ case Hexagon::STriw_abs_nv_V4:
+ return Hexagon::STriw_abs_V4;
+
+ case Hexagon::STriw_abs_cdnPt_V4:
+ case Hexagon::STriw_abs_cPt_nv_V4:
+ case Hexagon::STriw_abs_cdnPt_nv_V4:
+ return Hexagon::STriw_abs_cPt_V4;
+
+ case Hexagon::STriw_abs_cdnNotPt_V4:
+ case Hexagon::STriw_abs_cNotPt_nv_V4:
+ case Hexagon::STriw_abs_cdnNotPt_nv_V4:
+ return Hexagon::STriw_abs_cNotPt_V4;
+
+ case Hexagon::STrid_abs_cdnPt_V4:
+ return Hexagon::STrid_abs_cPt_V4;
+
+ case Hexagon::STrid_abs_cdnNotPt_V4:
+ return Hexagon::STrid_abs_cNotPt_V4;
+
+// Absolute addressing mode - immediate values
+ case Hexagon::STrib_imm_abs_nv_V4:
+ return Hexagon::STrib_imm_abs_V4;
+
+ case Hexagon::STrib_imm_abs_cdnPt_V4:
+ case Hexagon::STrib_imm_abs_cPt_nv_V4:
+ case Hexagon::STrib_imm_abs_cdnPt_nv_V4:
+ return Hexagon::STrib_imm_abs_cPt_V4;
+
+ case Hexagon::STrib_imm_abs_cdnNotPt_V4:
+ case Hexagon::STrib_imm_abs_cNotPt_nv_V4:
+ case Hexagon::STrib_imm_abs_cdnNotPt_nv_V4:
+ return Hexagon::STrib_imm_abs_cNotPt_V4;
+
+ case Hexagon::STrih_imm_abs_nv_V4:
+ return Hexagon::STrih_imm_abs_V4;
+
+ case Hexagon::STrih_imm_abs_cdnPt_V4:
+ case Hexagon::STrih_imm_abs_cPt_nv_V4:
+ case Hexagon::STrih_imm_abs_cdnPt_nv_V4:
+ return Hexagon::STrih_imm_abs_cPt_V4;
+
+ case Hexagon::STrih_imm_abs_cdnNotPt_V4:
+ case Hexagon::STrih_imm_abs_cNotPt_nv_V4:
+ case Hexagon::STrih_imm_abs_cdnNotPt_nv_V4:
+ return Hexagon::STrih_imm_abs_cNotPt_V4;
+
+ case Hexagon::STriw_imm_abs_nv_V4:
+ return Hexagon::STriw_imm_abs_V4;
+
+ case Hexagon::STriw_imm_abs_cdnPt_V4:
+ case Hexagon::STriw_imm_abs_cPt_nv_V4:
+ case Hexagon::STriw_imm_abs_cdnPt_nv_V4:
+ return Hexagon::STriw_imm_abs_cPt_V4;
+
+ case Hexagon::STriw_imm_abs_cdnNotPt_V4:
+ case Hexagon::STriw_imm_abs_cNotPt_nv_V4:
+ case Hexagon::STriw_imm_abs_cdnNotPt_nv_V4:
+ return Hexagon::STriw_imm_abs_cNotPt_V4;
+
+ // Load - absolute set addressing
+ case Hexagon::LDrib_abs_cdnPt_V4:
+ return Hexagon::LDrib_abs_cPt_V4;
+
+ case Hexagon::LDrib_abs_cdnNotPt_V4:
+ return Hexagon::LDrib_abs_cNotPt_V4;
+
+ case Hexagon::LDriub_abs_cdnPt_V4:
+ return Hexagon::LDriub_abs_cPt_V4;
+
+ case Hexagon::LDriub_abs_cdnNotPt_V4:
+ return Hexagon::LDriub_abs_cNotPt_V4;
+
+ case Hexagon::LDrih_abs_cdnPt_V4:
+ return Hexagon::LDrih_abs_cPt_V4;
+
+ case Hexagon::LDrih_abs_cdnNotPt_V4:
+ return Hexagon::LDrih_abs_cNotPt_V4;
+
+ case Hexagon::LDriuh_abs_cdnPt_V4:
+ return Hexagon::LDriuh_abs_cPt_V4;
+
+ case Hexagon::LDriuh_abs_cdnNotPt_V4:
+ return Hexagon::LDriuh_abs_cNotPt_V4;
+
+ case Hexagon::LDriw_abs_cdnPt_V4:
+ return Hexagon::LDriw_abs_cPt_V4;
+
+ case Hexagon::LDriw_abs_cdnNotPt_V4:
+ return Hexagon::LDriw_abs_cNotPt_V4;
+
+ case Hexagon::LDrid_abs_cdnPt_V4:
+ return Hexagon::LDrid_abs_cPt_V4;
+
+ case Hexagon::LDrid_abs_cdnNotPt_V4:
+ return Hexagon::LDrid_abs_cNotPt_V4;
+
+ case Hexagon::LDrib_imm_abs_cdnPt_V4:
+ return Hexagon::LDrib_imm_abs_cPt_V4;
+
+ case Hexagon::LDrib_imm_abs_cdnNotPt_V4:
+ return Hexagon::LDrib_imm_abs_cNotPt_V4;
+
+ case Hexagon::LDriub_imm_abs_cdnPt_V4:
+ return Hexagon::LDriub_imm_abs_cPt_V4;
+
+ case Hexagon::LDriub_imm_abs_cdnNotPt_V4:
+ return Hexagon::LDriub_imm_abs_cNotPt_V4;
+
+ case Hexagon::LDrih_imm_abs_cdnPt_V4:
+ return Hexagon::LDrih_imm_abs_cPt_V4;
+
+ case Hexagon::LDrih_imm_abs_cdnNotPt_V4:
+ return Hexagon::LDrih_imm_abs_cNotPt_V4;
+
+ case Hexagon::LDriuh_imm_abs_cdnPt_V4:
+ return Hexagon::LDriuh_imm_abs_cPt_V4;
+
+ case Hexagon::LDriuh_imm_abs_cdnNotPt_V4:
+ return Hexagon::LDriuh_imm_abs_cNotPt_V4;
+
+ case Hexagon::LDriw_imm_abs_cdnPt_V4:
+ return Hexagon::LDriw_imm_abs_cPt_V4;
+
+ case Hexagon::LDriw_imm_abs_cdnNotPt_V4:
+ return Hexagon::LDriw_imm_abs_cNotPt_V4;
+
case Hexagon::STd_GP_cdnPt_V4 :
return Hexagon::STd_GP_cPt_V4;
@@ -2298,6 +2669,46 @@
case Hexagon::ZXTB_cdnPt_V4 :
case Hexagon::ZXTH_cPt_V4 :
case Hexagon::ZXTH_cdnPt_V4 :
+
+ case Hexagon::LDrib_abs_cPt_V4 :
+ case Hexagon::LDrib_abs_cdnPt_V4:
+ case Hexagon::LDriub_abs_cPt_V4 :
+ case Hexagon::LDriub_abs_cdnPt_V4:
+ case Hexagon::LDrih_abs_cPt_V4 :
+ case Hexagon::LDrih_abs_cdnPt_V4:
+ case Hexagon::LDriuh_abs_cPt_V4 :
+ case Hexagon::LDriuh_abs_cdnPt_V4:
+ case Hexagon::LDriw_abs_cPt_V4 :
+ case Hexagon::LDriw_abs_cdnPt_V4:
+ case Hexagon::LDrid_abs_cPt_V4 :
+ case Hexagon::LDrid_abs_cdnPt_V4:
+
+ case Hexagon::LDrib_imm_abs_cPt_V4 :
+ case Hexagon::LDrib_imm_abs_cdnPt_V4:
+ case Hexagon::LDriub_imm_abs_cPt_V4 :
+ case Hexagon::LDriub_imm_abs_cdnPt_V4:
+ case Hexagon::LDrih_imm_abs_cPt_V4 :
+ case Hexagon::LDrih_imm_abs_cdnPt_V4:
+ case Hexagon::LDriuh_imm_abs_cPt_V4 :
+ case Hexagon::LDriuh_imm_abs_cdnPt_V4:
+ case Hexagon::LDriw_imm_abs_cPt_V4 :
+ case Hexagon::LDriw_imm_abs_cdnPt_V4:
+
+ case Hexagon::STrib_abs_cPt_V4:
+ case Hexagon::STrib_abs_cdnPt_V4:
+ case Hexagon::STrih_abs_cPt_V4:
+ case Hexagon::STrih_abs_cdnPt_V4:
+ case Hexagon::STriw_abs_cPt_V4:
+ case Hexagon::STriw_abs_cdnPt_V4:
+ case Hexagon::STrid_abs_cPt_V4:
+ case Hexagon::STrid_abs_cdnPt_V4:
+ case Hexagon::STrib_imm_abs_cPt_V4:
+ case Hexagon::STrib_imm_abs_cdnPt_V4:
+ case Hexagon::STrih_imm_abs_cPt_V4:
+ case Hexagon::STrih_imm_abs_cdnPt_V4:
+ case Hexagon::STriw_imm_abs_cPt_V4:
+ case Hexagon::STriw_imm_abs_cdnPt_V4:
+
case Hexagon::LDrid_GP_cPt_V4 :
case Hexagon::LDrib_GP_cPt_V4 :
case Hexagon::LDriub_GP_cPt_V4 :
@@ -2470,6 +2881,45 @@
case Hexagon::ZXTH_cNotPt_V4 :
case Hexagon::ZXTH_cdnNotPt_V4 :
+ case Hexagon::LDrib_abs_cNotPt_V4:
+ case Hexagon::LDrib_abs_cdnNotPt_V4:
+ case Hexagon::LDriub_abs_cNotPt_V4 :
+ case Hexagon::LDriub_abs_cdnNotPt_V4:
+ case Hexagon::LDrih_abs_cNotPt_V4 :
+ case Hexagon::LDrih_abs_cdnNotPt_V4:
+ case Hexagon::LDriuh_abs_cNotPt_V4 :
+ case Hexagon::LDriuh_abs_cdnNotPt_V4:
+ case Hexagon::LDriw_abs_cNotPt_V4 :
+ case Hexagon::LDriw_abs_cdnNotPt_V4:
+ case Hexagon::LDrid_abs_cNotPt_V4 :
+ case Hexagon::LDrid_abs_cdnNotPt_V4:
+
+ case Hexagon::LDrib_imm_abs_cNotPt_V4:
+ case Hexagon::LDrib_imm_abs_cdnNotPt_V4:
+ case Hexagon::LDriub_imm_abs_cNotPt_V4 :
+ case Hexagon::LDriub_imm_abs_cdnNotPt_V4:
+ case Hexagon::LDrih_imm_abs_cNotPt_V4 :
+ case Hexagon::LDrih_imm_abs_cdnNotPt_V4:
+ case Hexagon::LDriuh_imm_abs_cNotPt_V4 :
+ case Hexagon::LDriuh_imm_abs_cdnNotPt_V4:
+ case Hexagon::LDriw_imm_abs_cNotPt_V4 :
+ case Hexagon::LDriw_imm_abs_cdnNotPt_V4:
+
+ case Hexagon::STrib_abs_cNotPt_V4:
+ case Hexagon::STrib_abs_cdnNotPt_V4:
+ case Hexagon::STrih_abs_cNotPt_V4:
+ case Hexagon::STrih_abs_cdnNotPt_V4:
+ case Hexagon::STriw_abs_cNotPt_V4:
+ case Hexagon::STriw_abs_cdnNotPt_V4:
+ case Hexagon::STrid_abs_cNotPt_V4:
+ case Hexagon::STrid_abs_cdnNotPt_V4:
+ case Hexagon::STrib_imm_abs_cNotPt_V4:
+ case Hexagon::STrib_imm_abs_cdnNotPt_V4:
+ case Hexagon::STrih_imm_abs_cNotPt_V4:
+ case Hexagon::STrih_imm_abs_cdnNotPt_V4:
+ case Hexagon::STriw_imm_abs_cNotPt_V4:
+ case Hexagon::STriw_imm_abs_cdnNotPt_V4:
+
case Hexagon::LDrid_GP_cNotPt_V4 :
case Hexagon::LDrib_GP_cNotPt_V4 :
case Hexagon::LDriub_GP_cNotPt_V4 :
@@ -3503,6 +3953,7 @@
&& QRI->Subtarget.hasV4TOps()
&& J->getOpcode() == Hexagon::ALLOCFRAME
&& (I->getOpcode() == Hexagon::STrid
+ || I->getOpcode() == Hexagon::STriw_indexed
|| I->getOpcode() == Hexagon::STriw
|| I->getOpcode() == Hexagon::STrib)
&& I->getOperand(0).getReg() == QRI->getStackRegister()
@@ -3580,7 +4031,7 @@
MachineInstr *nvjMI = MII;
assert(ResourceTracker->canReserveResources(MI));
ResourceTracker->reserveResources(MI);
- if (QII->isExtended(MI) &&
+ if ((QII->isExtended(MI) || QII->isConstExtended(MI)) &&
!tryAllocateResourcesForConstExt(MI)) {
endPacket(MBB, MI);
ResourceTracker->reserveResources(MI);
@@ -3616,7 +4067,7 @@
CurrentPacketMIs.push_back(MI);
CurrentPacketMIs.push_back(nvjMI);
} else {
- if ( QII->isExtended(MI)
+ if ( (QII->isExtended(MI) || QII->isConstExtended(MI))
&& ( !tryAllocateResourcesForConstExt(MI)
|| !ResourceTracker->canReserveResources(MI)))
{