nir: Model AGX-specific multiply-shift-add
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Tue, 25 Apr 2023 18:37:07 +0000 (14:37 -0400)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 11 May 2023 13:23:09 +0000 (09:23 -0400)
commit18e19882fa6117d83e146dfc180c2c74ebbb9dfe
tree99fbbad14f68f26b48444168f81ab7585552dfa1
parent3df4ae333438b1f7e9380e94dd1a35f3d8b46294
nir: Model AGX-specific multiply-shift-add

Models `(a * b) + (c << d)` in general, as implemented in various forms on AGX.
This will be fused with backend NIR opt algebraic rules, both for the literal
pattern as well as to strength reduce certain multiplications, e.g. replacing
a * 5 with `a + (a << 2)` expressed as imadshl_agx(a, 1, a, 2).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22695>
src/compiler/nir/nir_opcodes.py