intel/fs: Don't munge source order of 3-src instructions in opt_algebraic
This only impacts ADD3, so at this point it should not have any affect. As soon as constants are propagated into ADD3 instructions, it will be a problem. The worst part is, the ADD3 instrutions that are broken by the old code aren't even "progress" on this pass. Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23262>
This commit is contained in:
@@ -2828,8 +2828,13 @@ fs_visitor::opt_algebraic()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Swap if src[0] is immediate. */
|
/* Ensure that the correct source has the immediate value. 2-source
|
||||||
if (progress && inst->is_commutative()) {
|
* instructions must have the immediate in src[1]. On Gfx12 and later,
|
||||||
|
* some 3-source instructions can have the immediate in src[0] or
|
||||||
|
* src[2]. It's complicated, so don't mess with 3-source instructions
|
||||||
|
* here.
|
||||||
|
*/
|
||||||
|
if (progress && inst->sources == 2 && inst->is_commutative()) {
|
||||||
if (inst->src[0].file == IMM) {
|
if (inst->src[0].file == IMM) {
|
||||||
fs_reg tmp = inst->src[1];
|
fs_reg tmp = inst->src[1];
|
||||||
inst->src[1] = inst->src[0];
|
inst->src[1] = inst->src[0];
|
||||||
|
Reference in New Issue
Block a user