diff options
| author | Craig Topper <craig.topper@sifive.com> | 2026-02-09 21:48:14 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-09 21:48:14 -0800 |
| commit | f33ea53451f01bd82cbe7bc7f795f5b4ba731f2b (patch) | |
| tree | 4200be984b08a680e795b7d1aa23cae1e51a3db0 /lldb/test/Shell/ScriptInterpreter/Python | |
| parent | a1acc4ab9fa7bef5684d126ab0c29b035402d664 (diff) | |
| download | llvm-f33ea53451f01bd82cbe7bc7f795f5b4ba731f2b.zip llvm-f33ea53451f01bd82cbe7bc7f795f5b4ba731f2b.tar.gz llvm-f33ea53451f01bd82cbe7bc7f795f5b4ba731f2b.tar.bz2 | |
[RISCV] Remove redundant czero in multi-word comparisons (#180485)
When comparing multi-word integers with Zicond, we generate:
(or (czero_eqz (lo1 < lo2), (hi1 == hi2)),
(czero_nez (hi1 < hi2), (hi1 == hi2)))
The czero_nez is redundant because when hi1 == hi2 is true, hi1 < hi2 is
already 0. This patch adds a DAG combine to recognize:
czero_nez (setcc X, Y, CC), (setcc X, Y, eq) -> (setcc X, Y, CC)
when CC is a strict inequality (lt, gt, ult, ugt).
This saves one instruction in 128-bit comparisons on RV64 with Zicond.
Note the czero_nez becomes a czero.eqz in the final assembly because the
seteq is replaced by an xor that produces 0 when the values are equal.
Part of #179584
Assisted-by: claude
Diffstat (limited to 'lldb/test/Shell/ScriptInterpreter/Python')
0 files changed, 0 insertions, 0 deletions
