diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp | 25 |
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; } |