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.

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

-- 
2.44.0

Reply via email to