Skip to content

Commit 9398cc2

Browse files
authored
[LLVM][AMDGPU] Copy isConvergent from Pseudo to Real instructions (llvm#99658)
This patch copies the flag isConvergent from pseudo instructions to the corresponding real instructions, so that isConvergent flag is also defined for real instructions. Flags are not required by the compiler, but for consistency it would be nice to have them. Co-authored-by: Acim Maravic <[email protected]>
1 parent abacc52 commit 9398cc2

File tree

9 files changed

+19
-0
lines changed

9 files changed

+19
-0
lines changed

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ class MTBUF_Real <MTBUF_Pseudo ps, string real_name = ps.Mnemonic> :
139139
let IsAtomicNoRet = ps.IsAtomicNoRet;
140140
let Uses = ps.Uses;
141141
let Defs = ps.Defs;
142+
let isConvergent = ps.isConvergent;
142143

143144
bits<12> offset;
144145
bits<5> cpol;
@@ -355,6 +356,7 @@ class MUBUF_Real <MUBUF_Pseudo ps, string real_name = ps.Mnemonic> :
355356
let LGKM_CNT = ps.LGKM_CNT;
356357
let Uses = ps.Uses;
357358
let Defs = ps.Defs;
359+
let isConvergent = ps.isConvergent;
358360

359361
bits<12> offset;
360362
bits<5> cpol;
@@ -2435,6 +2437,7 @@ class VBUFFER_Real <bits<8> op, BUF_Pseudo ps, string real_name> :
24352437
let MTBUF = ps.MTBUF;
24362438
let Uses = ps.Uses;
24372439
let Defs = ps.Defs;
2440+
let isConvergent = ps.isConvergent;
24382441

24392442
bits<24> offset;
24402443
bits<8> vaddr;

llvm/lib/Target/AMDGPU/DSInstructions.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class DS_Real <DS_Pseudo ps, string opName = ps.Mnemonic> :
7373
let IsAtomicNoRet = ps.IsAtomicNoRet;
7474
let Uses = ps.Uses;
7575
let Defs = ps.Defs;
76+
let isConvergent = ps.isConvergent;
7677

7778
let Constraints = ps.Constraints;
7879
let DisableEncoding = ps.DisableEncoding;

llvm/lib/Target/AMDGPU/FLATInstructions.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class FLAT_Real <bits<7> op, FLAT_Pseudo ps, string opName = ps.Mnemonic> :
104104
let VALU = ps.VALU;
105105
let Uses = ps.Uses;
106106
let Defs = ps.Defs;
107+
let isConvergent = ps.isConvergent;
107108

108109
// encoding fields
109110
bits<8> vaddr;
@@ -169,6 +170,7 @@ class VFLAT_Real <bits<8> op, FLAT_Pseudo ps, string opName = ps.Mnemonic> :
169170
let VALU = ps.VALU;
170171
let Uses = ps.Uses;
171172
let Defs = ps.Defs;
173+
let isConvergent = ps.isConvergent;
172174

173175
bits<7> saddr;
174176
bits<8> vdst;

llvm/lib/Target/AMDGPU/SMInstructions.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class SM_Real <SM_Pseudo ps, string opName = ps.Mnemonic>
7373
let IsAtomicNoRet = ps.IsAtomicNoRet;
7474
let Uses = ps.Uses;
7575
let Defs = ps.Defs;
76+
let isConvergent = ps.isConvergent;
7677

7778
let TSFlags = ps.TSFlags;
7879

llvm/lib/Target/AMDGPU/SOPInstructions.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class SOP1_Real<bits<8> op, SOP1_Pseudo ps, string real_name = ps.Mnemonic> :
6767
let isBarrier = ps.isBarrier;
6868
let Uses = ps.Uses;
6969
let Defs = ps.Defs;
70+
let isConvergent = ps.isConvergent;
7071

7172
// encoding
7273
bits<7> sdst;
@@ -579,6 +580,7 @@ class SOP2_Real<SOP_Pseudo ps, string name = ps.Mnemonic> :
579580
let DisableEncoding = ps.DisableEncoding;
580581
let Uses = ps.Uses;
581582
let Defs = ps.Defs;
583+
let isConvergent = ps.isConvergent;
582584

583585
// encoding
584586
bits<7> sdst;
@@ -996,6 +998,7 @@ class SOPK_Real<SOPK_Pseudo ps, string name = ps.Mnemonic> :
996998
let isBarrier = ps.isBarrier;
997999
let Uses = ps.Uses;
9981000
let Defs = ps.Defs;
1001+
let isConvergent = ps.isConvergent;
9991002

10001003
// encoding
10011004
bits<7> sdst;
@@ -1262,6 +1265,7 @@ class SOPC_Real<bits<7> op, SOPC_Pseudo ps> :
12621265
let mayStore = ps.mayStore;
12631266
let Uses = ps.Uses;
12641267
let Defs = ps.Defs;
1268+
let isConvergent = ps.isConvergent;
12651269

12661270
// encoding
12671271
bits<8> src0;
@@ -1459,6 +1463,7 @@ class SOPP_Real<SOPP_Pseudo ps, string name = ps.Mnemonic> :
14591463
let isBarrier = ps.isBarrier;
14601464
let Uses = ps.Uses;
14611465
let Defs = ps.Defs;
1466+
let isConvergent = ps.isConvergent;
14621467
bits <16> simm16;
14631468
}
14641469

