<soum...@nvidia.com> writes: > From: Soumya AR <soum...@nvidia.com> > > Hi, > > This RFC is a continuation of previous patches sent here: > https://gcc.gnu.org/pipermail/gcc-patches/2025-May/682702.html > > As suggested in the earlier thread, I've now added a python script to generete > the printing and parsing routines for the JSON tuning parameters from the > schema. > > With this, if changes are made to tune_params, the user can simply regenerate > the routines by running the script (albeit after updating the schema). > > Additionally, instead of removing 'const' from all predfined tune_params > structures, I've reworked the patch to only clear 'const' from the individual > tuning fields and instead update the structures using temporaries.
I've responded to patches 2, 3, 4, and 6. Patches 1 and 5 LGTM as-is. Thanks, Richard > > Best, > Soumya > > Soumya AR (6): > aarch64 + arm: Remove const keyword from tune_params members and > nested members > aarch64: Enable dumping of AArch64 CPU tuning parameters to JSON > json: Add get_map() method to JSON object class > aarch64: Enable parsing of user-provided AArch64 CPU tuning parameters > aarch64: Regression tests for parsing of user-provided AArch64 CPU > tuning parameters > aarch64: Script to auto generate JSON tuning routines > > gcc/config.gcc | 2 +- > .../aarch64-generate-json-tuning-routines.py | 370 ++++++++++++ > gcc/config/aarch64/aarch64-json-schema.h | 261 ++++++++ > .../aarch64-json-tunings-parser-generated.inc | 337 +++++++++++ > .../aarch64/aarch64-json-tunings-parser.cc | 559 ++++++++++++++++++ > .../aarch64/aarch64-json-tunings-parser.h | 29 + > ...aarch64-json-tunings-printer-generated.inc | 421 +++++++++++++ > .../aarch64/aarch64-json-tunings-printer.cc | 148 +++++ > .../aarch64/aarch64-json-tunings-printer.h | 28 + > gcc/config/aarch64/aarch64-protos.h | 164 ++--- > gcc/config/aarch64/aarch64.cc | 20 + > gcc/config/aarch64/aarch64.opt | 8 + > gcc/config/aarch64/t-aarch64 | 21 + > gcc/config/arm/aarch-common-protos.h | 128 ++-- > gcc/json.h | 40 +- > gcc/selftest-run-tests.cc | 1 + > gcc/selftest.h | 1 + > .../aarch64-json-tunings.exp | 35 ++ > .../aarch64/aarch64-json-tunings/boolean-1.c | 6 + > .../aarch64-json-tunings/boolean-1.json | 9 + > .../aarch64/aarch64-json-tunings/boolean-2.c | 7 + > .../aarch64-json-tunings/boolean-2.json | 9 + > .../aarch64-json-tunings/empty-brackets.c | 6 + > .../aarch64-json-tunings/empty-brackets.json | 1 + > .../aarch64/aarch64-json-tunings/empty.c | 6 + > .../aarch64/aarch64-json-tunings/empty.json | 0 > .../aarch64/aarch64-json-tunings/enum-1.c | 8 + > .../aarch64/aarch64-json-tunings/enum-1.json | 7 + > .../aarch64/aarch64-json-tunings/enum-2.c | 7 + > .../aarch64/aarch64-json-tunings/enum-2.json | 7 + > .../aarch64/aarch64-json-tunings/integer-1.c | 7 + > .../aarch64-json-tunings/integer-1.json | 6 + > .../aarch64/aarch64-json-tunings/integer-2.c | 7 + > .../aarch64-json-tunings/integer-2.json | 6 + > .../aarch64/aarch64-json-tunings/integer-3.c | 7 + > .../aarch64-json-tunings/integer-3.json | 5 + > .../aarch64/aarch64-json-tunings/integer-4.c | 6 + > .../aarch64-json-tunings/integer-4.json | 5 + > .../aarch64/aarch64-json-tunings/string-1.c | 8 + > .../aarch64-json-tunings/string-1.json | 7 + > .../aarch64/aarch64-json-tunings/string-2.c | 7 + > .../aarch64-json-tunings/string-2.json | 5 + > .../aarch64/aarch64-json-tunings/test-all.c | 58 ++ > .../aarch64-json-tunings/test-all.json | 39 ++ > .../aarch64-json-tunings/unidentified-key.c | 6 + > .../unidentified-key.json | 5 + > 46 files changed, 2674 insertions(+), 156 deletions(-) > create mode 100644 > gcc/config/aarch64/aarch64-generate-json-tuning-routines.py > create mode 100644 gcc/config/aarch64/aarch64-json-schema.h > create mode 100644 > gcc/config/aarch64/aarch64-json-tunings-parser-generated.inc > create mode 100644 gcc/config/aarch64/aarch64-json-tunings-parser.cc > create mode 100644 gcc/config/aarch64/aarch64-json-tunings-parser.h > create mode 100644 > gcc/config/aarch64/aarch64-json-tunings-printer-generated.inc > create mode 100644 gcc/config/aarch64/aarch64-json-tunings-printer.cc > create mode 100644 gcc/config/aarch64/aarch64-json-tunings-printer.h > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.json > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json