I found the shader-assembly reference not quite clear, where the exact difference between lane-masking and assignment applies. I got some like this:
add r7.yz, r7.x, c2.xxyw
// lanes:
add r7.x, r7.x, c2.x -> masked
add r7.y, r7.x, c2.x
add r7.z, r7.x, c2.y
add r7.w, r7.x, c2.w -> masked
I assume r7.x is recognized as scalar, and internally put into this form:
add r7.yz, r7.xxxx, c2.xxyw
But what about this?:
add r7.yz, r7.xy, c2.xxyw // illegal?
Will it be:
add r7.yz, r7.xyyy, c2.xxyw
or is it even illegal syntax?
Thanks for any clarification.
add r7.yz, r7.x, c2.xxyw
// lanes:
add r7.x, r7.x, c2.x -> masked
add r7.y, r7.x, c2.x
add r7.z, r7.x, c2.y
add r7.w, r7.x, c2.w -> masked
I assume r7.x is recognized as scalar, and internally put into this form:
add r7.yz, r7.xxxx, c2.xxyw
But what about this?:
add r7.yz, r7.xy, c2.xxyw // illegal?
Will it be:
add r7.yz, r7.xyyy, c2.xxyw
or is it even illegal syntax?
Thanks for any clarification.