diff options
author | Krzysztof Parzyszek <kparzysz@quicinc.com> | 2023-06-19 08:18:05 -0700 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@quicinc.com> | 2023-06-19 08:22:41 -0700 |
commit | 734881a6d546c6065a4aa43c3d876337b8b2a263 (patch) | |
tree | c271b71252b37025b3b05ea1d94c69ff9a51de89 /llvm/unittests/Analysis/ValueTrackingTest.cpp | |
parent | 6c93b0d6a6fa885ab0c8e7edce1af8a99008321c (diff) | |
download | llvm-734881a6d546c6065a4aa43c3d876337b8b2a263.zip llvm-734881a6d546c6065a4aa43c3d876337b8b2a263.tar.gz llvm-734881a6d546c6065a4aa43c3d876337b8b2a263.tar.bz2 |
[Hexagon] Fix range checks for immediate operands
The output assembly (textual) contains the instruction
r29 = add(r29,#4294967136)
The value 4294967136 is -160 when interpreted as a signed 32-bit
integer, so it fits in the range of the immediate operand without
a constant extender. The range check in HexagonInstrInfo was putting
the operand value into an int variable, reporting no need for an
extender. This resulted in a packet with 4 instructions, including
the "add". The corresponding check in HexagonMCInstrInfo was using
an int64_t variable, causing the range check to fail, and an extender
to be emitted when lowering to MCInst, resulting in a packet with
too many instructions.
Diffstat (limited to 'llvm/unittests/Analysis/ValueTrackingTest.cpp')
0 files changed, 0 insertions, 0 deletions