python: Better iterate over dictionaries
In Python 2, dictionaries have 2 sets of methods to iterate over their keys and values: keys()/values()/items() and iterkeys()/itervalues()/iteritems(). The former return lists while the latter return iterators. Python 3 dropped the method which return lists, and renamed the methods returning iterators to keys()/values()/items(). Using those names makes the scripts compatible with both Python 2 and 3. Signed-off-by: Mathieu Bridon <bochecha@daitauha.fr> Reviewed-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
This commit is contained in:

committed by
Dylan Baker

parent
fdf946ffbf
commit
5530cb1296
@@ -433,7 +433,7 @@ def get_entrypoints(doc, entrypoints_to_defines, start_index):
|
|||||||
e_clone.name = e.name
|
e_clone.name = e.name
|
||||||
entrypoints[e.name] = e_clone
|
entrypoints[e.name] = e_clone
|
||||||
|
|
||||||
return [e for e in entrypoints.itervalues() if e.enabled]
|
return [e for e in entrypoints.values() if e.enabled]
|
||||||
|
|
||||||
|
|
||||||
def get_entrypoints_defines(doc):
|
def get_entrypoints_defines(doc):
|
||||||
|
@@ -512,7 +512,7 @@ struct transform {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
% for (opcode, xform_list) in xform_dict.iteritems():
|
% for (opcode, xform_list) in xform_dict.items():
|
||||||
% for xform in xform_list:
|
% for xform in xform_list:
|
||||||
${xform.search.render()}
|
${xform.search.render()}
|
||||||
${xform.replace.render()}
|
${xform.replace.render()}
|
||||||
|
@@ -34,7 +34,7 @@ def src_list(num_srcs):
|
|||||||
return ', '.join('src' + str(i) if i < num_srcs else 'NULL' for i in range(4))
|
return ', '.join('src' + str(i) if i < num_srcs else 'NULL' for i in range(4))
|
||||||
%>
|
%>
|
||||||
|
|
||||||
% for name, opcode in sorted(opcodes.iteritems()):
|
% for name, opcode in sorted(opcodes.items()):
|
||||||
static inline nir_ssa_def *
|
static inline nir_ssa_def *
|
||||||
nir_${name}(nir_builder *build, ${src_decl_list(opcode.num_inputs)})
|
nir_${name}(nir_builder *build, ${src_decl_list(opcode.num_inputs)})
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@ nir_load_system_value(nir_builder *build, nir_intrinsic_op op, int index)
|
|||||||
return &load->dest.ssa;
|
return &load->dest.ssa;
|
||||||
}
|
}
|
||||||
|
|
||||||
% for name, opcode in filter(lambda v: v[1].sysval, sorted(INTR_OPCODES.iteritems())):
|
% for name, opcode in filter(lambda v: v[1].sysval, sorted(INTR_OPCODES.items())):
|
||||||
static inline nir_ssa_def *
|
static inline nir_ssa_def *
|
||||||
nir_${name}(nir_builder *build)
|
nir_${name}(nir_builder *build)
|
||||||
{
|
{
|
||||||
|
@@ -387,7 +387,7 @@ struct bool32_vec {
|
|||||||
% endif
|
% endif
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
% for name, op in sorted(opcodes.iteritems()):
|
% for name, op in sorted(opcodes.items()):
|
||||||
static nir_const_value
|
static nir_const_value
|
||||||
evaluate_${name}(MAYBE_UNUSED unsigned num_components,
|
evaluate_${name}(MAYBE_UNUSED unsigned num_components,
|
||||||
${"UNUSED" if op_bit_sizes(op) is None else ""} unsigned bit_size,
|
${"UNUSED" if op_bit_sizes(op) is None else ""} unsigned bit_size,
|
||||||
@@ -420,7 +420,7 @@ nir_eval_const_opcode(nir_op op, unsigned num_components,
|
|||||||
unsigned bit_width, nir_const_value *src)
|
unsigned bit_width, nir_const_value *src)
|
||||||
{
|
{
|
||||||
switch (op) {
|
switch (op) {
|
||||||
% for name in sorted(opcodes.iterkeys()):
|
% for name in sorted(opcodes.keys()):
|
||||||
case nir_op_${name}:
|
case nir_op_${name}:
|
||||||
return evaluate_${name}(num_components, bit_width, src);
|
return evaluate_${name}(num_components, bit_width, src);
|
||||||
% endfor
|
% endfor
|
||||||
|
@@ -25,7 +25,7 @@ template = """\
|
|||||||
#include "nir.h"
|
#include "nir.h"
|
||||||
|
|
||||||
const nir_intrinsic_info nir_intrinsic_infos[nir_num_intrinsics] = {
|
const nir_intrinsic_info nir_intrinsic_infos[nir_num_intrinsics] = {
|
||||||
% for name, opcode in sorted(INTR_OPCODES.iteritems()):
|
% for name, opcode in sorted(INTR_OPCODES.items()):
|
||||||
{
|
{
|
||||||
.name = "${name}",
|
.name = "${name}",
|
||||||
.num_srcs = ${opcode.num_srcs},
|
.num_srcs = ${opcode.num_srcs},
|
||||||
|
@@ -116,7 +116,7 @@ nir_type_conversion_op(nir_alu_type src, nir_alu_type dst, nir_rounding_mode rnd
|
|||||||
}
|
}
|
||||||
|
|
||||||
const nir_op_info nir_op_infos[nir_num_opcodes] = {
|
const nir_op_info nir_op_infos[nir_num_opcodes] = {
|
||||||
% for name, opcode in sorted(opcodes.iteritems()):
|
% for name, opcode in sorted(opcodes.items()):
|
||||||
{
|
{
|
||||||
.name = "${name}",
|
.name = "${name}",
|
||||||
.num_inputs = ${opcode.num_inputs},
|
.num_inputs = ${opcode.num_inputs},
|
||||||
|
@@ -29,7 +29,7 @@ template = """\
|
|||||||
#ifndef _NIR_OPCODES_
|
#ifndef _NIR_OPCODES_
|
||||||
#define _NIR_OPCODES_
|
#define _NIR_OPCODES_
|
||||||
|
|
||||||
<% opcode_names = sorted(opcodes.iterkeys()) %>
|
<% opcode_names = sorted(opcodes.keys()) %>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
% for name in opcode_names:
|
% for name in opcode_names:
|
||||||
|
@@ -108,13 +108,13 @@ ${item.token_name}_${prop}(const struct gen_device_info *devinfo)
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
% for _, container in sorted(containers.iteritems(), key=itemgetter(0)):
|
% for _, container in sorted(containers.items(), key=itemgetter(0)):
|
||||||
|
|
||||||
/* ${container.name} */
|
/* ${container.name} */
|
||||||
|
|
||||||
${emit_per_gen_prop_func(container, 'length')}
|
${emit_per_gen_prop_func(container, 'length')}
|
||||||
|
|
||||||
% for _, field in sorted(container.fields.iteritems(), key=itemgetter(0)):
|
% for _, field in sorted(container.fields.items(), key=itemgetter(0)):
|
||||||
|
|
||||||
/* ${container.name}::${field.name} */
|
/* ${container.name}::${field.name} */
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ class Container(object):
|
|||||||
|
|
||||||
def iter_prop(self, prop):
|
def iter_prop(self, prop):
|
||||||
if prop == 'length':
|
if prop == 'length':
|
||||||
return self.length_by_gen.iteritems()
|
return self.length_by_gen.items()
|
||||||
else:
|
else:
|
||||||
raise ValueError('Invalid property: "{0}"'.format(prop))
|
raise ValueError('Invalid property: "{0}"'.format(prop))
|
||||||
|
|
||||||
@@ -253,9 +253,9 @@ class Field(object):
|
|||||||
|
|
||||||
def iter_prop(self, prop):
|
def iter_prop(self, prop):
|
||||||
if prop == 'bits':
|
if prop == 'bits':
|
||||||
return self.bits_by_gen.iteritems()
|
return self.bits_by_gen.items()
|
||||||
elif prop == 'start':
|
elif prop == 'start':
|
||||||
return self.start_by_gen.iteritems()
|
return self.start_by_gen.items()
|
||||||
else:
|
else:
|
||||||
raise ValueError('Invalid property: "{0}"'.format(prop))
|
raise ValueError('Invalid property: "{0}"'.format(prop))
|
||||||
|
|
||||||
|
@@ -504,7 +504,7 @@ def get_entrypoints(doc, entrypoints_to_defines, start_index):
|
|||||||
assert e.core_version is None
|
assert e.core_version is None
|
||||||
e.extensions.append(ext)
|
e.extensions.append(ext)
|
||||||
|
|
||||||
return [e for e in entrypoints.itervalues() if e.enabled]
|
return [e for e in entrypoints.values() if e.enabled]
|
||||||
|
|
||||||
|
|
||||||
def get_entrypoints_defines(doc):
|
def get_entrypoints_defines(doc):
|
||||||
|
@@ -834,7 +834,7 @@ class gl_function( gl_item ):
|
|||||||
versions.
|
versions.
|
||||||
"""
|
"""
|
||||||
result = []
|
result = []
|
||||||
for entry_point, api_to_ver in self.entry_point_api_map.iteritems():
|
for entry_point, api_to_ver in self.entry_point_api_map.items():
|
||||||
if api not in api_to_ver:
|
if api not in api_to_ver:
|
||||||
continue
|
continue
|
||||||
if version is not None and version < api_to_ver[api]:
|
if version is not None and version < api_to_ver[api]:
|
||||||
@@ -881,7 +881,7 @@ class gl_api(object):
|
|||||||
def filter_functions(self, entry_point_list):
|
def filter_functions(self, entry_point_list):
|
||||||
"""Filter out entry points not in entry_point_list."""
|
"""Filter out entry points not in entry_point_list."""
|
||||||
functions_by_name = {}
|
functions_by_name = {}
|
||||||
for func in self.functions_by_name.itervalues():
|
for func in self.functions_by_name.values():
|
||||||
entry_points = [ent for ent in func.entry_points if ent in entry_point_list]
|
entry_points = [ent for ent in func.entry_points if ent in entry_point_list]
|
||||||
if entry_points:
|
if entry_points:
|
||||||
func.filter_entry_points(entry_points)
|
func.filter_entry_points(entry_points)
|
||||||
@@ -894,7 +894,7 @@ class gl_api(object):
|
|||||||
optionally, not in the given version of the given API).
|
optionally, not in the given version of the given API).
|
||||||
"""
|
"""
|
||||||
functions_by_name = {}
|
functions_by_name = {}
|
||||||
for func in self.functions_by_name.itervalues():
|
for func in self.functions_by_name.values():
|
||||||
entry_points = func.entry_points_for_api_version(api, version)
|
entry_points = func.entry_points_for_api_version(api, version)
|
||||||
if entry_points:
|
if entry_points:
|
||||||
func.filter_entry_points(entry_points)
|
func.filter_entry_points(entry_points)
|
||||||
@@ -1003,13 +1003,13 @@ class gl_api(object):
|
|||||||
|
|
||||||
def functionIterateByOffset(self):
|
def functionIterateByOffset(self):
|
||||||
max_offset = -1
|
max_offset = -1
|
||||||
for func in self.functions_by_name.itervalues():
|
for func in self.functions_by_name.values():
|
||||||
if func.offset > max_offset:
|
if func.offset > max_offset:
|
||||||
max_offset = func.offset
|
max_offset = func.offset
|
||||||
|
|
||||||
|
|
||||||
temp = [None for i in range(0, max_offset + 1)]
|
temp = [None for i in range(0, max_offset + 1)]
|
||||||
for func in self.functions_by_name.itervalues():
|
for func in self.functions_by_name.values():
|
||||||
if func.offset != -1:
|
if func.offset != -1:
|
||||||
temp[ func.offset ] = func
|
temp[ func.offset ] = func
|
||||||
|
|
||||||
@@ -1023,7 +1023,7 @@ class gl_api(object):
|
|||||||
|
|
||||||
|
|
||||||
def functionIterateAll(self):
|
def functionIterateAll(self):
|
||||||
return self.functions_by_name.itervalues()
|
return self.functions_by_name.values()
|
||||||
|
|
||||||
|
|
||||||
def enumIterateByName(self):
|
def enumIterateByName(self):
|
||||||
@@ -1064,7 +1064,7 @@ class gl_api(object):
|
|||||||
|
|
||||||
|
|
||||||
def typeIterate(self):
|
def typeIterate(self):
|
||||||
return self.types_by_name.itervalues()
|
return self.types_by_name.values()
|
||||||
|
|
||||||
|
|
||||||
def find_type( self, type_name ):
|
def find_type( self, type_name ):
|
||||||
|
@@ -202,13 +202,13 @@ class PrintCode(gl_XML.gl_print_base):
|
|||||||
|
|
||||||
# Determine how many functions have a defined offset.
|
# Determine how many functions have a defined offset.
|
||||||
func_count = 0
|
func_count = 0
|
||||||
for f in api.functions_by_name.itervalues():
|
for f in api.functions_by_name.values():
|
||||||
if f.offset != -1:
|
if f.offset != -1:
|
||||||
func_count += 1
|
func_count += 1
|
||||||
|
|
||||||
# Build the mapping from offset to function name.
|
# Build the mapping from offset to function name.
|
||||||
funcnames = [None] * func_count
|
funcnames = [None] * func_count
|
||||||
for f in api.functions_by_name.itervalues():
|
for f in api.functions_by_name.values():
|
||||||
if f.offset != -1:
|
if f.offset != -1:
|
||||||
if not (funcnames[f.offset] is None):
|
if not (funcnames[f.offset] is None):
|
||||||
raise Exception("Function table has more than one function with same offset (offset %d, func %s)" % (f.offset, f.name))
|
raise Exception("Function table has more than one function with same offset (offset %d, func %s)" % (f.offset, f.name))
|
||||||
|
@@ -653,7 +653,7 @@ def main():
|
|||||||
|
|
||||||
c("\n")
|
c("\n")
|
||||||
register_lengths = compute_register_lengths(set);
|
register_lengths = compute_register_lengths(set);
|
||||||
for reg_type, reg_length in register_lengths.iteritems():
|
for reg_type, reg_length in register_lengths.items():
|
||||||
c("static struct brw_perf_query_register_prog {0}_{1}_{2}[{3}];".format(gen.chipset,
|
c("static struct brw_perf_query_register_prog {0}_{1}_{2}[{3}];".format(gen.chipset,
|
||||||
set.underscore_name,
|
set.underscore_name,
|
||||||
reg_type, reg_length))
|
reg_type, reg_length))
|
||||||
@@ -692,7 +692,7 @@ def main():
|
|||||||
.c_offset = 46,
|
.c_offset = 46,
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
for reg_type, reg_length in register_lengths.iteritems():
|
for reg_type, reg_length in register_lengths.items():
|
||||||
c(".{0} = {1}_{2}_{3},".format(reg_type, gen.chipset, set.underscore_name, reg_type))
|
c(".{0} = {1}_{2}_{3},".format(reg_type, gen.chipset, set.underscore_name, reg_type))
|
||||||
c(".n_{0} = 0, /* Determined at runtime */".format(reg_type))
|
c(".n_{0} = 0, /* Determined at runtime */".format(reg_type))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user