Hi Jeff,
It looks like this patch's gcc.target/riscv/round_64.c testcase doesn't
pass when run with newlib.
It also introduced:
FAIL: gcc.target/riscv/rvv/autovec/unop/math-nearbyint-run-2.c execution
test
on rv32gcv newlib/linux.
Precommit with a few targets:
https://github.com/ewlu/gcc-precommit-ci/issues/1454
Postcommit with all targets:
https://github.com/patrick-rivos/gcc-postcommit-ci/issues/853
Untrimmed postcommit output:
https://github.com/patrick-rivos/gcc-postcommit-ci/actions/runs/8899731577/job/24456991643#step:8:132
Thanks,
Patrick
On 4/30/24 08:46, Jeff Law wrote:
This is almost exclusively Jivan's work. His original post:
https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg336483.html
This patch is primarily meant to improve the code we generate for FP
rounding such as ceil/floor. It also addresses some unnecessary sign
extensions in the same areas.
RISC-V's FP conversions have a bit of undesirable behavior that make
them non-suitable as-is for ceil/floor and other related functions.
These deficiencies are addressed in the Zfa extension, but there's no
reason not to pick up a nice improvement when we can.
Basically we can still use the basic FP conversions for floor/ceil and
friends when we don't care about inexact exceptions by checking for
the special cases first, then emitting the conversion when the special
cases don't apply. That's still much faster than calling into glibc.
The redundant sign extensions are eliminated using the same trick
Jivan added last year, just in a few more places ;-)
This eliminates roughly 10% of the dynamic instruction count for
imagick. But more importantly it's about a 17% performance
improvement for that workload within spec.
This has been bootstrapped as well as regression tested in a cross
environment. It's also successfully built & run specint/specfp
correctly.
Pushing to the trunk and the coordination branch momentarily.
Jeff