X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Ftest_eu_compact.c;h=59d58a7c6de816ea89fbe964d819f5c8cd339248;hb=29eb8059fd7906d2595ea99bc65a27691b9fbe53;hp=41a5ef55dbef1d350917903ae03293272f6cfbea;hpb=f606a42a3cad9dad27c207864417bcb20efa5c2e;p=mesa.git diff --git a/src/mesa/drivers/dri/i965/test_eu_compact.c b/src/mesa/drivers/dri/i965/test_eu_compact.c index 41a5ef55dbe..59d58a7c6de 100644 --- a/src/mesa/drivers/dri/i965/test_eu_compact.c +++ b/src/mesa/drivers/dri/i965/test_eu_compact.c @@ -24,35 +24,32 @@ #include #include #include -#include "glsl/ralloc.h" +#include "util/ralloc.h" #include "brw_context.h" #include "brw_eu.h" static bool -test_compact_instruction(struct brw_compile *p, struct brw_instruction src) +test_compact_instruction(struct brw_codegen *p, brw_inst src) { - struct brw_context *brw = p->brw; - struct intel_context *intel = &brw->intel; - - struct brw_compact_instruction dst; + brw_compact_inst dst; memset(&dst, 0xd0, sizeof(dst)); - if (brw_try_compact_instruction(p, &dst, &src)) { - struct brw_instruction uncompacted; + if (brw_try_compact_instruction(p->devinfo, &dst, &src)) { + brw_inst uncompacted; - brw_uncompact_instruction(intel, &uncompacted, &dst); + brw_uncompact_instruction(p->devinfo, &uncompacted, &dst); if (memcmp(&uncompacted, &src, sizeof(src))) { - brw_debug_compact_uncompact(intel, &src, &uncompacted); + brw_debug_compact_uncompact(p->devinfo, &src, &uncompacted); return false; } } else { - struct brw_compact_instruction unchanged; + brw_compact_inst unchanged; memset(&unchanged, 0xd0, sizeof(unchanged)); /* It's not supposed to change dst unless it compacted. */ if (memcmp(&unchanged, &dst, sizeof(dst))) { fprintf(stderr, "Failed to compact, but dst changed\n"); fprintf(stderr, " Instruction: "); - brw_disasm(stderr, &src, intel->gen); + brw_disassemble_inst(stderr, p->devinfo, &src, false); return false; } } @@ -68,23 +65,20 @@ test_compact_instruction(struct brw_compile *p, struct brw_instruction src) * become meaningless once fuzzing twiddles a related bit. */ static void -clear_pad_bits(struct brw_instruction *inst) +clear_pad_bits(const struct brw_device_info *devinfo, brw_inst *inst) { - if (inst->header.opcode != BRW_OPCODE_SEND && - inst->header.opcode != BRW_OPCODE_SENDC && - inst->header.opcode != BRW_OPCODE_BREAK && - inst->header.opcode != BRW_OPCODE_CONTINUE && - inst->bits1.da1.src0_reg_file != BRW_IMMEDIATE_VALUE && - inst->bits1.da1.src1_reg_file != BRW_IMMEDIATE_VALUE) { - if (inst->bits3.da1.src1_address_mode) - inst->bits3.ia1.pad1 = 0; - else - inst->bits3.da1.pad0 = 0; + if (brw_inst_opcode(devinfo, inst) != BRW_OPCODE_SEND && + brw_inst_opcode(devinfo, inst) != BRW_OPCODE_SENDC && + brw_inst_opcode(devinfo, inst) != BRW_OPCODE_BREAK && + brw_inst_opcode(devinfo, inst) != BRW_OPCODE_CONTINUE && + brw_inst_src0_reg_file(devinfo, inst) != BRW_IMMEDIATE_VALUE && + brw_inst_src1_reg_file(devinfo, inst) != BRW_IMMEDIATE_VALUE) { + brw_inst_set_bits(inst, 127, 111, 0); } } static bool -skip_bit(struct brw_instruction *src, int bit) +skip_bit(const struct brw_device_info *devinfo, brw_inst *src, int bit) { /* pad bit */ if (bit == 7) @@ -103,12 +97,12 @@ skip_bit(struct brw_instruction *src, int bit) return true; /* sometimes these are pad bits. */ - if (src->header.opcode != BRW_OPCODE_SEND && - src->header.opcode != BRW_OPCODE_SENDC && - src->header.opcode != BRW_OPCODE_BREAK && - src->header.opcode != BRW_OPCODE_CONTINUE && - src->bits1.da1.src0_reg_file != BRW_IMMEDIATE_VALUE && - src->bits1.da1.src1_reg_file != BRW_IMMEDIATE_VALUE && + if (brw_inst_opcode(devinfo, src) != BRW_OPCODE_SEND && + brw_inst_opcode(devinfo, src) != BRW_OPCODE_SENDC && + brw_inst_opcode(devinfo, src) != BRW_OPCODE_BREAK && + brw_inst_opcode(devinfo, src) != BRW_OPCODE_CONTINUE && + brw_inst_src0_reg_file(devinfo, src) != BRW_IMMEDIATE_VALUE && + brw_inst_src1_reg_file(devinfo, src) != BRW_IMMEDIATE_VALUE && bit >= 121) { return true; } @@ -117,24 +111,23 @@ skip_bit(struct brw_instruction *src, int bit) } static bool -test_fuzz_compact_instruction(struct brw_compile *p, - struct brw_instruction src) +test_fuzz_compact_instruction(struct brw_codegen *p, brw_inst src) { for (int bit0 = 0; bit0 < 128; bit0++) { - if (skip_bit(&src, bit0)) + if (skip_bit(p->devinfo, &src, bit0)) continue; for (int bit1 = 0; bit1 < 128; bit1++) { - struct brw_instruction instr = src; + brw_inst instr = src; uint32_t *bits = (uint32_t *)&instr; - if (skip_bit(&src, bit1)) + if (skip_bit(p->devinfo, &src, bit1)) continue; bits[bit0 / 32] ^= (1 << (bit0 & 31)); bits[bit1 / 32] ^= (1 << (bit1 & 31)); - clear_pad_bits(&instr); + clear_pad_bits(p->devinfo, &instr); if (!test_compact_instruction(p, instr)) { printf(" twiddled bits for fuzzing %d, %d\n", bit0, bit1); @@ -147,7 +140,7 @@ test_fuzz_compact_instruction(struct brw_compile *p, } static void -gen_ADD_GRF_GRF_GRF(struct brw_compile *p) +gen_ADD_GRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg g0 = brw_vec8_grf(0, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); @@ -157,7 +150,7 @@ gen_ADD_GRF_GRF_GRF(struct brw_compile *p) } static void -gen_ADD_GRF_GRF_IMM(struct brw_compile *p) +gen_ADD_GRF_GRF_IMM(struct brw_codegen *p) { struct brw_reg g0 = brw_vec8_grf(0, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); @@ -166,7 +159,7 @@ gen_ADD_GRF_GRF_IMM(struct brw_compile *p) } static void -gen_ADD_GRF_GRF_IMM_d(struct brw_compile *p) +gen_ADD_GRF_GRF_IMM_d(struct brw_codegen *p) { struct brw_reg g0 = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_D); struct brw_reg g2 = retype(brw_vec8_grf(2, 0), BRW_REGISTER_TYPE_D); @@ -175,7 +168,7 @@ gen_ADD_GRF_GRF_IMM_d(struct brw_compile *p) } static void -gen_MOV_GRF_GRF(struct brw_compile *p) +gen_MOV_GRF_GRF(struct brw_codegen *p) { struct brw_reg g0 = brw_vec8_grf(0, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); @@ -184,7 +177,7 @@ gen_MOV_GRF_GRF(struct brw_compile *p) } static void -gen_ADD_MRF_GRF_GRF(struct brw_compile *p) +gen_ADD_MRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg m6 = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 6, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); @@ -194,7 +187,7 @@ gen_ADD_MRF_GRF_GRF(struct brw_compile *p) } static void -gen_ADD_vec1_GRF_GRF_GRF(struct brw_compile *p) +gen_ADD_vec1_GRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg g0 = brw_vec1_grf(0, 0); struct brw_reg g2 = brw_vec1_grf(2, 0); @@ -204,7 +197,7 @@ gen_ADD_vec1_GRF_GRF_GRF(struct brw_compile *p) } static void -gen_PLN_MRF_GRF_GRF(struct brw_compile *p) +gen_PLN_MRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg m6 = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 6, 0); struct brw_reg interp = brw_vec1_grf(2, 0); @@ -214,13 +207,13 @@ gen_PLN_MRF_GRF_GRF(struct brw_compile *p) } static void -gen_f0_0_MOV_GRF_GRF(struct brw_compile *p) +gen_f0_0_MOV_GRF_GRF(struct brw_codegen *p) { struct brw_reg g0 = brw_vec8_grf(0, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); brw_push_insn_state(p); - brw_set_predicate_control(p, true); + brw_set_default_predicate_control(p, true); brw_MOV(p, g0, g2); brw_pop_insn_state(p); } @@ -230,20 +223,20 @@ gen_f0_0_MOV_GRF_GRF(struct brw_compile *p) * interact with it. */ static void -gen_f0_1_MOV_GRF_GRF(struct brw_compile *p) +gen_f0_1_MOV_GRF_GRF(struct brw_codegen *p) { struct brw_reg g0 = brw_vec8_grf(0, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); brw_push_insn_state(p); - brw_set_predicate_control(p, true); - current_insn(p)->bits2.da1.flag_subreg_nr = 1; - brw_MOV(p, g0, g2); + brw_set_default_predicate_control(p, true); + brw_inst *mov = brw_MOV(p, g0, g2); + brw_inst_set_flag_subreg_nr(p->devinfo, mov, 1); brw_pop_insn_state(p); } struct { - void (*func)(struct brw_compile *p); + void (*func)(struct brw_codegen *p); } tests[] = { { gen_MOV_GRF_GRF }, { gen_ADD_GRF_GRF_GRF }, @@ -257,20 +250,20 @@ struct { }; static bool -run_tests(struct brw_context *brw) +run_tests(const struct brw_device_info *devinfo) { bool fail = false; for (int i = 0; i < ARRAY_SIZE(tests); i++) { for (int align_16 = 0; align_16 <= 1; align_16++) { - struct brw_compile *p = rzalloc(NULL, struct brw_compile); - brw_init_compile(brw, p, p); + struct brw_codegen *p = rzalloc(NULL, struct brw_codegen); + brw_init_codegen(devinfo, p, p); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); + brw_set_default_predicate_control(p, BRW_PREDICATE_NONE); if (align_16) - brw_set_access_mode(p, BRW_ALIGN_16); + brw_set_default_access_mode(p, BRW_ALIGN_16); else - brw_set_access_mode(p, BRW_ALIGN_1); + brw_set_default_access_mode(p, BRW_ALIGN_1); tests[i].func(p); assert(p->nr_insn == 1); @@ -295,13 +288,12 @@ run_tests(struct brw_context *brw) int main(int argc, char **argv) { - struct brw_context *brw = calloc(1, sizeof(*brw)); - struct intel_context *intel = &brw->intel; - intel->gen = 6; + struct brw_device_info *devinfo = calloc(1, sizeof(*devinfo)); + devinfo->gen = 6; bool fail = false; - for (intel->gen = 6; intel->gen <= 7; intel->gen++) { - fail |= run_tests(brw); + for (devinfo->gen = 6; devinfo->gen <= 7; devinfo->gen++) { + fail |= run_tests(devinfo); } return fail;