aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.cc
diff options
context:
space:
mode:
authorRobin Dapp <rdapp.gcc@gmail.com>2025-02-15 09:21:34 -0700
committerJeff Law <jlaw@ventanamicro.com>2025-02-15 09:21:34 -0700
commitd7a835a5309db81a129b0151c7e5deb25b0ec55c (patch)
tree7f8dbe5d5c78c7b25f663932b3ee25943146b8f6 /gcc/fortran/trans-expr.cc
parent11cc336eed42892b7cfc2bfcf7b3f3f86f61787a (diff)
downloadgcc-d7a835a5309db81a129b0151c7e5deb25b0ec55c.zip
gcc-d7a835a5309db81a129b0151c7e5deb25b0ec55c.tar.gz
gcc-d7a835a5309db81a129b0151c7e5deb25b0ec55c.tar.bz2
[PATCH] RISC-V: Fix some widen-complicate tests.
this patch adds two bridge patterns for combine in order to fix the widen-complicate tests that regressed since GCC 14. They key is to allow combination with a ephemeral binary-operation insn that widens its first operand. This can subsequently be combined two a double-widening insn. If the combination doesn't happen we fall back to the original non-combined two insns. We have been doing the same thing for multiply-add patterns for a while. There are still remaining tests of a similar kind that fail. The issue there is indeed that combine (now) lacks the capability to continue in cases where there is no apparent local progress but two or three seemingly no-progress combinations would help us get a better "global" result. late_combine cannot rescue us here either because it only performs a propagation if the source can be propagated into all its uses which is not the case here. What we might need to do is create internal functions for those widening operations and combine/simplify at gimple-level already. I have done testing on rv64gcv_zvl512b but on an older local commit. Curious what the CI has to say about it now. Regards Robin gcc/ChangeLog: * config/riscv/autovec-opt.md (*single_widen_first_<any_widen_binop:optab><any_extend:su><mode>): New combine "bridge" pattern.
Diffstat (limited to 'gcc/fortran/trans-expr.cc')
0 files changed, 0 insertions, 0 deletions