> Unfortunately we can't make it a different function in the shader instruction table because the difference between MOV and ARL is decided with the dest register.
Sure you can, it seems that this MOV/MOVA specific stuff all belongs in vshader_hw_mov (both sides of the MOV if statement can be moved). There should also be a comment explaining what this ARL block is doing, and why (as part of "wined3d: Relative addressing offsets are limited to [-64; 63] in arb."). Ivan