Skip to content

Commit 0821b79

Browse files
authored
[AMDGPU] Copy Defs and Uses from Pseudo to Real Instructions (#93004)
Currently, the tablegen files that generate the instruction definitions in lib/Target/AMDGPU/AMDGPUGenInstrInfo.inc often only include implicit operands for the architecture-independent pseudo instructions, but not for the corresponding real instructions. The missing implicit operands (most prominently: the EXEC mask) do not affect code generation, since that operates on pseudo instructions, but they are problematic when working with real instructions, e.g., as a decoding result from the MC layer. This patch copies the implicit Defs and Uses from pseudo instructions to the corresponding real instructions, so that implicit operands are also defined for real instructions. Addresses issue #89830.
1 parent 5228c2c commit 0821b79

File tree

6 files changed

+30
-0
lines changed

6 files changed

+30
-0
lines changed

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ class MTBUF_Real <MTBUF_Pseudo ps, string real_name = ps.Mnemonic> :
137137
let mayStore = ps.mayStore;
138138
let IsAtomicRet = ps.IsAtomicRet;
139139
let IsAtomicNoRet = ps.IsAtomicNoRet;
140+
let Uses = ps.Uses;
141+
let Defs = ps.Defs;
140142

141143
bits<12> offset;
142144
bits<5> cpol;
@@ -351,6 +353,8 @@ class MUBUF_Real <MUBUF_Pseudo ps, string real_name = ps.Mnemonic> :
351353
let IsAtomicNoRet = ps.IsAtomicNoRet;
352354
let VALU = ps.VALU;
353355
let LGKM_CNT = ps.LGKM_CNT;
356+
let Uses = ps.Uses;
357+
let Defs = ps.Defs;
354358

355359
bits<12> offset;
356360
bits<5> cpol;
@@ -2401,6 +2405,8 @@ class VBUFFER_Real <bits<8> op, BUF_Pseudo ps, string real_name> :
24012405
let LGKM_CNT = ps.LGKM_CNT;
24022406
let MUBUF = ps.MUBUF;
24032407
let MTBUF = ps.MTBUF;
2408+
let Uses = ps.Uses;
2409+
let Defs = ps.Defs;
24042410

24052411
bits<24> offset;
24062412
bits<8> vaddr;

llvm/lib/Target/AMDGPU/DSInstructions.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ class DS_Real <DS_Pseudo ps, string opName = ps.Mnemonic> :
7171
let mayStore = ps.mayStore;
7272
let IsAtomicRet = ps.IsAtomicRet;
7373
let IsAtomicNoRet = ps.IsAtomicNoRet;
74+
let Uses = ps.Uses;
75+
let Defs = ps.Defs;
7476

7577
let Constraints = ps.Constraints;
7678
let DisableEncoding = ps.DisableEncoding;

llvm/lib/Target/AMDGPU/FLATInstructions.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ class FLAT_Real <bits<7> op, FLAT_Pseudo ps, string opName = ps.Mnemonic> :
102102
let VM_CNT = ps.VM_CNT;
103103
let LGKM_CNT = ps.LGKM_CNT;
104104
let VALU = ps.VALU;
105+
let Uses = ps.Uses;
106+
let Defs = ps.Defs;
105107

106108
// encoding fields
107109
bits<8> vaddr;
@@ -165,6 +167,8 @@ class VFLAT_Real <bits<8> op, FLAT_Pseudo ps, string opName = ps.Mnemonic> :
165167
let VM_CNT = ps.VM_CNT;
166168
let LGKM_CNT = ps.LGKM_CNT;
167169
let VALU = ps.VALU;
170+
let Uses = ps.Uses;
171+
let Defs = ps.Defs;
168172

169173
bits<7> saddr;
170174
bits<8> vdst;

llvm/lib/Target/AMDGPU/SMInstructions.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ class SM_Real <SM_Pseudo ps, string opName = ps.Mnemonic>
7171
let AsmMatchConverter = ps.AsmMatchConverter;
7272
let IsAtomicRet = ps.IsAtomicRet;
7373
let IsAtomicNoRet = ps.IsAtomicNoRet;
74+
let Uses = ps.Uses;
75+
let Defs = ps.Defs;
7476

7577
let TSFlags = ps.TSFlags;
7678

llvm/lib/Target/AMDGPU/SOPInstructions.td

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class SOP1_Real<bits<8> op, SOP1_Pseudo ps, string real_name = ps.Mnemonic> :
6565
let isCall = ps.isCall;
6666
let isBranch = ps.isBranch;
6767
let isBarrier = ps.isBarrier;
68+
let Uses = ps.Uses;
69+
let Defs = ps.Defs;
6870

6971
// encoding
7072
bits<7> sdst;
@@ -570,6 +572,8 @@ class SOP2_Real<SOP_Pseudo ps, string name = ps.Mnemonic> :
570572
let mayStore = ps.mayStore;
571573
let Constraints = ps.Constraints;
572574
let DisableEncoding = ps.DisableEncoding;
575+
let Uses = ps.Uses;
576+
let Defs = ps.Defs;
573577

574578
// encoding
575579
bits<7> sdst;
@@ -985,6 +989,8 @@ class SOPK_Real<SOPK_Pseudo ps, string name = ps.Mnemonic> :
985989
let isTerminator = ps.isTerminator;
986990
let isReturn = ps.isReturn;
987991
let isBarrier = ps.isBarrier;
992+
let Uses = ps.Uses;
993+
let Defs = ps.Defs;
988994

989995
// encoding
990996
bits<7> sdst;
@@ -1245,6 +1251,8 @@ class SOPC_Real<bits<7> op, SOPC_Pseudo ps> :
12451251
let SchedRW = ps.SchedRW;
12461252
let mayLoad = ps.mayLoad;
12471253
let mayStore = ps.mayStore;
1254+
let Uses = ps.Uses;
1255+
let Defs = ps.Defs;
12481256

12491257
// encoding
12501258
bits<8> src0;
@@ -1440,6 +1448,8 @@ class SOPP_Real<SOPP_Pseudo ps, string name = ps.Mnemonic> :
14401448
let isCall = ps.isCall;
14411449
let isBranch = ps.isBranch;
14421450
let isBarrier = ps.isBarrier;
1451+
let Uses = ps.Uses;
1452+
let Defs = ps.Defs;
14431453
bits <16> simm16;
14441454
}
14451455

