On 6/24/22 23:46, Francisco Casas wrote:
Hello,
I attach the third version of the previous patch, applying the suggestions made by Zeb, and some other changes that arose from them.
The patch is based on the master branch, but I guess I will have to update it if the recent patches from Giovanni are accepted, before sending it for review.
Is it not possible to split up this patch, as I had asked earlier?
There's also a couple things I notice from skimming:
* I think add_load() should also be split into deref / component versions. Most of its users only need to count components.
* Actually, should we be passing a deref instead of just a var to hlsl_new_component_load()? See e.g. add_cast(). That would make it a simple wrapper around hlsl_new_load_from_deref() [and the names would also need to be changed...] I'm not sure why I thought it made sense like this, frankly.
* Do we need to always split up matrices into scalars? Should we make non-contiguous loads a problem for parse time? As long as we're trying to keep backend-specific details out of the HLSL IR, that seems potentially reasonable; it'd just require emitting multiple copy instructions for some cases. That would allow us to simplify split_copy() and add_matrix_scalar_load(), and I believe would thus also get rid of the need to pass multiple offsets to hlsl_new_load_from_deref().