[PATCH vkd3d 02/17] vkd3d-shader/hlsl: Handle branches in copy propagation.
Giovanni Mascellani
gmascellani at codeweavers.com
Fri Dec 3 03:28:55 CST 2021
Hi,
On 01/12/21 17:14, Matteo Bruni wrote:
> changelog: Continue copy propagation after encountering an IF, rework to
> store the copy_propagation_state structs on the stack and search
> recursively
I still don't like these changes, they make the code more complicated
than it should be, but I'll live with them.
However, I think you're introducing some missed optimizations with this
specific patch. For example, take this code:
float2 a;
a.x = 1.0;
if (condition)
{
a.y = 2.0;
do_something(a.x);
}
You would expect a.x replaced with 1.0 in do_something(), but I don't
think that's happening in you implementation: inside the conditional a
new copy_propagation_var_def is created for variable a, which masks the
previous knowledge about a.x being 1.0. This can probably be fixed in
copy_propagation_create_var_def in the missing entry case by first doing
a lookup on the lower frames and using that result, if it exists, to
initialize the new copy_propagation_var_def.
Giovanni.
More information about the wine-devel
mailing list