diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-06-19 17:26:20 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-06-19 17:26:20 +0000 |
commit | 5c2944c4f246fbd24c97c2d7a80a21d49d514745 (patch) | |
tree | 9e345b3470a4c8e6258bb33e1ff78baba028c48d | |
parent | 61547259de2cb70c0343e5cf30596b9fecfa4c7a (diff) | |
download | bcm5719-llvm-5c2944c4f246fbd24c97c2d7a80a21d49d514745.tar.gz bcm5719-llvm-5c2944c4f246fbd24c97c2d7a80a21d49d514745.zip |
[Hexagon] Enforce restrictions on packetizing cache instructions
llvm-svn: 335061
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/Hexagon/packetize-dccleana.mir | 16 |
2 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp b/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp index e44c7237a7e..ae974712e81 100644 --- a/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp +++ b/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp @@ -1115,6 +1115,10 @@ static bool cannotCoexistAsymm(const MachineInstr &MI, const MachineInstr &MJ, case Hexagon::S4_stored_locked: case Hexagon::L2_loadw_locked: case Hexagon::L4_loadd_locked: + case Hexagon::Y2_dccleana: + case Hexagon::Y2_dccleaninva: + case Hexagon::Y2_dcinva: + case Hexagon::Y2_dczeroa: case Hexagon::Y4_l2fetch: case Hexagon::Y5_l2fetch: { // These instructions can only be grouped with ALU32 or non-floating-point diff --git a/llvm/test/CodeGen/Hexagon/packetize-dccleana.mir b/llvm/test/CodeGen/Hexagon/packetize-dccleana.mir new file mode 100644 index 00000000000..a26fabd3007 --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/packetize-dccleana.mir @@ -0,0 +1,16 @@ +# RUN: llc -march=hexagon -run-pass=hexagon-packetizer -o - %s | FileCheck %s + +# Make sure that the load is not packetized together with the dccleana. +# CHECK-NOT: BUNDLE + +--- +name: foo +tracksRegLiveness: true +fixedStack: +- { id: 0, offset: 0, size: 16, alignment: 8, isImmutable: true } +body: | + bb.0: + liveins: $r1 + Y2_dccleana killed renamable $r1 + $d8 = L2_loadrd_io killed $r29, 8 :: (load 8 from %fixed-stack.0) +... |