summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-06-19 17:26:20 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-06-19 17:26:20 +0000
commit5c2944c4f246fbd24c97c2d7a80a21d49d514745 (patch)
tree9e345b3470a4c8e6258bb33e1ff78baba028c48d
parent61547259de2cb70c0343e5cf30596b9fecfa4c7a (diff)
downloadbcm5719-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.cpp4
-rw-r--r--llvm/test/CodeGen/Hexagon/packetize-dccleana.mir16
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)
+...
OpenPOWER on IntegriCloud