Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove support for
Zicond
; switch to xtheadcondmov
The `Zicond` extension ends up producing pretty bad code. For example, the following piece of code: ``` fn func(a0: u32, a1: u32, a2: u32) -> u32 { if a0 == 0 { a1 } else { a2 } } ``` with `Zicond` produces *two* conditional moves and one `or`, while with the `xtheadcondmov` it is a single conditional move and a register to register move, as you'd expect. The `Zicond` might be more in-line with RISC-V's philosophy of not requiring more than two read ports per instruction, but we really don't care, and this *does* produce a measurable and significant performance difference.
- Loading branch information