#3451 makes every test state its own backend and moves the ones that never needed Chess onto Peano.
This issue records what is left, so the reason a given test still needs Vitis is written down rather
than remembered.
Counts are against the head of #3451 (7936ffd). grep -rl 'REQUIRES:.*chess' test programming_examples programming_guide returns 76 files, in four groups.
1. Chess instruction-set simulator (53)
These run under the Chess simulator, not on hardware. There is no open equivalent, so nothing here can
move until one exists. Two forms:
aiecc --get-aiesim (21). --get-aiesim requires --xbridge, and the generated project is built
and run by aiesimulator from Vitis.
21 files
test/aiecc/cpp_aiesim.mlir
test/unit_tests/aie2/29_aie2_nd_dma_even_odd/aie.mlir
test/unit_tests/aie2/30_aie2_nd_dma_transpose_repeat/aie.mlir
test/unit_tests/chess_compiler_tests/01_precompiled_core_function/aie.mlir
test/unit_tests/chess_compiler_tests/02_precompiled_kernel/aie.mlir
test/unit_tests/chess_compiler_tests/03_cascade_core_functions/aie.mlir
test/unit_tests/chess_compiler_tests/04_shim_dma_kernel/aie.mlir
test/unit_tests/chess_compiler_tests/05_shim_dma_core_function/aie.mlir
test/unit_tests/chess_compiler_tests/07_shim_dma_core_function_with_loop/aie.mlir
test/unit_tests/chess_compiler_tests/08_tile_locks/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/01_precompiled_core_function/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/02_precompiled_kernel/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/03_cascade_core_functions/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/03_simple/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/04_shared_memory/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/04_shared_memory/aie_row.mlir
test/unit_tests/chess_compiler_tests_aie2/04_shim_dma_kernel/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/05_shim_dma_core_function/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/07_shim_dma_core_function_with_loop/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/08_tile_locks/aie.mlir
test/unit_tests/chess_compiler_tests_aie2/09_memtile_locks/aie.mlir
xca_udm_dbg (32). All of test/unit_tests/aievec_tests/aie2/. Each compiles the vectorized dut
with Peano, builds the testbench with xchesscc_wrapper, then runs it under xca_udm_dbg against
%aietools/data/aie_ml/lib/ with profiling.tcl. The Chess dependency is the runner and the aietools
data directory, not the kernel.
Worth knowing before anyone invests in porting these: 27 of the 32 are XFAIL: *. Only
bf16_exp_lut, bf16_max_reduce, bf16_min_reduce, i16_max_reduce and i16_min_reduce are expected
to pass. Whatever these cost to keep, the coverage they currently provide is close to nothing, so
"delete or rewrite" is at least as reasonable as "port the runner".
32 files
test/unit_tests/aievec_tests/aie2/bf16_exp_lut/bf16_exp_lut-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16_max_reduce/bf16_max_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16_min_reduce/bf16_min_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16xbf16_max_elem/bf16xbf16_max_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16xbf16_min_elem/bf16xbf16_min_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16xbf16_mul_elem/bf16xbf16_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/bf16xbf16_mul_elem/bf16xbf16_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/bf16xbf16_mul_elem_2/bf16xbf16_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/floatxfloat_mul_elem/floatxfloat_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/floatxfloat_mul_elem/floatxfloat_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/i16_max_reduce/i16_max_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16_min_reduce/i16_min_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_max_elem/i16xi16_max_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_min_elem/i16xi16_min_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_mul_elem/i16xi16_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_mul_elem/i16xi16_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_mul_elem_2/i16xi16_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i16xi16_mul_elem_2/i16xi16_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/i32_max_reduce/i32_max_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i32_min_reduce/i32_min_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i32xi32_max_elem/i32xi32_max_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i32xi32_min_elem/i32xi32_min_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i32xi32_mul_elem/i32xi32_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i32xi32_mul_elem/i32xi32_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/i8_max_reduce/i8_max_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8_min_reduce/i8_min_reduce-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_max_elem/i8xi8_max_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_min_elem/i8xi8_min_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_mul_elem/i8xi8_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_mul_elem/i8xi8_mul_elem-llvm-scalar.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_mul_elem_2/i8xi8_mul_elem-llvm.mlir
test/unit_tests/aievec_tests/aie2/i8xi8_mul_elem_2/i8xi8_mul_elem-llvm-scalar.mlir
Closes when: an open simulator covers these paths, or the aievec group is retired on its own
merits. Not tracked by anything today.
2. bfp16 block_datatypes examples (11)
Blocked on one Peano bug. The AIE2P backend aborts the legalizer on a <8 x s8> G_BUILD_VECTOR
coming out of matmul_vectorized_bfp16, so these cannot build with Peano at all.
Fix is open as Xilinx/llvm-aie#1184 ([AIE2P][AIE2PS] Legalize the 64-bit bfp16 block-exponent G_BUILD_VECTOR, fixes Xilinx/llvm-aie#995).
11 files
programming_examples/ml/block_datatypes/gemm_asymmetric_tile_buffering/config1/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/gemm_asymmetric_tile_buffering/config2/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/gemm_asymmetric_tile_buffering/config3/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/in_core_shuffle/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/single_core/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/single_core_mixed/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/single_core_no_tiling/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/single_core_no_tiling_mixed/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/whole_array/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/whole_array_mixed/run_strix_makefile_chess.lit
programming_examples/ml/block_datatypes/matrix_multiplication/whole_array_shuffle/run_strix_makefile_chess.lit
Closes when: llvm-aie#1184 merges and the Peano pin here advances past it. This is the one group
with a live upstream dependency, and the one most likely to be forgotten once that PR lands. I will
convert these when the pin moves.
3. Tests whose subject is the Chess path (9)
These exist to exercise Chess. Converting them would delete coverage rather than move it, so they stay
indefinitely.
test/aiecc/cpp_xchesscc_basic.mlir, cpp_xchesscc_compile_only.mlir, cpp_xchesscc_multi_core.mlir
test the xchesscc C++ path itself.
test/aiecc/simple.mlir, simple_aie2.mlir, simple_xclbin.mlir, generate_pdi.mlir FileCheck both
backends side by side in one file (--check-prefix=XCHESSCC and --check-prefix=PEANO).
test/generate-mmap/allocation_error_chess.mlir checks the Chess-specific allocation diagnostic.
test/unit_tests/chess_compiler_tests_aie2/00_itsalive/aie.mlir runs all four unified/xchesscc
combinations.
Closes when: never, unless Chess support is dropped outright.
4. Peano feature gaps found on device (3)
I moved these to Peano in this branch and the device job caught them, so they went back to Chess with a
TODO in place. Each is a specific missing piece in Peano, not a property of the test.
test/npu-xrt/cascade_flows/run.lit and test/npu-xrt/matrix_multiplication_using_cascade/run.lit
call upd_elem and ext_elem. Peano defines those only for aie2p, in
lib/clang/*/include/aie2p/aie2p_scl2vec.h. There is no aie2 definition, so the object compiles and
the link fails with undefined symbol: upd_elem(int vector[32], int, int).
test/npu-xrt/tile_mapped_read/run.lit pins its probe variable at the tile-mapped base with
chess_storage(TM : 0x80000) to read the lock registers. Peano defines chess_storage(...) as an
empty macro in aiebase_chess.h, so the address is dropped, the variable lands wherever the linker
puts it, and the test reads unrelated memory. This one builds and links clean and is wrong only on
device.
Closes when: Peano gains aie2 upd_elem/ext_elem, and an absolute-placement mechanism equivalent
to chess_storage(TM : addr). Both are small, well-scoped Peano changes. The second cannot be validated
by building, it has to be checked on hardware.
Note on the numbers in #3451
The PR description was written before the last commit and says 73 remaining and 38 moved. After
7936ffd put those three back on Chess it is 76 remaining and 35 moved. The three-way split of the
original 73 in that description is still correct.
#3451 makes every test state its own backend and moves the ones that never needed Chess onto Peano.
This issue records what is left, so the reason a given test still needs Vitis is written down rather
than remembered.
Counts are against the head of #3451 (
7936ffd).grep -rl 'REQUIRES:.*chess' test programming_examples programming_guidereturns 76 files, in four groups.1. Chess instruction-set simulator (53)
These run under the Chess simulator, not on hardware. There is no open equivalent, so nothing here can
move until one exists. Two forms:
aiecc --get-aiesim(21).--get-aiesimrequires--xbridge, and the generated project is builtand run by
aiesimulatorfrom Vitis.21 files
xca_udm_dbg(32). All oftest/unit_tests/aievec_tests/aie2/. Each compiles the vectorized dutwith Peano, builds the testbench with
xchesscc_wrapper, then runs it underxca_udm_dbgagainst%aietools/data/aie_ml/lib/withprofiling.tcl. The Chess dependency is the runner and the aietoolsdata directory, not the kernel.
Worth knowing before anyone invests in porting these: 27 of the 32 are
XFAIL: *. Onlybf16_exp_lut,bf16_max_reduce,bf16_min_reduce,i16_max_reduceandi16_min_reduceare expectedto pass. Whatever these cost to keep, the coverage they currently provide is close to nothing, so
"delete or rewrite" is at least as reasonable as "port the runner".
32 files
Closes when: an open simulator covers these paths, or the
aievecgroup is retired on its ownmerits. Not tracked by anything today.
2. bfp16 block_datatypes examples (11)
Blocked on one Peano bug. The AIE2P backend aborts the legalizer on a
<8 x s8>G_BUILD_VECTORcoming out of
matmul_vectorized_bfp16, so these cannot build with Peano at all.Fix is open as Xilinx/llvm-aie#1184 (
[AIE2P][AIE2PS] Legalize the 64-bit bfp16 block-exponent G_BUILD_VECTOR, fixes Xilinx/llvm-aie#995).11 files
Closes when: llvm-aie#1184 merges and the Peano pin here advances past it. This is the one group
with a live upstream dependency, and the one most likely to be forgotten once that PR lands. I will
convert these when the pin moves.
3. Tests whose subject is the Chess path (9)
These exist to exercise Chess. Converting them would delete coverage rather than move it, so they stay
indefinitely.
test/aiecc/cpp_xchesscc_basic.mlir,cpp_xchesscc_compile_only.mlir,cpp_xchesscc_multi_core.mlirtest the xchesscc C++ path itself.
test/aiecc/simple.mlir,simple_aie2.mlir,simple_xclbin.mlir,generate_pdi.mlirFileCheck bothbackends side by side in one file (
--check-prefix=XCHESSCCand--check-prefix=PEANO).test/generate-mmap/allocation_error_chess.mlirchecks the Chess-specific allocation diagnostic.test/unit_tests/chess_compiler_tests_aie2/00_itsalive/aie.mlirruns all four unified/xchesscccombinations.
Closes when: never, unless Chess support is dropped outright.
4. Peano feature gaps found on device (3)
I moved these to Peano in this branch and the device job caught them, so they went back to Chess with a
TODO in place. Each is a specific missing piece in Peano, not a property of the test.
test/npu-xrt/cascade_flows/run.litandtest/npu-xrt/matrix_multiplication_using_cascade/run.litcall
upd_elemandext_elem. Peano defines those only for aie2p, inlib/clang/*/include/aie2p/aie2p_scl2vec.h. There is no aie2 definition, so the object compiles andthe link fails with
undefined symbol: upd_elem(int vector[32], int, int).test/npu-xrt/tile_mapped_read/run.litpins its probe variable at the tile-mapped base withchess_storage(TM : 0x80000)to read the lock registers. Peano defineschess_storage(...)as anempty macro in
aiebase_chess.h, so the address is dropped, the variable lands wherever the linkerputs it, and the test reads unrelated memory. This one builds and links clean and is wrong only on
device.
Closes when: Peano gains aie2
upd_elem/ext_elem, and an absolute-placement mechanism equivalentto
chess_storage(TM : addr). Both are small, well-scoped Peano changes. The second cannot be validatedby building, it has to be checked on hardware.
Note on the numbers in #3451
The PR description was written before the last commit and says 73 remaining and 38 moved. After
7936ffdput those three back on Chess it is 76 remaining and 35 moved. The three-way split of theoriginal 73 in that description is still correct.