microsoft/compiler: Back-propagate type requirement information
authorJesse Natalie <jenatali@microsoft.com>
Thu, 11 May 2023 20:23:34 +0000 (13:23 -0700)
committerMarge Bot <emma+marge@anholt.net>
Fri, 12 May 2023 22:23:48 +0000 (22:23 +0000)
commit75e140711681915d0ac3dd0caec2df5436657a39
tree9e624ffb52b87432c46dadc12e54c813af4ec622
parentd94e23d7bd516988df3aafbe1438f89d6121e254
microsoft/compiler: Back-propagate type requirement information

For ALU ops where input types are known, we can store that info on
the input sources. This can be used to produce the correct overloads
of load instructions that don't immediately need to be followed by
bitcasts, or similarly to produce a constant value which can be directly
consumed by the relevant instruction without needing a bitcast.

Similarly for values that will be stored in an output, we know type
information. And using that info, we can use more-correct information
for phis instead of forcing all phi sources to be bitcast to int just
to be bitcast back to float on the other side for an alu or an output
store.

One missing piece is SSBO stores, where we can support int or float.
If the input is coming from a phi, we don't influence the phi's type,
so it'll be int, even though the incoming sources might've been float.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22972>
src/microsoft/compiler/nir_to_dxil.c