This patch originally was in !93 but I decided to separate it, since it solves a different bug that the first part of that series.
Currently, in copy-prop, we may create nodes of different dimensions than the ones we are replacing, i.e. the assertions included in this patch fail for many tests.
Without the patch, the following assertion in `hlsl_sm4.c` fails for me
```c /* Narrowing casts were already lowered. */ assert(src_type->dimx == dst_type->dimx); ```
for some tests in one of my branches, because narrowing casts end up appearing if the node is replaced with a node with more components. This error happens under quite complex conditions (involving casts and matrices) that I still try to narrow down.
The cause of this problem is that, for the generated swizzles, we are passing `count` instead of `instr_component_count`. `count` is the number of components of the source deref (without considering the swizzle), while `instr_component_count` is the actual number of components of the instruction to be replaced.