This patch set includes small cleanups and code generation improvements I implemented during stages 3 and 4.
All patches have been regression-tested individually for pru-unknown-elf while being developed. And the entire set was tested again on GCC 15 mainline. Dimitar Dimitrov (9): pru: Implement TARGET_ADDRESS_COST pru: Implement zero fill for 64-bit registers pru: Optimize the extzv and insv patterns pru: Add pattern variants for zero extending destination pru: Skip register save if function will not return pru: Drop usage of ATTRIBUTE_UNUSED pru: Use HOST_WIDE_INT_1U macro pru: Refactor to use passes definition file pru: New validation pass for minrt gcc/config/pru/alu-zext.md | 38 +++++- gcc/config/pru/pru-passes.cc | 96 ++++++++++--- gcc/config/pru/pru-passes.def | 29 ++++ gcc/config/pru/pru-pragma.cc | 2 +- gcc/config/pru/pru-protos.h | 3 +- gcc/config/pru/pru.cc | 58 +++++--- gcc/config/pru/pru.md | 128 +++++++++++++++--- gcc/config/pru/t-pru | 2 + gcc/testsuite/g++.target/pru/minrt-1.cc | 10 ++ gcc/testsuite/g++.target/pru/minrt-2.cc | 10 ++ gcc/testsuite/g++.target/pru/minrt-3.cc | 9 ++ gcc/testsuite/g++.target/pru/pru.exp | 34 +++++ gcc/testsuite/gcc.target/pru/ashiftrt.c | 2 +- gcc/testsuite/gcc.target/pru/extzv-1.c | 14 ++ gcc/testsuite/gcc.target/pru/extzv-2.c | 15 ++ gcc/testsuite/gcc.target/pru/extzv-3.c | 13 ++ gcc/testsuite/gcc.target/pru/insv-1.c | 14 ++ gcc/testsuite/gcc.target/pru/insv-2.c | 14 ++ gcc/testsuite/gcc.target/pru/insv-3.c | 14 ++ gcc/testsuite/gcc.target/pru/insv-4.c | 14 ++ gcc/testsuite/gcc.target/pru/minrt-1.c | 10 ++ gcc/testsuite/gcc.target/pru/minrt-2.c | 10 ++ gcc/testsuite/gcc.target/pru/minrt-3.c | 9 ++ gcc/testsuite/gcc.target/pru/mov-0.c | 19 +++ .../gcc.target/pru/noreturn-prologue-1.c | 10 ++ .../gcc.target/pru/noreturn-prologue-2.c | 11 ++ .../gcc.target/pru/zero_extend-op0.c | 28 ++++ 27 files changed, 549 insertions(+), 67 deletions(-) create mode 100644 gcc/config/pru/pru-passes.def create mode 100644 gcc/testsuite/g++.target/pru/minrt-1.cc create mode 100644 gcc/testsuite/g++.target/pru/minrt-2.cc create mode 100644 gcc/testsuite/g++.target/pru/minrt-3.cc create mode 100644 gcc/testsuite/g++.target/pru/pru.exp create mode 100644 gcc/testsuite/gcc.target/pru/extzv-1.c create mode 100644 gcc/testsuite/gcc.target/pru/extzv-2.c create mode 100644 gcc/testsuite/gcc.target/pru/extzv-3.c create mode 100644 gcc/testsuite/gcc.target/pru/insv-1.c create mode 100644 gcc/testsuite/gcc.target/pru/insv-2.c create mode 100644 gcc/testsuite/gcc.target/pru/insv-3.c create mode 100644 gcc/testsuite/gcc.target/pru/insv-4.c create mode 100644 gcc/testsuite/gcc.target/pru/minrt-1.c create mode 100644 gcc/testsuite/gcc.target/pru/minrt-2.c create mode 100644 gcc/testsuite/gcc.target/pru/minrt-3.c create mode 100644 gcc/testsuite/gcc.target/pru/mov-0.c create mode 100644 gcc/testsuite/gcc.target/pru/noreturn-prologue-1.c create mode 100644 gcc/testsuite/gcc.target/pru/noreturn-prologue-2.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-op0.c -- 2.45.0