summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
index f668372ce00..b084e046630 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
@@ -1405,6 +1405,31 @@ bool HexagonInstrInfo::isPredicable(const MachineInstr &MI) const {
if (!Subtarget.usePredicatedCalls())
return false;
}
+
+ // HVX loads are not predicable on v60, but are on v62.
+ if (!Subtarget.hasV62TOps()) {
+ switch (MI.getOpcode()) {
+ case Hexagon::V6_vL32b_ai:
+ case Hexagon::V6_vL32b_pi:
+ case Hexagon::V6_vL32b_ppu:
+ case Hexagon::V6_vL32b_cur_ai:
+ case Hexagon::V6_vL32b_cur_pi:
+ case Hexagon::V6_vL32b_cur_ppu:
+ case Hexagon::V6_vL32b_nt_ai:
+ case Hexagon::V6_vL32b_nt_pi:
+ case Hexagon::V6_vL32b_nt_ppu:
+ case Hexagon::V6_vL32b_tmp_ai:
+ case Hexagon::V6_vL32b_tmp_pi:
+ case Hexagon::V6_vL32b_tmp_ppu:
+ case Hexagon::V6_vL32b_nt_cur_ai:
+ case Hexagon::V6_vL32b_nt_cur_pi:
+ case Hexagon::V6_vL32b_nt_cur_ppu:
+ case Hexagon::V6_vL32b_nt_tmp_ai:
+ case Hexagon::V6_vL32b_nt_tmp_pi:
+ case Hexagon::V6_vL32b_nt_tmp_ppu:
+ return false;
+ }
+ }
return true;
}
OpenPOWER on IntegriCloud