diff options
author | Tobias Burnus <tburnus@baylibre.com> | 2025-07-25 11:24:22 +0200 |
---|---|---|
committer | Tobias Burnus <tburnus@baylibre.com> | 2025-07-25 11:24:22 +0200 |
commit | 02213d07210c22fb4408b1b35b6b4261ce7d466d (patch) | |
tree | eea5de5743be8c07527b6ded4ca1569490934e53 /fixincludes/tests/base/rtldef/wait.h | |
parent | 94f896c7c6c0329077271487219e345bcdcec6ab (diff) | |
download | gcc-master.zip gcc-master.tar.gz gcc-master.tar.bz2 |
MI300 requires some additional s_nop to be added between some instructions.
* As 'v_readlane' and 'v_writelane' have to be distinguished, the
'laneselect' attribute was changed from no/yes to no/read/write.
* Add some missing 'laneselect' attributes for v_(read,write)lane.
* Replace 'delayeduse' by 'flatmemaccess' which is more explicit,
especially as some uses have to destinguished more details.
(Alongside, one off-by-two delayeduse has been fixed.)
On the other hand, RDNA 2, 3, and 3.5 do not require any added s_nop;
thus, there is no need to walk the instructions for them to insert
pointless S_NOP. (RDNA4 (not yet in GCC) requires it in a few cases.)
gcc/ChangeLog:
* config/gcn/gcn-opts.h (TARGET_NO_MANUAL_NOPS,
TARGET_CDNA3_NOPS): Define.
* config/gcn/gcn.md (define_attr "laneselect): Change 'yes' to
'read' and 'write'.
(define_attr "flatmemaccess"): Add with values store, storex34,
load, atomic, atomicwait, cmpswapx2, and no. Replacing ...
(define_attr "delayeduse"): Remove.
(define_attr "transop"): Add with values yes and no.
(various insns): Update 'laneselect', add flatmemaccess and transop,
remove delayeduse; fixing an issue for s_load_dwordx4 vs.
flat_store_dwordx4 related to delayeduse (now: flatmemaccess).
* config/gcn/gcn-valu.md: Update laneselect attribute and add
flatmemaccess.
* config/gcn/gcn.cc (gcn_cmpx_insn_p): New.
(gcn_md_reorg): Update for MI300 to add additional s_nop.
Skip s_nop-insertion part for RDNA{2,3}; add "VALU writes EXEC
followed by VALU DPP" unconditionally for CDNA2/CDNA3/GCN5.
Diffstat (limited to 'fixincludes/tests/base/rtldef/wait.h')
0 files changed, 0 insertions, 0 deletions