diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-10-25 18:46:40 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-10-25 18:46:40 +0000 |
commit | c936ad38895bb014817ee9210c3c1eee2bd4fae6 (patch) | |
tree | 654f2d7fb91233301900201b6de31f42cfad242b /test/CodeGen/Hexagon | |
parent | 74a12b374012835b2c76b37b5f0b0deb633880e5 (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.mir | 43 |
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 +... |