summaryrefslogtreecommitdiff
path: root/test/CodeGen/Hexagon
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-10-25 18:46:40 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-10-25 18:46:40 +0000
commitc936ad38895bb014817ee9210c3c1eee2bd4fae6 (patch)
tree654f2d7fb91233301900201b6de31f42cfad242b /test/CodeGen/Hexagon
parent74a12b374012835b2c76b37b5f0b0deb633880e5 (diff)
[Hexagon] Account for negative offset when limiting max deviation
In getOffsetRange, Max can be set to 0 to force the extender replacement to be at or below the original value. This would cause the new offset to be non-negative, which is preferred for memory instructions (to reduce the likelihood of it getting constant-extended due to predication). The problem happens when the range is shifted by an offset (present in the instruction being examined) and the offset is negative. The entire range for the allowable deviation will then be strictly negative. This creates a problem, since 0 is assumed to be a valid deviation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316601 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Hexagon')
-rw-r--r--test/CodeGen/Hexagon/cext-opt-range-offset.mir43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/CodeGen/Hexagon/cext-opt-range-offset.mir b/test/CodeGen/Hexagon/cext-opt-range-offset.mir
new file mode 100644
index 00000000000..6fb53489a45
--- /dev/null
+++ b/test/CodeGen/Hexagon/cext-opt-range-offset.mir
@@ -0,0 +1,43 @@
+# RUN: llc -march=hexagon -run-pass hexagon-cext-opt %s -o - | FileCheck %s
+
+# Check that this testcase does not crash.
+# CHECK: L4_and_memopw_io
+
+---
+name: fred
+tracksRegLiveness: true
+registers:
+ - { id: 0, class: intregs }
+ - { id: 1, class: intregs }
+ - { id: 2, class: intregs }
+ - { id: 3, class: intregs }
+ - { id: 4, class: predregs }
+ - { id: 5, class: intregs }
+ - { id: 6, class: intregs }
+body: |
+ bb.0:
+ successors: %bb.1
+ %0 = A2_tfrsi -360184608
+ %1 = L2_loadri_io %0, -1024
+
+ bb.1:
+ successors: %bb.2
+ %2 = A2_tfrsi -234944641
+ %3 = A2_tfrsi -360185632
+ L4_and_memopw_io %3, 0, %2
+
+ bb.2:
+ successors: %bb.3, %bb.4
+ %4 = IMPLICIT_DEF
+ J2_jumpt %4, %bb.4, implicit-def %pc
+ J2_jump %bb.3, implicit-def %pc
+
+ bb.3:
+ successors: %bb.4
+
+ bb.4:
+ successors: %bb.4
+ %5 = A2_tfrsi -234944521
+ %6 = A2_tfrsi -360185632
+ L4_and_memopw_io %6, 0, %5
+...