sme: Add SVE/SME testcases
authorLuis Machado <luis.machado@arm.com>
Mon, 10 Oct 2022 12:31:44 +0000 (13:31 +0100)
committerLuis Machado <luis.machado@arm.com>
Wed, 4 Oct 2023 15:23:40 +0000 (16:23 +0100)
commit16582a51c6e5ed05812d40050f63f35a2c7710c1
tree2f4159598c2694308d2d050f4f71af0c8e2a3f45
parent69bfb2b6d08da64c6fe55b624aa28a68193b8b43
sme: Add SVE/SME testcases

Add 5 SVE/SME tests to exercise all the new features like reading/writing
registers, pseudo-registers, signal frames and core files.

- Sanity check for SME: Gives a brief smoke test to make sure the most basic
of features are working correctly.

- ZA unavailability tests: Validates the behavior/content of the ZA register
is correct when no payload is available.  It also exercises changing the
vector lengths.

- ZA availability tests: These tests exercise reading/writing to all the
possible ZA pseudo-registers, and validates the state is correct.

- Core file tests: Validates that core file reading and writing works
correctly and that all state dumped/loaded is sane.  This is exercised for
both Linux Kernel core files and gcore core files.

- Signal frame tests: Validates the correct restoration of SME/SVE/FPSIMD
values across signal frames.

Since some of these tests are very lengthy and take a little while to run
(under QEMU at the moment), I decided to parallelize them into smaller
chunks so we can throw some more CPU power at them so they run faster.

I'd still like to add a few more tests to give the testsuite more coverage
in the areas of SME/SVE.  Hopefully in the near future that will happen.

Just a reminder that these SME tests are currently unsupported when gdb is
connected to a remote target.  That's because the RSP doesn't support
communicating changes in vector lenghts mid-execution, so gdb will always
get wrong state from the remote target.

Co-Authored-By: Ezra Sitorus <ezra.sitorus@arm.com>
Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
45 files changed:
gdb/testsuite/gdb.arch/aarch64-sme-core-0.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core-1.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core-2.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core-3.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core-4.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-core.exp.tcl [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-0.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-1.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-2.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-3.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-4.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-5.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-6.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-7.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-8.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available-9.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-available.exp.tcl [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe-0.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe-1.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe-2.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe-3.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe-4.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe.exp.tcl [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-0.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-1.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-2.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-3.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-4.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-5.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-6.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-7.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-8.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-9.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable.exp.tcl [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-sanity.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/aarch64-sme-sanity.exp [new file with mode: 0644]
gdb/testsuite/lib/aarch64-scalable.exp [new file with mode: 0644]
gdb/testsuite/lib/aarch64-test-sme.c [new file with mode: 0644]
gdb/testsuite/lib/aarch64-test-sve.c [new file with mode: 0644]
gdb/testsuite/lib/aarch64.exp [new file with mode: 0644]
gdb/testsuite/lib/gdb.exp