r300: fix swizzle handling in transformation of abs
authorFilip Gawin <filip.gawin@zoho.com>
Thu, 3 Mar 2022 01:39:00 +0000 (02:39 +0100)
committerMarge Bot <emma+marge@anholt.net>
Tue, 29 Mar 2022 19:49:17 +0000 (19:49 +0000)
Helps with scalar opcodes like pow.
(which are propagating first used channel)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15222>

src/gallium/drivers/r300/compiler/r3xx_vertprog.c

index 39db61e..bbfbf6e 100644 (file)
@@ -700,12 +700,13 @@ static int transform_nonnative_modifiers(
                        new_inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
                        new_inst->U.I.DstReg.Index = temp;
                        new_inst->U.I.SrcReg[0] = inst->U.I.SrcReg[i];
+                       new_inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_XYZW;
                        new_inst->U.I.SrcReg[1] = inst->U.I.SrcReg[i];
+                       new_inst->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_XYZW;
                        new_inst->U.I.SrcReg[1].Negate ^= RC_MASK_XYZW;
 
                        inst->U.I.SrcReg[i].File = RC_FILE_TEMPORARY;
                        inst->U.I.SrcReg[i].Index = temp;
-                       inst->U.I.SrcReg[i].Swizzle = RC_SWIZZLE_XYZW;
                        inst->U.I.SrcReg[i].RelAddr = 0;
                }
        }