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>
This commit is contained in:
@@ -245,5 +245,12 @@ op("stop", (0x88, 0xFFFF, 2, _), dests = 0, can_eliminate = False)
|
||||
op("trap", (0x08, 0xFFFF, 2, _), dests = 0, can_eliminate = False)
|
||||
op("writeout", (0x48, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], can_eliminate = False)
|
||||
|
||||
# Convenient aliases.
|
||||
op("mov", _, srcs = 1)
|
||||
op("not", _, srcs = 1)
|
||||
op("xor", _, srcs = 2)
|
||||
op("and", _, srcs = 2)
|
||||
op("or", _, srcs = 2)
|
||||
|
||||
op("p_combine", _, srcs = 4)
|
||||
op("p_extract", _, srcs = 1, imms = [COMPONENT])
|
||||
|
Reference in New Issue
Block a user