llvm/lib/Target/AMDGPU/VOP1Instructions.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class VOP1_Real <VOP1_Pseudo ps, int EncodingFamily, string real_name = ps.Mnemo
8888
let mayLoad = ps.mayLoad;
8989
let mayStore = ps.mayStore;
9090
let TRANS = ps.TRANS;
91+
let isConvergent = ps.isConvergent;
9192
}
9293

9394
class VOP1_Real_Gen <VOP1_Pseudo ps, GFXGen Gen, string real_name = ps.Mnemonic> :

llvm/lib/Target/AMDGPU/VOP2Instructions.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ class VOP2_Real <VOP2_Pseudo ps, int EncodingFamily, string real_name = ps.Mnemo
107107
let SchedRW = ps.SchedRW;
108108
let mayLoad = ps.mayLoad;
109109
let mayStore = ps.mayStore;
110+
let isConvergent = ps.isConvergent;
110111
}
111112

112113
class VOP2_Real_Gen <VOP2_Pseudo ps, GFXGen Gen, string real_name = ps.Mnemonic> :

llvm/lib/Target/AMDGPU/VOPCInstructions.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ class VOPC_Real <VOPC_Pseudo ps, int EncodingFamily, string asm_name = ps.Pseudo
180180
let SchedRW = ps.SchedRW;
181181
let mayLoad = ps.mayLoad;
182182
let mayStore = ps.mayStore;
183+
let isConvergent = ps.isConvergent;
183184
}
184185

185186
class VOPC_SDWA_Pseudo <string OpName, VOPProfile P, list<dag> pattern=[]> :

llvm/lib/Target/AMDGPU/VOPInstructions.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ class VOP3_Real <VOP_Pseudo ps, int EncodingFamily, string asm_name = ps.Mnemoni
194194
let mayLoad = ps.mayLoad;
195195
let mayStore = ps.mayStore;
196196
let TRANS = ps.TRANS;
197+
let isConvergent = ps.isConvergent;
197198

198199
VOPProfile Pfl = ps.Pfl;
199200
}
@@ -653,6 +654,7 @@ class VOP_SDWA_Real <VOP_SDWA_Pseudo ps> :
653654
let mayLoad = ps.mayLoad;
654655
let mayStore = ps.mayStore;
655656
let TRANS = ps.TRANS;
657+
let isConvergent = ps.isConvergent;
656658
}
657659

658660
class Base_VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
@@ -689,6 +691,7 @@ class Base_VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
689691
let mayLoad = ps.mayLoad;
690692
let mayStore = ps.mayStore;
691693
let TRANS = ps.TRANS;
694+
let isConvergent = ps.isConvergent;
692695
}
693696

694697
class VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
@@ -889,6 +892,7 @@ class VOP_DPP_Real <VOP_DPP_Pseudo ps, int EncodingFamily> :
889892
let mayLoad = ps.mayLoad;
890893
let mayStore = ps.mayStore;
891894
let TRANS = ps.TRANS;
895+
let isConvergent = ps.isConvergent;
892896
}
893897

894898
class VOP_DPP_Base <string OpName, VOPProfile P,

0 commit comments

Comments
 (0)