diff options
author | Alexandre Oliva <oliva@adacore.com> | 2025-04-21 22:48:55 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2025-04-21 22:48:55 -0300 |
commit | 14fa625bcb91028cb97f3575d2e394401bbb4a3a (patch) | |
tree | e13b770fe66241d9ce5a3ebf561ee2f1f1268f0e /libjava/java/lang/String.java | |
parent | 5c430061648071408996c44f7094f7af7aae0868 (diff) | |
download | gcc-14fa625bcb91028cb97f3575d2e394401bbb4a3a.zip gcc-14fa625bcb91028cb97f3575d2e394401bbb4a3a.tar.gz gcc-14fa625bcb91028cb97f3575d2e394401bbb4a3a.tar.bz2 |
[riscv] vec_dup immediate constants in pred_broadcast expand [PR118182]
pr118182-2.c fails on gcc-14 because it lacks the late_combine passes,
particularly the one that runs after register allocation.
Even in the trunk, the predicate broadcast for the add reduction is
expanded and register-allocated as _zvfh, taking up an unneeded scalar
register to hold the constant to be vec_duplicated.
It is the late combine pass after register allocation that substitutes
this unneeded scalar register into the vec_duplicate, resolving to the
_zero or _imm insns.
It's easy enough and more efficient to expand pred_broadcast to the
insns that take the already-duplicated vector constant, when the
operands satisfy the predicates of the _zero or _imm insns.
for gcc/ChangeLog
PR target/118182
* config/riscv/vector.md (@pred_broadcast<mode>): Expand to
_zero and _imm variants without vec_duplicate.
Diffstat (limited to 'libjava/java/lang/String.java')
0 files changed, 0 insertions, 0 deletions