Re: [Patch] gcn: Add more s_nop for MI300

2025-07-28 Thread Andrew Stubbs
On 28/07/2025 13:54, Tobias Burnus wrote: Hi Andrew, thanks for all the suggestions and the review! Andrew Stubbs wrote: ... +  /* CDNA3: VALU writes VGPR/VCC: v_readlane, v_readfirstlane, v_cmp, +         v_add_*i/u, v_sub_*i/u, v_div_*scale - followed by: +         - VALU reads SGPR as

Re: [Patch] gcn: Add more s_nop for MI300

2025-07-28 Thread Tobias Burnus
Hi Andrew, thanks for all the suggestions and the review! Andrew Stubbs wrote: ... +  /* CDNA3: VALU writes VGPR/VCC: v_readlane, v_readfirstlane, v_cmp, +         v_add_*i/u, v_sub_*i/u, v_div_*scale - followed by: +         - VALU reads SGPR as constant requires 1 waite state +         -

Re: [Patch] gcn: Add more s_nop for MI300

2025-07-28 Thread Andrew Stubbs
On 28/07/2025 12:06, Tobias Burnus wrote: Hi Andrew, Andrew Stubbs wrote: +static bool +gcn_v_cmp_insn_p (attr_type type) +{ +  return type == TYPE_VOPC || type == TYPE_VOP3A;  } There are many vop3a encoded instructions. I don't understand how this uniquely identifies v_cmp instructions? It

Re: [Patch] gcn: Add more s_nop for MI300

2025-07-28 Thread Tobias Burnus
Hi Andrew, Andrew Stubbs wrote: +static bool +gcn_v_cmp_insn_p (attr_type type) +{ +  return type == TYPE_VOPC || type == TYPE_VOP3A;  } There are many vop3a encoded instructions. I don't understand how this uniquely identifies v_cmp instructions? It doesn't - how about an attribute variant?

Re: [Patch] gcn: Add more s_nop for MI300

2025-07-25 Thread Andrew Stubbs
On 25/07/2025 11:54, Tobias Burnus wrote: There are still issues with MI300, some which get resolved by adding s_nop. One case where it is exactly known where the s_nop fixes a fail is for libgomp.c-c++-common/task-detach-10.c, where libgomp/single.c's GOMP_single_start() never returns 1, such t