On 31/01/2024 17:21, Thomas Schwinge wrote:
Hi!
On 2018-12-12T11:52:23+0000, Andrew Stubbs <a...@codesourcery.com> wrote:
This patch contains the machine description portion of the GCN back-end. [...]
--- /dev/null
+++ b/gcc/config/gcn/gcn.md
+;; {{{ Constants and enums
+
+; Named registers
+(define_constants
+ [(FIRST_SGPR_REG 0)
+ (LAST_SGPR_REG 101)
+ (FLAT_SCRATCH_REG 102)
+ (FLAT_SCRATCH_LO_REG 102)
+ (FLAT_SCRATCH_HI_REG 103)
+ (XNACK_MASK_REG 104)
+ (XNACK_MASK_LO_REG 104)
+ (XNACK_MASK_HI_REG 105)
+ (VCC_REG 106)
+ (VCC_LO_REG 106)
+ (VCC_HI_REG 107)
+ (VCCZ_REG 108)
+ (TBA_REG 109)
+ (TBA_LO_REG 109)
+ (TBA_HI_REG 110)
+ (TMA_REG 111)
+ (TMA_LO_REG 111)
+ (TMA_HI_REG 112)
+ (TTMP0_REG 113)
+ (TTMP11_REG 124)
+ (M0_REG 125)
+ (EXEC_REG 126)
+ (EXEC_LO_REG 126)
+ (EXEC_HI_REG 127)
+ (EXECZ_REG 128)
+ (SCC_REG 129)
+ (FIRST_VGPR_REG 160)
+ (LAST_VGPR_REG 415)])
+
+(define_constants
+ [(SP_REGNUM 16)
+ (LR_REGNUM 18)
+ (AP_REGNUM 416)
+ (FP_REGNUM 418)])
Oops, these last two are actually wrong, since AVGPRs were inserted!
Generally, shouldn't there be a better way, that avoids duplication and
instead shares such definitions between 'gcn.h' and 'gcn.md'?
I think this is stuff we originally inherited from the Honza's partial
port and I just never questioned?
If the definitions are unused then it's fine to remove them (I imagine
the TBA, TMA, and TTMP registers are also unused). Is there something
about define_constants that is different to external macros? Does it
affect the mddump? -fdump output? ICE messages? If there's no difference
then I'm happy with just deleting the lot and use the gcn.h definitions
exclusively.
Until that's settled, OK to push the attached
"GCN: Remove 'FIRST_{SGPR,VGPR,AVGPR}_REG', 'LAST_{SGPR,VGPR,AVGPR}_REG' from
machine description"?
(I assume "still builds" is sufficient validation of this change.)
The patch is OK.
Andrew