mesa/src/amd/compiler/tests
Rhys Perry 31c8c42f48 aco/tests: test that s_bfe bits is masked
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23464>
2023-06-08 11:54:45 +01:00
..
check_output.py aco/tests: improve reporting of failed code checks 2021-06-03 03:49:07 +00:00
framework.h aco: Don't include headers from radv. 2023-03-08 04:39:18 +00:00
glsl_scraper.py aco/tests: improve performance of declaration parsing 2023-05-25 16:29:16 +00:00
helpers.cpp aco,radv: support symbol relocation in aco 2023-04-28 11:33:28 +08:00
helpers.h aco/tests: add setup_reduce_temp.divergent_if_phi 2023-02-01 15:45:22 +00:00
main.cpp util: Remove util_cpu_detect 2022-04-20 18:44:35 +00:00
meson.build aco/tests: add fix_derivs_in_divergent_cf tests 2023-05-25 16:29:16 +00:00
README.md aco/tests: add tests for form_hard_clauses() 2021-06-03 03:49:07 +00:00
test_assembler.cpp amd: drop support for LLVM 14 2023-06-07 19:56:55 +00:00
test_builder.cpp amd: change chip_class naming to "enum amd_gfx_level gfx_level" 2022-05-13 14:56:22 -04:00
test_d3d11_derivs.cpp aco: use ac_get_image_dim for array check when image intrinsic 2023-06-02 09:21:59 +00:00
test_hard_clause.cpp aco: Remove vtx_binding from MUBUF/MTBUF instructions. 2023-03-15 14:54:27 +00:00
test_insert_nops.cpp aco/gfx11: workaround VALUMaskWriteHazard 2022-10-19 02:46:03 +00:00
test_insert_waitcnt.cpp aco: insert waitcnt before/after ds_ordered_count 2022-10-28 21:50:05 +00:00
test_isel.cpp aco/tests: test that s_bfe bits is masked 2023-06-08 11:54:45 +01:00
test_optimizer.cpp aco: use v_fma_mix for f2f32 and f2f16 on gfx11 if wave64 2023-06-07 12:30:11 +00:00
test_optimizer_postRA.cpp aco: remove VOP[123C]P? structs 2023-03-07 11:53:23 +00:00
test_reduce_assign.cpp aco/tests: add setup_reduce_temp.divergent_if_phi 2023-02-01 15:45:22 +00:00
test_regalloc.cpp aco/ra: only rename fixed Operands if the copy-location matches 2022-10-24 13:12:34 +00:00
test_sdwa.cpp aco: use v_add_f{16,32} with clamp for fsat 2023-06-07 12:30:11 +00:00
test_tests.cpp amd: change chip_class naming to "enum amd_gfx_level gfx_level" 2022-05-13 14:56:22 -04:00
test_to_hw_instr.cpp aco: Use v_mov_b16 on GFX11. 2023-01-03 22:49:46 +00:00

Tests are wrapped in a BEGIN_TEST/END_TEST and write data to the output file pointer. Tests have checks against the output. They are single line comments prefixed with certain characters:

  • ! fails the test if the current line does not match the pattern
  • >> skips to the first line which matches the pattern, or fails the test if there is none
  • ; executes python code to extend the pattern syntax by inserting functions into the variable dictionary, fail the test, insert more checks or consume characters from the output

Before this prefix, there can be a ~ to only perform the check for certain variants (a regex directly following the ~ is used).

Pattern Syntax

Patterns can define variables which can be accessed in both python code and the pattern itself. These are useful for readability or dealing with unstable identifiers in the output. Variable identifiers are sequences of digits, ascii letters or _ (though they cannot start with a digit).

  • \ can be used to match the following literal character without interpreting it.
  • Most characters expect the same characters in the output.
  • A sequence of spaces in the pattern expects a sequence of spaces or tabs in the output.
  • A # in the pattern expects an unsigned integer in the output. The # can be followed by an identifier to store the integer in a variable.
  • A $ in the pattern stores the output until the first whitespace character into a variable.
  • A % in the pattern followed by an identifier is the same as a # but it expects a % before the integer in the output. It basically matches a ACO temporary.
  • A @ calls a variable as a function. It can be followed by an argument string wrapped in ( and ).

Functions

  • s64, s96, s128, v2, v3, etc, expand to a pattern which matches a disassembled instruction's definition or operand. It later checks that the size and alignment is what's expected.
  • match_func expands to a sequence of $ and inserts functions with expand to the extracted output
  • search_re consumes the rest of the line and fails the test if the pattern is not found