[Mesa-dev] [PATCH 0/9] i965 assembly validator
mattst88 at gmail.com
Wed Oct 21 15:58:08 PDT 2015
Inspired by a bug this summer, I've written a basic assembly validation
pass. The series currently checks only three things:
- that instruction sources are not null (when they shouldn't be);
- that the Gen supports the instruction opcode; and
- that the various accumulator restrictions are satisfied.
To do this, I add a bit of infrastructure to the annotation system, to
allow errors to be printed.
In debug builds, an assertion checks that the assembly was validated.
When using INTEL_DEBUG=<shader stage>, ERROR: ... will be emitted
following a bad instruction, with a hopefully helpful message describing
what's wrong. For example:
mov(8) g116<1>.xUD null
ERROR: src0 is null
shader_runner: ../../../../../../mesa/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp:1671: void brw::vec4_generator::generate_code(const cfg_t*, const nir_shader*): Assertion `validated' failed.
I'd like to extend the validator to cover many more cases, but that's
no reason to hold back what I've already written -- checking for null
source would have saved three people a week or two after all.
More information about the mesa-dev