diff options
author | Matt Turner <[email protected]> | 2016-11-06 21:20:16 -0800 |
---|---|---|
committer | Matt Turner <[email protected]> | 2017-01-20 11:40:52 -0800 |
commit | 7abc65dd7c2856b71c1db468af1cc6b6889ad293 (patch) | |
tree | f74ea57d5b5e3a5ad9a4e8ed2ca469cbb9f6544a | |
parent | a693305b61b1183d18699240b40a0a62c5c07381 (diff) |
i965: Factor out sources_not_null() validation function.
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu_validate.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu_validate.c b/src/mesa/drivers/dri/i965/brw_eu_validate.c index d3c15da8c55..4874adda277 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_validate.c +++ b/src/mesa/drivers/dri/i965/brw_eu_validate.c @@ -132,6 +132,28 @@ num_sources_from_inst(const struct gen_device_info *devinfo, } } +static struct string +sources_not_null(const struct gen_device_info *devinfo, + const brw_inst *inst) +{ + unsigned num_sources = num_sources_from_inst(devinfo, inst); + struct string error_msg = { .str = NULL, .len = 0 }; + + /* Nothing to test. 3-src instructions can only have GRF sources, and + * there's no bit to control the file. + */ + if (num_sources == 3) + return (struct string){}; + + if (num_sources >= 1) + ERROR_IF(src0_is_null(devinfo, inst), "src0 is null"); + + if (num_sources == 2) + ERROR_IF(src1_is_null(devinfo, inst), "src1 is null"); + + return error_msg; +} + static bool is_unsupported_inst(const struct gen_device_info *devinfo, const brw_inst *inst) @@ -152,26 +174,10 @@ brw_validate_instructions(const struct brw_codegen *p, int start_offset, struct string error_msg = { .str = NULL, .len = 0 }; const brw_inst *inst = store + src_offset; - switch (num_sources_from_inst(devinfo, inst)) { - case 3: - /* Nothing to test. 3-src instructions can only have GRF sources, and - * there's no bit to control the file. - */ - break; - case 2: - ERROR_IF(src1_is_null(devinfo, inst), "src1 is null"); - /* fallthrough */ - case 1: - ERROR_IF(src0_is_null(devinfo, inst), "src0 is null"); - break; - case 0: - default: - break; - } - if (is_unsupported_inst(devinfo, inst)) { ERROR("Instruction not supported on this Gen"); } else { + CHECK(sources_not_null); } if (brw_inst_opcode(devinfo, inst) == BRW_OPCODE_SEND) { |