From: Lionel Landwerlin Date: Thu, 28 Sep 2017 01:36:30 +0000 (+0100) Subject: intel: decoder: simplify field_is_header() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=20156931bf456932a4b53ad6685da42a7ad33ec2;p=mesa.git intel: decoder: simplify field_is_header() Signed-off-by: Lionel Landwerlin Reviewed-by: Scott D Phillips --- diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c index c0a46e5212e..760a8769c56 100644 --- a/src/intel/common/gen_decoder.c +++ b/src/intel/common/gen_decoder.c @@ -288,6 +288,7 @@ create_field(struct parser_context *ctx, const char **atts) struct gen_field *field; field = rzalloc(ctx->group, struct gen_field); + field->parent = ctx->group; for (int i = 0; atts[i]; i += 2) { char *p; @@ -960,7 +961,7 @@ print_dword_header(FILE *outfile, } bool -gen_group_header_is_header(struct gen_group *group, struct gen_field *field) +gen_field_is_header(struct gen_field *field) { uint32_t bits; @@ -970,7 +971,7 @@ gen_group_header_is_header(struct gen_group *group, struct gen_field *field) bits = (1U << (field->end - field->start + 1)) - 1; bits <<= field->start; - return (group->opcode_mask & bits) != 0; + return (field->parent->opcode_mask & bits) != 0; } void @@ -987,7 +988,7 @@ gen_print_group(FILE *outfile, struct gen_group *group, print_dword_header(outfile, &iter, offset, i); last_dword = iter.dword; } - if (!gen_group_header_is_header(group, iter.field)) { + if (!gen_field_is_header(iter.field)) { fprintf(outfile, " %s: %s\n", iter.name, iter.value); if (iter.struct_desc) { uint64_t struct_offset = offset + 4 * iter.dword; diff --git a/src/intel/common/gen_decoder.h b/src/intel/common/gen_decoder.h index f2291f43e92..9ee5fb51c2e 100644 --- a/src/intel/common/gen_decoder.h +++ b/src/intel/common/gen_decoder.h @@ -56,7 +56,7 @@ int gen_group_get_length(struct gen_group *group, const uint32_t *p); const char *gen_group_get_name(struct gen_group *group); uint32_t gen_group_get_opcode(struct gen_group *group); struct gen_enum *gen_spec_find_enum(struct gen_spec *spec, const char *name); -bool gen_group_header_is_header(struct gen_group *group, struct gen_field *field); +bool gen_field_is_header(struct gen_field *field); struct gen_field_iterator { struct gen_group *group; @@ -145,6 +145,7 @@ struct gen_type { }; struct gen_field { + struct gen_group *parent; struct gen_field *next; char *name;