panfrost: Clean-up one-argument passing quirk
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 7 Feb 2019 03:39:25 +0000 (03:39 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 10 Feb 2019 00:41:25 +0000 (00:41 +0000)
commit97dcad8d3e6cce946a71d2fdf0ffe65d113d64e1
treec3757ad2fa093784899623b837f98a2bae7ef160
parent49397a3c840b38f8c65705dd05d642c0beb4dea9
panfrost: Clean-up one-argument passing quirk

Most Midgard instructions take two-arguments logically; there are always
two arguments at the assembly level. For the few instructions that take
only a single argument, generally the second argument slot is unused,
with a zero inline constant occupying the space. fmov/imov are the
exception, where the first argument is filled with r24 and the logical
argument is in the second slot.

Previously, these constraints were handled by a delicate, buggy series
of hacks. This commit removes these hacks. Instead, we look at the
logical number of arguments (from NIR), switching between two argument
and one-argument-one-zero style. We then introduce a quirk for the
flipped style, which applies to fmov/imov.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/midgard/helpers.h
src/gallium/drivers/panfrost/midgard/midgard_compile.c