[Mesa-dev] [PATCH] intel: genxml: prevent missing ; with address fields dwords
Jason Ekstrand
jason at jlekstrand.net
Mon Mar 13 15:54:01 UTC 2017
On Mon, Mar 13, 2017 at 3:46 AM, Lionel Landwerlin <
lionel.g.landwerlin at intel.com> wrote:
> Before this change, the generator could print this kind of things :
>
> const uint32_t v0 =
> __gen_uint(values->ValidBit, 0, 0) |
> __gen_uint(values->FaultType, 1, 2) |
> __gen_uint(values->SRCIDofFault, 3, 10) |
> __gen_uint(values->GTTSEL, 11, 1) |
> dw[0] = __gen_combine_address(data, &dw[0],
> values->VirtualAddressofFault, v0);
>
> This change fix the trailing '|'.
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> src/intel/genxml/gen_pack_header.py | 54 ++++++++++++++++++------------
> -------
> 1 file changed, 26 insertions(+), 28 deletions(-)
>
> diff --git a/src/intel/genxml/gen_pack_header.py
> b/src/intel/genxml/gen_pack_header.py
> index a1befaf45e..88a42e4b57 100644
> --- a/src/intel/genxml/gen_pack_header.py
> +++ b/src/intel/genxml/gen_pack_header.py
> @@ -415,51 +415,49 @@ class Group(object):
> v = "0"
>
> field_index = 0
> + non_address_fields = []
> for field in dw.fields:
> if field.type != "mbo":
> name = field.name + field.dim
>
> if field.type == "mbo":
> - s = "__gen_mbo(%d, %d)" % \
> - (field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_mbo(%d, %d)" % \
> + (field.start - dword_start, field.end -
> dword_start))
> elif field.type == "address":
> - s = None
> + pass
> elif field.type == "uint":
> - s = "__gen_uint(values->%s, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_uint(values->%s,
> %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start))
> elif field.type in self.parser.enums:
> - s = "__gen_uint(values->%s, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_uint(values->%s,
> %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start))
> elif field.type == "int":
> - s = "__gen_sint(values->%s, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_sint(values->%s,
> %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start))
> elif field.type == "bool":
> - s = "__gen_uint(values->%s, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_uint(values->%s,
> %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start))
> elif field.type == "float":
> - s = "__gen_float(values->%s)" % name
> + non_address_fields.append("__gen_float(values->%s)"
> % name)
> elif field.type == "offset":
> - s = "__gen_offset(values->%s, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start)
> + non_address_fields.append("__gen_offset(values->%s,
> %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start))
> elif field.type == 'ufixed':
> - s = "__gen_ufixed(values->%s, %d, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start, field.fractional_size)
> + non_address_fields.append("__gen_ufixed(values->%s,
> %d, %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start, field.fractional_size))
> elif field.type == 'sfixed':
> - s = "__gen_sfixed(values->%s, %d, %d, %d)" % \
> - (name, field.start - dword_start, field.end -
> dword_start, field.fractional_size)
> + non_address_fields.append("__gen_sfixed(values->%s,
> %d, %d, %d)" % \
> + (name, field.start - dword_start, field.end -
> dword_start, field.fractional_size))
> elif field.type in self.parser.structs:
> - s = "__gen_uint(v%d_%d, %d, %d)" % \
> - (index, field_index, field.start - dword_start,
> field.end - dword_start)
> + non_address_fields.append("__gen_uint(v%d_%d, %d,
> %d)" % \
> + (index, field_index, field.start - dword_start,
> field.end - dword_start))
> field_index = field_index + 1
> else:
> - print("/* unhandled field %s, type %s */\n" % (name,
> field.type))
> - s = None
> -
> - if not s == None:
> - if field == dw.fields[-1]:
> - print(" %s;" % s)
> - else:
> - print(" %s |" % s)
> + non_address_fields.append("/* unhandled field %s,
> type %s */\n" % \
> + (name, field.type))
> +
> + if len(non_address_fields) > 0:
> + print("%s;" % " |\n".join(map(lambda x: " %s" % x,
> non_address_fields)))
>
Another way to do this (which I find easier to read) would be
print(" |\n".join(" " + f for f in non_address_fields) + ";")
Gets rid of the lambda and some of the string formatting. Either way,
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
We really need to clean up the generator. :-/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170313/dbdf1475/attachment-0001.html>
More information about the mesa-dev
mailing list