pan/va: Handle 64-bit sources in message instrs

These take up two slots, reading an aligned register pair, even though they are
in a 32-bit instruction. Required to correctly model BLEND.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15364>
This commit is contained in:
Alyssa Rosenzweig
2022-03-04 20:00:35 -05:00
committed by Marge Bot
parent 9878469833
commit c7e8e8b319
+14 -1
View File
@@ -258,7 +258,20 @@ def build_instr(el, overrides = {}):
# Get explicit sources/dests
tsize = typesize(name)
sources = [build_source(src, i, tsize) for i, src in enumerate(el.findall('src'))]
sources = []
i = 0
for src in el.findall('src'):
built = build_source(src, i, tsize)
sources += [built]
# 64-bit sources in a 32-bit (message) instruction count as two slots
# Affects BLEND, ST_CVT
if tsize != 64 and built.size == 64:
i = i + 2
else:
i = i + 1
dests = [Dest(dest.text or '') for dest in el.findall('dest')]
# Get implicit ones