Module: Mesa Branch: main Commit: 9bb731012efd1d92cd1ee1fc1e3e53a6efdaf706 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9bb731012efd1d92cd1ee1fc1e3e53a6efdaf706
Author: Alyssa Rosenzweig <[email protected]> Date: Wed Jul 28 12:25:54 2021 -0400 pan/bi: Teach meson about scheduler predicate test One step of 3 to getting all our tests in meson test. Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12109> --- src/panfrost/bifrost/bi_schedule.c | 57 ---------------- src/panfrost/bifrost/cmdline.c | 1 - src/panfrost/bifrost/compiler.h | 1 - src/panfrost/bifrost/meson.build | 14 ++++ .../bifrost/test/test-scheduler-predicates.c | 76 ++++++++++++++++++++++ 5 files changed, 90 insertions(+), 59 deletions(-) diff --git a/src/panfrost/bifrost/bi_schedule.c b/src/panfrost/bifrost/bi_schedule.c index 36653e6fc60..1991205f8db 100644 --- a/src/panfrost/bifrost/bi_schedule.c +++ b/src/panfrost/bifrost/bi_schedule.c @@ -1903,60 +1903,3 @@ bi_schedule(bi_context *ctx) bi_opt_dce_post_ra(ctx); bi_add_nop_for_atest(ctx); } - -#ifndef NDEBUG - -#include "bi_test.h" -#define TMP() bi_temp(b->shader) - -static void -bi_test_units(bi_builder *b) -{ - bi_instr *mov = bi_mov_i32_to(b, TMP(), TMP()); - assert(bi_can_fma(mov)); - assert(bi_can_add(mov)); - assert(!bi_must_message(mov)); - assert(bi_reads_zero(mov)); - assert(bi_reads_temps(mov, 0)); - assert(bi_reads_t(mov, 0)); - - bi_instr *fma = bi_fma_f32_to(b, TMP(), TMP(), TMP(), bi_zero(), BI_ROUND_NONE); - assert(bi_can_fma(fma)); - assert(!bi_can_add(fma)); - assert(!bi_must_message(fma)); - assert(bi_reads_zero(fma)); - for (unsigned i = 0; i < 3; ++i) { - assert(bi_reads_temps(fma, i)); - assert(bi_reads_t(fma, i)); - } - - bi_instr *load = bi_load_i128_to(b, TMP(), TMP(), TMP(), BI_SEG_UBO); - assert(!bi_can_fma(load)); - assert(bi_can_add(load)); - assert(bi_must_message(load)); - for (unsigned i = 0; i < 2; ++i) { - assert(bi_reads_temps(load, i)); - assert(bi_reads_t(load, i)); - } - - bi_instr *blend = bi_blend_to(b, TMP(), TMP(), TMP(), TMP(), TMP(), 4); - assert(!bi_can_fma(load)); - assert(bi_can_add(load)); - assert(bi_must_message(blend)); - for (unsigned i = 0; i < 4; ++i) - assert(bi_reads_temps(blend, i)); - assert(!bi_reads_t(blend, 0)); - assert(bi_reads_t(blend, 1)); - assert(!bi_reads_t(blend, 2)); - assert(!bi_reads_t(blend, 3)); -} - -int bi_test_scheduler(void) -{ - void *memctx = NULL; - - bi_test_units(bit_builder(memctx)); - - return 0; -} -#endif diff --git a/src/panfrost/bifrost/cmdline.c b/src/panfrost/bifrost/cmdline.c index e32af874c6c..de51548e472 100644 --- a/src/panfrost/bifrost/cmdline.c +++ b/src/panfrost/bifrost/cmdline.c @@ -248,7 +248,6 @@ static int bi_tests() { #ifndef NDEBUG - bi_test_scheduler(); bi_test_packing(); bi_test_packing_formats(); printf("Pass.\n"); diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h index b9d9870bb6e..e66e8afe8cc 100644 --- a/src/panfrost/bifrost/compiler.h +++ b/src/panfrost/bifrost/compiler.h @@ -908,7 +908,6 @@ uint32_t bi_fold_constant(bi_instr *I, bool *unsupported); void bi_opt_constant_fold(bi_context *ctx); /* Test suite */ -int bi_test_scheduler(void); int bi_test_packing(void); int bi_test_packing_formats(void); diff --git a/src/panfrost/bifrost/meson.build b/src/panfrost/bifrost/meson.build index 277ed1f688f..0bcf9832956 100644 --- a/src/panfrost/bifrost/meson.build +++ b/src/panfrost/bifrost/meson.build @@ -142,6 +142,20 @@ libpanfrost_bifrost = static_library( ) if with_tests + test( + 'bifrost_scheduler_predicates', + executable( + 'bifrost_scheduler_predicates_test', + files('test/test-scheduler-predicates.c'), + c_args : [c_msvc_compat_args, no_override_init_args], + gnu_symbol_visibility : 'hidden', + include_directories : [inc_include, inc_src, inc_mesa], + dependencies: [idep_nir, idep_bi_opcodes_h, idep_bi_builder_h], + link_with : [libpanfrost_bifrost], + ), + suite : ['panfrost'], + ) + test( 'bifrost_constant_fold', executable( diff --git a/src/panfrost/bifrost/test/test-scheduler-predicates.c b/src/panfrost/bifrost/test/test-scheduler-predicates.c new file mode 100644 index 00000000000..95e1598e3e9 --- /dev/null +++ b/src/panfrost/bifrost/test/test-scheduler-predicates.c @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2021 Collabora, Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "compiler.h" +#include "bi_test.h" +#include "bi_builder.h" + +#define TMP() bi_temp(b->shader) + +int main(int argc, char **argv) +{ + unsigned nr_fail = 0, nr_pass = 0; + void *ralloc_ctx = ralloc_context(NULL); + bi_builder *b = bit_builder(ralloc_ctx); + + bi_instr *mov = bi_mov_i32_to(b, TMP(), TMP()); + BIT_ASSERT(bi_can_fma(mov)); + BIT_ASSERT(bi_can_add(mov)); + BIT_ASSERT(!bi_must_message(mov)); + BIT_ASSERT(bi_reads_zero(mov)); + BIT_ASSERT(bi_reads_temps(mov, 0)); + BIT_ASSERT(bi_reads_t(mov, 0)); + + bi_instr *fma = bi_fma_f32_to(b, TMP(), TMP(), TMP(), bi_zero(), BI_ROUND_NONE); + BIT_ASSERT(bi_can_fma(fma)); + BIT_ASSERT(!bi_can_add(fma)); + BIT_ASSERT(!bi_must_message(fma)); + BIT_ASSERT(bi_reads_zero(fma)); + for (unsigned i = 0; i < 3; ++i) { + BIT_ASSERT(bi_reads_temps(fma, i)); + BIT_ASSERT(bi_reads_t(fma, i)); + } + + bi_instr *load = bi_load_i128_to(b, TMP(), TMP(), TMP(), BI_SEG_UBO); + BIT_ASSERT(!bi_can_fma(load)); + BIT_ASSERT(bi_can_add(load)); + BIT_ASSERT(bi_must_message(load)); + for (unsigned i = 0; i < 2; ++i) { + BIT_ASSERT(bi_reads_temps(load, i)); + BIT_ASSERT(bi_reads_t(load, i)); + } + + bi_instr *blend = bi_blend_to(b, TMP(), TMP(), TMP(), TMP(), TMP(), 4); + BIT_ASSERT(!bi_can_fma(load)); + BIT_ASSERT(bi_can_add(load)); + BIT_ASSERT(bi_must_message(blend)); + for (unsigned i = 0; i < 4; ++i) + BIT_ASSERT(bi_reads_temps(blend, i)); + BIT_ASSERT(!bi_reads_t(blend, 0)); + BIT_ASSERT(bi_reads_t(blend, 1)); + BIT_ASSERT(!bi_reads_t(blend, 2)); + BIT_ASSERT(!bi_reads_t(blend, 3)); + + ralloc_free(ralloc_ctx); + TEST_END(nr_pass, nr_fail); +} _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
