From: Soumya AR <soum...@nvidia.com> Signed-off-by: Soumya AR <soum...@nvidia.com>
gcc/testsuite/ChangeLog: * gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp: New test. * gcc.target/aarch64/aarch64-json-tunings/boolean-1.c: New test. * gcc.target/aarch64/aarch64-json-tunings/boolean-1.json: New test. * gcc.target/aarch64/aarch64-json-tunings/boolean-2.c: New test. * gcc.target/aarch64/aarch64-json-tunings/boolean-2.json: New test. * gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c: New test. * gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json: New test. * gcc.target/aarch64/aarch64-json-tunings/empty.c: New test. * gcc.target/aarch64/aarch64-json-tunings/empty.json: New test. * gcc.target/aarch64/aarch64-json-tunings/enum-1.c: New test. * gcc.target/aarch64/aarch64-json-tunings/enum-1.json: New test. * gcc.target/aarch64/aarch64-json-tunings/enum-2.c: New test. * gcc.target/aarch64/aarch64-json-tunings/enum-2.json: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-1.c: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-1.json: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-2.c: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-2.json: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-3.c: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-3.json: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-4.c: New test. * gcc.target/aarch64/aarch64-json-tunings/integer-4.json: New test. * gcc.target/aarch64/aarch64-json-tunings/string-1.c: New test. * gcc.target/aarch64/aarch64-json-tunings/string-1.json: New test. * gcc.target/aarch64/aarch64-json-tunings/string-2.c: New test. * gcc.target/aarch64/aarch64-json-tunings/string-2.json: New test. * gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c: New test. * gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json: New test. --- .../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 ++ 29 files changed, 292 insertions(+) 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 diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp new file mode 100644 index 00000000000..974af6d78a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp @@ -0,0 +1,35 @@ +# Copyright (C) 2025 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't an AArch64 target. +if ![istarget aarch64*-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ + "" "" + +# All done. +dg-finish diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.c new file mode 100644 index 00000000000..31801fca6bf --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json -fdump-tuning-model=temp.json" } */ + +/* { dg-final { scan-file "temp.json" "\"non_exec_costs_exec\": false" } } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json new file mode 100644 index 00000000000..b7bd3dd4f9a --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json @@ -0,0 +1,9 @@ +{ + "tune_params": { + "insn_extra_cost": { + "alu": { + "non_exec_costs_exec": false + } + } + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.c new file mode 100644 index 00000000000..f34f5935725 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "key .* expected to be a boolean" "" { target *-*-* } 0 } */ +/* { dg-error "validation failed for the provided JSON data" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json new file mode 100644 index 00000000000..d43e5b1a291 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json @@ -0,0 +1,9 @@ +{ + "tune_params": { + "insn_extra_cost": { + "alu": { + "non_exec_costs_exec": 0 + } + } + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c new file mode 100644 index 00000000000..e8465ee49d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json -fdump-tuning-model=temp.json" } */ + +/* { dg-warning "key 'tune_params' not found in JSON data" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json @@ -0,0 +1 @@ +{} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.c new file mode 100644 index 00000000000..0e722994fff --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/empty.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "expected a JSON value but got EOF" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.c new file mode 100644 index 00000000000..a076a51212b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/enum-1.json -fdump-tuning-model=temp.json" } */ + +/* { dg-final { scan-file "temp.json" "\"autoprefetcher_model\": \"AUTOPREFETCHER_OFF\"" } } */ +/* { dg-final { scan-file "temp.json" "\"ldp_policy_model\": \"AARCH64_LDP_STP_POLICY_NEVER\"" } } */ +/* { dg-final { scan-file "temp.json" "\"stp_policy_model\": \"AARCH64_LDP_STP_POLICY_DEFAULT\"" } } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.json new file mode 100644 index 00000000000..492af1c14e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.json @@ -0,0 +1,7 @@ +{ + "tune_params": { + "autoprefetcher_model": "AUTOPREFETCHER_OFF", + "ldp_policy_model": "AARCH64_LDP_STP_POLICY_NEVER", + "stp_policy_model": "AARCH64_LDP_STP_POLICY_DEFAULT" + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.c new file mode 100644 index 00000000000..c058c6e432c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/enum-2.json -fdump-tuning-model=temp.json" } */ + +/* { dg-warning "autoprefetcher_model not recognized, defaulting to 'AUTOPREFETCHER_OFF'" "" { target *-*-* } 0 } */ +/* { dg-warning "ldp_policy_model not recognized, defaulting to 'AARCH64_LDP_STP_POLICY_DEFAULT'" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.json new file mode 100644 index 00000000000..61204071fd3 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.json @@ -0,0 +1,7 @@ +{ + "tune_params": { + "autoprefetcher_model": "null", + "ldp_policy_model": "null", + "stp_policy_model": "AARCH64_LDP_STP_POLICY_DEFAULT" + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.c new file mode 100644 index 00000000000..6749a785a39 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/integer-1.json -fdump-tuning-model=temp.json" } */ + +/* { dg-final { scan-file "temp.json" "\"sve_width\": 256" } } */ +/* { dg-final { scan-file "temp.json" "\"issue_rate\": 4" } } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.json new file mode 100644 index 00000000000..8db0efad28e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.json @@ -0,0 +1,6 @@ +{ + "tune_params": { + "sve_width": 256, + "issue_rate": 4 + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.c new file mode 100644 index 00000000000..088e6aadcf3 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/integer-2.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "key .* expected to be an unsigned integer" "" { target *-*-* } 0 } */ +/* { dg-error "validation failed for the provided JSON data" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.json new file mode 100644 index 00000000000..741cf5d2201 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.json @@ -0,0 +1,6 @@ +{ + "tune_params": { + "sve_width": -256, + "int_reassoc_width": 12097307449014 + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.c new file mode 100644 index 00000000000..27b2f67f3ac --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/integer-3.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "key .* expected to be an integer" "" { target *-*-* } 0 } */ +/* { dg-error "validation failed for the provided JSON data" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.json new file mode 100644 index 00000000000..94fd1232840 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.json @@ -0,0 +1,5 @@ +{ + "tune_params": { + "issue_rate": "10" + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.c new file mode 100644 index 00000000000..833de7c0233 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/integer-4.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "value exceeds 'INT_MAX'" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.json new file mode 100644 index 00000000000..94f614f0c0a --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.json @@ -0,0 +1,5 @@ +{ + "tune_params": { + "issue_rate": 519027498174201 + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.c new file mode 100644 index 00000000000..c26f3e4ca2f --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/string-1.json -fdump-tuning-model=temp.json" } */ + +/* { dg-final { scan-file "temp.json" "\"function_align\": \"16\"" } } */ +/* { dg-final { scan-file "temp.json" "\"jump_align\": \"2\"" } } */ +/* { dg-final { scan-file "temp.json" "\"loop_align\": \"8\"" } } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.json new file mode 100644 index 00000000000..fe78f324a5c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.json @@ -0,0 +1,7 @@ +{ + "tune_params": { + "function_align": "16", + "jump_align": "2", + "loop_align": "8" + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.c new file mode 100644 index 00000000000..fe9037bc9b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/string-2.json -fdump-tuning-model=temp.json" } */ + +/* { dg-error "key .* expected to be a string" "" { target *-*-* } 0 } */ +/* { dg-error "validation failed for the provided JSON data" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.json new file mode 100644 index 00000000000..5b1df22784b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.json @@ -0,0 +1,5 @@ +{ + "tune_params": { + "function_align": 16 + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.c new file mode 100644 index 00000000000..cc34ba298b1 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.c @@ -0,0 +1,58 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/test-all.json -fdump-tuning-model=temp.json" } */ + +/* Test round-trip parsing: load JSON, dump it, verify key values are preserved */ + +/* Check basic structure values */ +/* { dg-final { scan-file "temp.json" "\"issue_rate\": 3" } } */ +/* { dg-final { scan-file "temp.json" "\"fusible_ops\": 48" } } */ +/* { dg-final { scan-file "temp.json" "\"function_align\": \"32:16\"" } } */ + +/* Check alu costs */ +/* { dg-final { scan-file "temp.json" "\"arith\": 0" } } */ +/* { dg-final { scan-file "temp.json" "\"logical\": 0" } } */ +/* { dg-final { scan-file "temp.json" "\"shift\": 0" } } */ +/* { dg-final { scan-file "temp.json" "\"arith_shift\": 4" } } */ + +/* Check load/store costs */ +/* { dg-final { scan-file "temp.json" "\"load\": 12" } } */ +/* { dg-final { scan-file "temp.json" "\"store\": 0" } } */ +/* { dg-final { scan-file "temp.json" "\"loadf\": 16" } } */ +/* { dg-final { scan-file "temp.json" "\"storef\": 0" } } */ + +/* Check regmove costs */ +/* { dg-final { scan-file "temp.json" "\"GP2GP\": 1" } } */ +/* { dg-final { scan-file "temp.json" "\"GP2FP\": 5" } } */ +/* { dg-final { scan-file "temp.json" "\"FP2GP\": 5" } } */ +/* { dg-final { scan-file "temp.json" "\"FP2FP\": 2" } } */ + +/* Check vec_costs scalar fields */ +/* { dg-final { scan-file "temp.json" "\"scalar_int_stmt_cost\": 1" } } */ +/* { dg-final { scan-file "temp.json" "\"scalar_fp_stmt_cost\": 1" } } */ +/* { dg-final { scan-file "temp.json" "\"cond_taken_branch_cost\": 3" } } */ + +/* Check vec_costs advsimd nested fields */ +/* { dg-final { scan-file "temp.json" "\"int_stmt_cost\": 1" } } */ +/* { dg-final { scan-file "temp.json" "\"fp_stmt_cost\": 1" } } */ +/* { dg-final { scan-file "temp.json" "\"permute_cost\": 2" } } */ +/* { dg-final { scan-file "temp.json" "\"vec_to_scalar_cost\": 2" } } */ + +/* Check vec_costs sve nested fields */ +/* { dg-final { scan-file "temp.json" "\"clast_cost\": 2" } } */ +/* { dg-final { scan-file "temp.json" "\"fadda_f32_cost\": 2" } } */ +/* { dg-final { scan-file "temp.json" "\"gather_load_x32_cost\": 4" } } */ + +/* Check enum values */ +/* { dg-final { scan-file "temp.json" "\"autoprefetcher_model\": \"AUTOPREFETCHER_WEAK\"" } } */ +/* { dg-final { scan-file "temp.json" "\"ldp_policy_model\": \"AARCH64_LDP_STP_POLICY_ALWAYS\"" } } */ +/* { dg-final { scan-file "temp.json" "\"stp_policy_model\": \"AARCH64_LDP_STP_POLICY_ALWAYS\"" } } */ + +/* Check boolean values */ +/* { dg-final { scan-file "temp.json" "\"non_exec_costs_exec\": true" } } */ +/* { dg-final { scan-file "temp.json" "\"prefetch_dynamic_strides\": true" } } */ + +/* Check nested array values (mult costs) */ +/* { dg-final { scan-file "temp.json" "\"simple\": 4" } } */ +/* { dg-final { scan-file "temp.json" "\"idiv\": 24" } } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.json new file mode 100644 index 00000000000..8851000c05c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.json @@ -0,0 +1,39 @@ +{ + "tune_params": { + "insn_extra_cost": { + "alu": { + "arith": 0, + "logical": 0, + "shift": 0, + "arith_shift": 4 + }, + "mult": [ + { + "simple": 4, + "idiv": 24 + } + ], + "ldst": { + "load": 12, + "store": 0, + "loadf": 16, + "storef": 0 + } + }, + "regmove_cost": { + "GP2GP": 1, + "GP2FP": 5, + "FP2GP": 5, + "FP2FP": 2 + }, + "issue_rate": 3, + "fusible_ops": 48, + "function_align": "32:16", + "autoprefetcher_model": "AUTOPREFETCHER_WEAK", + "ldp_policy_model": "AARCH64_LDP_STP_POLICY_ALWAYS", + "stp_policy_model": "AARCH64_LDP_STP_POLICY_ALWAYS", + "prefetch": { + "prefetch_dynamic_strides": true + } + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c new file mode 100644 index 00000000000..fbfe9f1fc9b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-muser-provided-CPU=${srcdir}/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json -fdump-tuning-model=temp.json" } */ + +/* { dg-warning "key .* is not a tuning parameter, skipping" "" { target *-*-* } 0 } */ + +int main () {} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json new file mode 100644 index 00000000000..89e69b2c690 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json @@ -0,0 +1,5 @@ +{ + "tune_params": { + "unidentified_key": "10" + } +} -- 2.44.0