agx: Use pseudo ops for mov/not/and/xor/or
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Tue, 12 Apr 2022 22:06:16 +0000 (18:06 -0400)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 2 May 2022 01:58:29 +0000 (21:58 -0400)
commit7d38bcb7ee243a55252554d559e104f898c91829
tree0afe70cd3edc69cbef16fa6bda87d6aa8537300b
parent3d8c2f26932ed28f50f5f5c4d031d498d4606af9
agx: Use pseudo ops for mov/not/and/xor/or

Rather than using builder magic (implicitly lowered on emit), add actual pseudo
operations (explicitly lowered before encoding). In theory this is slower, I
doubt it matters. This makes the instruction aliases first-class for IR prining
and machine inspection, which will make optimization passes easier to write.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16268>
src/asahi/compiler/agx_builder.h.py
src/asahi/compiler/agx_compile.c
src/asahi/compiler/agx_compiler.h
src/asahi/compiler/agx_lower_pseudo.c [new file with mode: 0644]
src/asahi/compiler/agx_opcodes.py
src/asahi/compiler/meson.build
src/asahi/compiler/test/test-lower-pseudo.cpp [new file with mode: 0644]