llvm/lib/Target/AMDGPU/VOPInstructions.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,8 @@ class VOP_SDWA_Real <VOP_SDWA_Pseudo ps> :
657657
let Constraints = ps.Constraints;
658658
let DisableEncoding = ps.DisableEncoding;
659659
let TSFlags = ps.TSFlags;
660+
let Uses = ps.Uses;
661+
let Defs = ps.Defs;
660662
let SchedRW = ps.SchedRW;
661663
let mayLoad = ps.mayLoad;
662664
let mayStore = ps.mayStore;
@@ -691,6 +693,8 @@ class Base_VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
691693
let Constraints = ps.Constraints;
692694
let DisableEncoding = ps.DisableEncoding;
693695
let TSFlags = ps.TSFlags;
696+
let Uses = ps.Uses;
697+
let Defs = ps.Defs;
694698
let SchedRW = ps.SchedRW;
695699
let mayLoad = ps.mayLoad;
696700
let mayStore = ps.mayStore;
@@ -895,6 +899,8 @@ class VOP_DPP_Real <VOP_DPP_Pseudo ps, int EncodingFamily> :
895899
let Constraints = ps.Constraints;
896900
let DisableEncoding = ps.DisableEncoding;
897901
let TSFlags = ps.TSFlags;
902+
let Uses = ps.Uses;
903+
let Defs = ps.Defs;
898904
let SchedRW = ps.SchedRW;
899905
let mayLoad = ps.mayLoad;
900906
let mayStore = ps.mayStore;

0 commit comments

Comments
 (0)