https://gcc.gnu.org/g:2f74d0ef9dafed5483bbb42d67a387c36309a461
commit r17-4074-g2f74d0ef9dafed5483bbb42d67a387c36309a461 Author: Andrew Stubbs <[email protected]> Date: Thu Sep 3 07:47:11 2026 +0000 amdgcn: Improve DImode "not" It doesn't have to be two instructions any more. gcc/ChangeLog: * config/gcn/gcn.md (one_cmpldi2): Use s_not_b64. Diff: --- gcc/config/gcn/gcn.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/config/gcn/gcn.md b/gcc/config/gcn/gcn.md index 34649e69986c..a45e6ebd10f0 100644 --- a/gcc/config/gcn/gcn.md +++ b/gcc/config/gcn/gcn.md @@ -1744,12 +1744,16 @@ ;; {{{ ALU: generic 64-bit (define_insn_and_split "one_cmpldi2" - [(set (match_operand:DI 0 "register_operand" "=Sg, ?v") - (not:DI (match_operand:DI 1 "gcn_alu_operand" "SgA,vSvDB"))) - (clobber (match_scratch:BI 2 "=cs, X"))] - "" - "#" - "reload_completed" + [(set (match_operand:DI 0 "register_operand") + (not:DI (match_operand:DI 1 "gcn_alu_operand"))) + (clobber (match_scratch:BI 2))] + "" + {@ [cons: =0,1,=2; attrs: type,length] + [Sg,SgA ,cs;sop1,4] s_not_b64\t%0, %1 + [Sg,C ,cs;sop1,8] ^ + [?v,vSvDB,X ;mult,*] # + } + "reload_completed && gcn_vgpr_register_operand (operands[0], DImode)" [(parallel [(set (match_dup 3) (not:SI (match_dup 4))) (clobber (match_dup 2))]) (parallel [(set (match_dup 5) (not:SI (match_dup 6))) @@ -1760,7 +1764,6 @@ operands[5] = gcn_operand_part (DImode, operands[0], 1); operands[6] = gcn_operand_part (DImode, operands[1], 1); } - [(set_attr "type" "mult")] ) (define_code_iterator vec_and_scalar64_com [and ior xor])
