intel/tools: Disassemble WAIT's argument as a destination
authorMatt Turner <mattst88@gmail.com>
Tue, 1 Sep 2020 19:09:16 +0000 (12:09 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 2 Sep 2020 17:18:18 +0000 (17:18 +0000)
commite4dadb545fa6cdf52b5a6a7efb5764495e09158c
tree2e8648e400ca2433f2b45be5ab9bc8e933479ef2
parent329dee14555b8c8da59e6b47a51050f2aa736596
intel/tools: Disassemble WAIT's argument as a destination

WAIT takes a notification register as a destination and a src0 argument.
Since the same notification register is specified in both fields, we
treat it as a special case and disassemble it only once.

If we disassemble it as if it is a source register, its scalar region
will be printed as <0,1,0>. This causes difficulties round-tripping
through the assembler <-> disassembler because that is not an acceptable
destination region. If we instead disassemble the destination, we
instead get a <1> region which is an acceptable and equivalent region
for source and destination.

The test .asm files are regenerated by round-tripping them through the
assembler/disassembler. Note that the <0> region in the tests was a
harmless mistake: the compiler translated it to a <0,1,0> source region
and a <1> destination region, since <0> isn't valid.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6543>
src/intel/compiler/brw_eu.cpp
src/intel/tools/tests/gen7.5/wait.asm
src/intel/tools/tests/gen7/wait.asm
src/intel/tools/tests/gen8/wait.asm
src/intel/tools/tests/gen9/wait.asm