diff --git a/.pick_status.json b/.pick_status.json index 6337e30349f..327d810b6c0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "nak/opt_copy_prop: Force alu src for IAdd2X/IAdd3X", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/nouveau/compiler/nak/opt_copy_prop.rs b/src/nouveau/compiler/nak/opt_copy_prop.rs index 73cdf98db01..b03300b9b38 100644 --- a/src/nouveau/compiler/nak/opt_copy_prop.rs +++ b/src/nouveau/compiler/nak/opt_copy_prop.rs @@ -643,9 +643,13 @@ impl CopyPropPass { // written. let force_alu_src_type = match &instr.op { Op::IAdd2(add) => !add.carry_out.is_none(), + Op::IAdd2X(add) => !add.carry_out.is_none(), Op::IAdd3(add) => { !add.overflow[0].is_none() || !add.overflow[1].is_none() } + Op::IAdd3X(add) => { + !add.overflow[0].is_none() || !add.overflow[1].is_none() + } _ => false, }; @@ -654,8 +658,8 @@ impl CopyPropPass { let mut src_type = src_types[i]; if force_alu_src_type { src_type = match src_type { - SrcType::I32 => SrcType::ALU, - SrcType::Pred => SrcType::Pred, + SrcType::B32 | SrcType::I32 => SrcType::ALU, + SrcType::Carry | SrcType::Pred => src_type, _ => panic!("Unhandled src_type"), }; };