diff options
author | LU-JOHN <John.Lu@amd.com> | 2025-09-25 13:08:30 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-25 13:08:30 -0500 |
commit | c3cbd27d005b86ea5c5a375c21b86e6c2110e198 (patch) | |
tree | bd13f52514c8be8854f4d0a61f9b1697e0a1582f /llvm/unittests/Support/CommandLineTest.cpp | |
parent | 62660e59d9365a2c77724c7cf05986eef7c2354a (diff) | |
download | llvm-c3cbd27d005b86ea5c5a375c21b86e6c2110e198.zip llvm-c3cbd27d005b86ea5c5a375c21b86e6c2110e198.tar.gz llvm-c3cbd27d005b86ea5c5a375c21b86e6c2110e198.tar.bz2 |
[AMDGPU] Calc IsVALU correctly during UADDO/USUBO selection (#159814)
Fix two bugs. The first bug hid the second bug.
1. Calculate IsVALU correctly during UADDO/USUBO selection. IsVALU
should be false if the carryout users are UADDO_CARRY/USUBO_CARRY.
However instruction selection visits uses before defs, so the
UADDO_CARRY/USUBO_CARRY nodes are normally (probably always) already
converted to S_ADD_CO_PSEUDO/S_SUB_CO_PSEUDO. Fix to check for these
machine opcodes.
2. Without this fix, UADDO/USUBO selection will always select the VALU
instructions V_ADD_CO__U32_e64/V_SUB_CO_U32_e64.
S_UADDO_PSEUDO/S_USUBO_PSEUDO were never selected in the CodeGen/AMDGPU
tests. Thus, S_UADDO_PSEUDO/S_USUBO_PSEUDO cases were never hit in
EmitInstrWithCustomInserter. The code generation for
S_UADDO_PSEUDO/S_USUBO_PSEUDO had a bug where it could not handle code
generation for 32-bit $scc_out.
---------
Signed-off-by: John Lu <John.Lu@amd.com>
Co-authored-by: Matt Arsenault <arsenm2@gmail.com>
Diffstat (limited to 'llvm/unittests/Support/CommandLineTest.cpp')
0 files changed, 0 insertions, 0 deletions