[llvm-branch-commits] [llvm] [RISCV] Support select optimization (PR #80124)

Pengcheng Wang via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Jul 4 00:53:25 PDT 2024


wangpc-pp wrote:

Ping.
I'd like to push this forward because we don't take branch probabilities into consideration now.
Example: https://godbolt.org/z/doGhYadKM
We should use branches instead of selects in this case and this patch (the enabling of SelectOpt) will optimize this.
`clang -O3 -march=rv64gc_zba_zbb_zbc_zbs_zicond -Xclang -target-feature -Xclang +enable-select-opt -Xclang -target-feature -Xclang +predictable-select-expensive`
```
New Select group with
    %. = select i1 %cmp, i32 5, i32 13, !prof !9
Analyzing select group containing   %. = select i1 %cmp, i32 5, i32 13, !prof !9
Converted to branch because of highly predictable branch.
```
```asm
func0:                                  # @func0
	li	a2, 5
	mul	a1, a0, a0
	bge	a2, a0, .LBB0_2
	addw	a0, a1, a2
	ret
.LBB0_2:                                # %select.false
	li	a2, 13
	addw	a0, a1, a2
	ret
```

https://github.com/llvm/llvm-project/pull/80124


More information about the llvm-branch-commits mailing list