[Mesa-dev] [PATCH 3/9] i965: Don't consider control flow instructions to have sources.
Iago Toral
itoral at igalia.com
Wed Oct 28 03:32:07 PDT 2015
On Wed, 2015-10-21 at 15:58 -0700, Matt Turner wrote:
> And why did IFF have a destination?
>
> I suspect that once upon a time the disassembler used this information
> to know which fields to find the jump targets in. The jump targets have
> moved, so the disassembler has to know how to handle these
> per-generation anyway.
Control-flow instructions are explicitly handled by the disassembler and
don't use .nsrc or .ndst at all, so I think this should be fine.
The only other place where we use .ndst is the the check for compr4 in
gen < 6, but IFF would not fall in that case anyway.
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
> ---
> src/mesa/drivers/dri/i965/brw_disasm.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c
> index c2dac7c..29056ed 100644
> --- a/src/mesa/drivers/dri/i965/brw_disasm.c
> +++ b/src/mesa/drivers/dri/i965/brw_disasm.c
> @@ -90,20 +90,20 @@ const struct opcode_desc opcode_descs[128] = {
> [BRW_OPCODE_NOP] = { .name = "nop", .nsrc = 0, .ndst = 0 },
> [BRW_OPCODE_NENOP] = { .name = "nenop", .nsrc = 0, .ndst = 0 },
> [BRW_OPCODE_JMPI] = { .name = "jmpi", .nsrc = 0, .ndst = 0 },
> - [BRW_OPCODE_IF] = { .name = "if", .nsrc = 2, .ndst = 0 },
> - [BRW_OPCODE_IFF] = { .name = "iff", .nsrc = 2, .ndst = 1 },
> - [BRW_OPCODE_WHILE] = { .name = "while", .nsrc = 2, .ndst = 0 },
> - [BRW_OPCODE_ELSE] = { .name = "else", .nsrc = 2, .ndst = 0 },
> - [BRW_OPCODE_BREAK] = { .name = "break", .nsrc = 2, .ndst = 0 },
> - [BRW_OPCODE_CONTINUE] = { .name = "cont", .nsrc = 1, .ndst = 0 },
> - [BRW_OPCODE_HALT] = { .name = "halt", .nsrc = 1, .ndst = 0 },
> + [BRW_OPCODE_IF] = { .name = "if", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_IFF] = { .name = "iff", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_WHILE] = { .name = "while", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_ELSE] = { .name = "else", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_BREAK] = { .name = "break", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_CONTINUE] = { .name = "cont", .nsrc = 0, .ndst = 0 },
> + [BRW_OPCODE_HALT] = { .name = "halt", .nsrc = 0, .ndst = 0 },
> // [BRW_OPCODE_MSAVE] = { .name = "msave", .nsrc = 1, .ndst = 1 },
> // [BRW_OPCODE_PUSH] = { .name = "push", .nsrc = 1, .ndst = 1 },
> // [BRW_OPCODE_MREST] = { .name = "mrest", .nsrc = 1, .ndst = 1 },
> // [BRW_OPCODE_POP] = { .name = "pop", .nsrc = 2, .ndst = 0 },
> [BRW_OPCODE_WAIT] = { .name = "wait", .nsrc = 1, .ndst = 0 },
> [BRW_OPCODE_DO] = { .name = "do", .nsrc = 0, .ndst = 0 },
> - [BRW_OPCODE_ENDIF] = { .name = "endif", .nsrc = 2, .ndst = 0 },
> + [BRW_OPCODE_ENDIF] = { .name = "endif", .nsrc = 0, .ndst = 0 },
> };
>
> static bool
More information about the mesa-dev
mailing list