diff --git a/src/panfrost/bifrost/bi_opcodes.c.py b/src/panfrost/bifrost/bi_opcodes.c.py index 3df12c9e0ff..9e6b9e4e86f 100644 --- a/src/panfrost/bifrost/bi_opcodes.c.py +++ b/src/panfrost/bifrost/bi_opcodes.c.py @@ -30,12 +30,13 @@ struct bi_op_props bi_opcode_props[BI_NUM_OPCODES] = { sr_count = add["staging_count"].upper() if add else "0" sr_read = int(add["staging"] in ["r", "rw"] if add else False) sr_write = int(add["staging"] in ["w", "rw"] if add else False) + last = int(bool(add["last"]) if add else False) has_fma = int("*" + opcode in instructions) has_add = int("+" + opcode in instructions) %> [BI_OPCODE_${opcode.replace('.', '_').upper()}] = { "${opcode}", BIFROST_MESSAGE_${message}, BI_SR_COUNT_${sr_count}, - ${sr_read}, ${sr_write}, ${has_fma}, ${has_add}, + ${sr_read}, ${sr_write}, ${last}, ${has_fma}, ${has_add}, }, % endfor };""" diff --git a/src/panfrost/bifrost/bi_opcodes.h.py b/src/panfrost/bifrost/bi_opcodes.h.py index d7d6a9eb938..9e4febcd6d1 100644 --- a/src/panfrost/bifrost/bi_opcodes.h.py +++ b/src/panfrost/bifrost/bi_opcodes.h.py @@ -72,6 +72,7 @@ struct bi_op_props { enum bi_sr_count sr_count : 3; bool sr_read : 1; bool sr_write : 1; + bool last : 1; bool fma : 1; bool add : 1; }; diff --git a/src/panfrost/bifrost/bifrost_isa.py b/src/panfrost/bifrost/bifrost_isa.py index ca46d663c59..e7378c70a43 100644 --- a/src/panfrost/bifrost/bifrost_isa.py +++ b/src/panfrost/bifrost/bifrost_isa.py @@ -134,6 +134,7 @@ def parse_instruction(ins, include_pseudo): 'unused': ins.attrib.get('unused', False), 'pseudo': ins.attrib.get('pseudo', False), 'message': ins.attrib.get('message', 'none'), + 'last': ins.attrib.get('last', False) } if 'exact' in ins.attrib: