summaryrefslogtreecommitdiffstats
path: root/src/intel/genxml
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/genxml')
-rw-r--r--src/intel/genxml/gen_pack_header.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/intel/genxml/gen_pack_header.py b/src/intel/genxml/gen_pack_header.py
index 81c64cbbc75..1b1949ff8a5 100644
--- a/src/intel/genxml/gen_pack_header.py
+++ b/src/intel/genxml/gen_pack_header.py
@@ -347,7 +347,7 @@ class Group(object):
dwords[index + 1] = dwords[index]
index = index + 1
- def emit_pack_function(self):
+ def collect_dwords_and_length(self):
dwords = {}
self.collect_dwords(dwords, 0, "")
@@ -357,9 +357,14 @@ class Group(object):
# index we've seen plus one.
if self.size > 0:
length = self.size // 32
- else:
+ elif dwords:
length = max(dwords.keys()) + 1
+ else:
+ length = 0
+
+ return (dwords, length)
+ def emit_pack_function(self, dwords, length):
for index in range(length):
# Handle MBZ dwords
if not index in dwords:
@@ -576,10 +581,12 @@ class Parser(object):
print("static inline void\n%s_pack(__gen_user_data *data, void * restrict dst,\n%sconst struct %s * restrict values)\n{" %
(name, ' ' * (len(name) + 6), name))
- # Cast dst to make header C++ friendly
- print(" uint32_t * restrict dw = (uint32_t * restrict) dst;")
+ (dwords, length) = group.collect_dwords_and_length()
+ if length:
+ # Cast dst to make header C++ friendly
+ print(" uint32_t * restrict dw = (uint32_t * restrict) dst;")
- group.emit_pack_function()
+ group.emit_pack_function(dwords, length)
print("}\n")