@@ -49,14 +49,14 @@ namespace AMDGPU {
49
49
namespace HSAMD {
50
50
51
51
// ===----------------------------------------------------------------------===//
52
- // HSAMetadataStreamerV3
52
+ // HSAMetadataStreamerV4
53
53
// ===----------------------------------------------------------------------===//
54
54
55
- void MetadataStreamerMsgPackV3 ::dump (StringRef HSAMetadataString) const {
55
+ void MetadataStreamerMsgPackV4 ::dump (StringRef HSAMetadataString) const {
56
56
errs () << " AMDGPU HSA Metadata:\n " << HSAMetadataString << ' \n ' ;
57
57
}
58
58
59
- void MetadataStreamerMsgPackV3 ::verify (StringRef HSAMetadataString) const {
59
+ void MetadataStreamerMsgPackV4 ::verify (StringRef HSAMetadataString) const {
60
60
errs () << " AMDGPU HSA Metadata Parser Test: " ;
61
61
62
62
msgpack::Document FromHSAMetadataString;
@@ -78,15 +78,15 @@ void MetadataStreamerMsgPackV3::verify(StringRef HSAMetadataString) const {
78
78
}
79
79
80
80
std::optional<StringRef>
81
- MetadataStreamerMsgPackV3 ::getAccessQualifier (StringRef AccQual) const {
81
+ MetadataStreamerMsgPackV4 ::getAccessQualifier (StringRef AccQual) const {
82
82
return StringSwitch<std::optional<StringRef>>(AccQual)
83
83
.Case (" read_only" , StringRef (" read_only" ))
84
84
.Case (" write_only" , StringRef (" write_only" ))
85
85
.Case (" read_write" , StringRef (" read_write" ))
86
86
.Default (std::nullopt);
87
87
}
88
88
89
- std::optional<StringRef> MetadataStreamerMsgPackV3 ::getAddressSpaceQualifier (
89
+ std::optional<StringRef> MetadataStreamerMsgPackV4 ::getAddressSpaceQualifier (
90
90
unsigned AddressSpace) const {
91
91
switch (AddressSpace) {
92
92
case AMDGPUAS::PRIVATE_ADDRESS:
@@ -107,7 +107,7 @@ std::optional<StringRef> MetadataStreamerMsgPackV3::getAddressSpaceQualifier(
107
107
}
108
108
109
109
StringRef
110
- MetadataStreamerMsgPackV3 ::getValueKind (Type *Ty, StringRef TypeQual,
110
+ MetadataStreamerMsgPackV4 ::getValueKind (Type *Ty, StringRef TypeQual,
111
111
StringRef BaseTypeName) const {
112
112
if (TypeQual.contains (" pipe" ))
113
113
return " pipe" ;
@@ -134,7 +134,7 @@ MetadataStreamerMsgPackV3::getValueKind(Type *Ty, StringRef TypeQual,
134
134
: " by_value" );
135
135
}
136
136
137
- std::string MetadataStreamerMsgPackV3 ::getTypeName (Type *Ty,
137
+ std::string MetadataStreamerMsgPackV4 ::getTypeName (Type *Ty,
138
138
bool Signed) const {
139
139
switch (Ty->getTypeID ()) {
140
140
case Type::IntegerTyID: {
@@ -173,7 +173,7 @@ std::string MetadataStreamerMsgPackV3::getTypeName(Type *Ty,
173
173
}
174
174
175
175
msgpack::ArrayDocNode
176
- MetadataStreamerMsgPackV3 ::getWorkGroupDimensions (MDNode *Node) const {
176
+ MetadataStreamerMsgPackV4 ::getWorkGroupDimensions (MDNode *Node) const {
177
177
auto Dims = HSAMetadataDoc->getArrayNode ();
178
178
if (Node->getNumOperands () != 3 )
179
179
return Dims;
@@ -184,14 +184,20 @@ MetadataStreamerMsgPackV3::getWorkGroupDimensions(MDNode *Node) const {
184
184
return Dims;
185
185
}
186
186
187
- void MetadataStreamerMsgPackV3 ::emitVersion () {
187
+ void MetadataStreamerMsgPackV4 ::emitVersion () {
188
188
auto Version = HSAMetadataDoc->getArrayNode ();
189
- Version.push_back (Version.getDocument ()->getNode (VersionMajorV3 ));
190
- Version.push_back (Version.getDocument ()->getNode (VersionMinorV3 ));
189
+ Version.push_back (Version.getDocument ()->getNode (VersionMajorV4 ));
190
+ Version.push_back (Version.getDocument ()->getNode (VersionMinorV4 ));
191
191
getRootMetadata (" amdhsa.version" ) = Version;
192
192
}
193
193
194
- void MetadataStreamerMsgPackV3::emitPrintf (const Module &Mod) {
194
+ void MetadataStreamerMsgPackV4::emitTargetID (
195
+ const IsaInfo::AMDGPUTargetID &TargetID) {
196
+ getRootMetadata (" amdhsa.target" ) =
197
+ HSAMetadataDoc->getNode (TargetID.toString (), /* Copy=*/ true );
198
+ }
199
+
200
+ void MetadataStreamerMsgPackV4::emitPrintf (const Module &Mod) {
195
201
auto Node = Mod.getNamedMetadata (" llvm.printf.fmts" );
196
202
if (!Node)
197
203
return ;
@@ -204,7 +210,7 @@ void MetadataStreamerMsgPackV3::emitPrintf(const Module &Mod) {
204
210
getRootMetadata (" amdhsa.printf" ) = Printf;
205
211
}
206
212
207
- void MetadataStreamerMsgPackV3 ::emitKernelLanguage (const Function &Func,
213
+ void MetadataStreamerMsgPackV4 ::emitKernelLanguage (const Function &Func,
208
214
msgpack::MapDocNode Kern) {
209
215
// TODO: What about other languages?
210
216
auto Node = Func.getParent ()->getNamedMetadata (" opencl.ocl.version" );
@@ -223,7 +229,7 @@ void MetadataStreamerMsgPackV3::emitKernelLanguage(const Function &Func,
223
229
Kern[" .language_version" ] = LanguageVersion;
224
230
}
225
231
226
- void MetadataStreamerMsgPackV3 ::emitKernelAttrs (const Function &Func,
232
+ void MetadataStreamerMsgPackV4 ::emitKernelAttrs (const Function &Func,
227
233
msgpack::MapDocNode Kern) {
228
234
229
235
if (auto Node = Func.getMetadata (" reqd_work_group_size" ))
@@ -248,7 +254,7 @@ void MetadataStreamerMsgPackV3::emitKernelAttrs(const Function &Func,
248
254
Kern[" .kind" ] = Kern.getDocument ()->getNode (" fini" );
249
255
}
250
256
251
- void MetadataStreamerMsgPackV3 ::emitKernelArgs (const MachineFunction &MF,
257
+ void MetadataStreamerMsgPackV4 ::emitKernelArgs (const MachineFunction &MF,
252
258
msgpack::MapDocNode Kern) {
253
259
auto &Func = MF.getFunction ();
254
260
unsigned Offset = 0 ;
@@ -261,7 +267,7 @@ void MetadataStreamerMsgPackV3::emitKernelArgs(const MachineFunction &MF,
261
267
Kern[" .args" ] = Args;
262
268
}
263
269
264
- void MetadataStreamerMsgPackV3 ::emitKernelArg (const Argument &Arg,
270
+ void MetadataStreamerMsgPackV4 ::emitKernelArg (const Argument &Arg,
265
271
unsigned &Offset,
266
272
msgpack::ArrayDocNode Args) {
267
273
auto Func = Arg.getParent ();
@@ -326,7 +332,7 @@ void MetadataStreamerMsgPackV3::emitKernelArg(const Argument &Arg,
326
332
AccQual, TypeQual);
327
333
}
328
334
329
- void MetadataStreamerMsgPackV3 ::emitKernelArg (
335
+ void MetadataStreamerMsgPackV4 ::emitKernelArg (
330
336
const DataLayout &DL, Type *Ty, Align Alignment, StringRef ValueKind,
331
337
unsigned &Offset, msgpack::ArrayDocNode Args, MaybeAlign PointeeAlign,
332
338
StringRef Name, StringRef TypeName, StringRef BaseTypeName,
@@ -375,7 +381,7 @@ void MetadataStreamerMsgPackV3::emitKernelArg(
375
381
Args.push_back (Arg);
376
382
}
377
383
378
- void MetadataStreamerMsgPackV3 ::emitHiddenKernelArgs (
384
+ void MetadataStreamerMsgPackV4 ::emitHiddenKernelArgs (
379
385
const MachineFunction &MF, unsigned &Offset, msgpack::ArrayDocNode Args) {
380
386
auto &Func = MF.getFunction ();
381
387
const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
@@ -448,9 +454,10 @@ void MetadataStreamerMsgPackV3::emitHiddenKernelArgs(
448
454
}
449
455
}
450
456
451
- msgpack::MapDocNode MetadataStreamerMsgPackV3::getHSAKernelProps (
452
- const MachineFunction &MF, const SIProgramInfo &ProgramInfo,
453
- unsigned CodeObjectVersion) const {
457
+ msgpack::MapDocNode
458
+ MetadataStreamerMsgPackV4::getHSAKernelProps (const MachineFunction &MF,
459
+ const SIProgramInfo &ProgramInfo,
460
+ unsigned CodeObjectVersion) const {
454
461
const GCNSubtarget &STM = MF.getSubtarget <GCNSubtarget>();
455
462
const SIMachineFunctionInfo &MFI = *MF.getInfo <SIMachineFunctionInfo>();
456
463
const Function &F = MF.getFunction ();
@@ -495,18 +502,19 @@ msgpack::MapDocNode MetadataStreamerMsgPackV3::getHSAKernelProps(
495
502
return Kern;
496
503
}
497
504
498
- bool MetadataStreamerMsgPackV3 ::emitTo (AMDGPUTargetStreamer &TargetStreamer) {
505
+ bool MetadataStreamerMsgPackV4 ::emitTo (AMDGPUTargetStreamer &TargetStreamer) {
499
506
return TargetStreamer.EmitHSAMetadata (*HSAMetadataDoc, true );
500
507
}
501
508
502
- void MetadataStreamerMsgPackV3 ::begin (const Module &Mod,
509
+ void MetadataStreamerMsgPackV4 ::begin (const Module &Mod,
503
510
const IsaInfo::AMDGPUTargetID &TargetID) {
504
511
emitVersion ();
512
+ emitTargetID (TargetID);
505
513
emitPrintf (Mod);
506
514
getRootMetadata (" amdhsa.kernels" ) = HSAMetadataDoc->getArrayNode ();
507
515
}
508
516
509
- void MetadataStreamerMsgPackV3 ::end () {
517
+ void MetadataStreamerMsgPackV4 ::end () {
510
518
std::string HSAMetadataString;
511
519
raw_string_ostream StrOS (HSAMetadataString);
512
520
HSAMetadataDoc->toYAML (StrOS);
@@ -517,7 +525,7 @@ void MetadataStreamerMsgPackV3::end() {
517
525
verify (StrOS.str ());
518
526
}
519
527
520
- void MetadataStreamerMsgPackV3 ::emitKernel (const MachineFunction &MF,
528
+ void MetadataStreamerMsgPackV4 ::emitKernel (const MachineFunction &MF,
521
529
const SIProgramInfo &ProgramInfo) {
522
530
auto &Func = MF.getFunction ();
523
531
if (Func.getCallingConv () != CallingConv::AMDGPU_KERNEL &&
@@ -542,31 +550,6 @@ void MetadataStreamerMsgPackV3::emitKernel(const MachineFunction &MF,
542
550
Kernels.push_back (Kern);
543
551
}
544
552
545
- // ===----------------------------------------------------------------------===//
546
- // HSAMetadataStreamerV4
547
- // ===----------------------------------------------------------------------===//
548
-
549
- void MetadataStreamerMsgPackV4::emitVersion () {
550
- auto Version = HSAMetadataDoc->getArrayNode ();
551
- Version.push_back (Version.getDocument ()->getNode (VersionMajorV4));
552
- Version.push_back (Version.getDocument ()->getNode (VersionMinorV4));
553
- getRootMetadata (" amdhsa.version" ) = Version;
554
- }
555
-
556
- void MetadataStreamerMsgPackV4::emitTargetID (
557
- const IsaInfo::AMDGPUTargetID &TargetID) {
558
- getRootMetadata (" amdhsa.target" ) =
559
- HSAMetadataDoc->getNode (TargetID.toString (), /* Copy=*/ true );
560
- }
561
-
562
- void MetadataStreamerMsgPackV4::begin (const Module &Mod,
563
- const IsaInfo::AMDGPUTargetID &TargetID) {
564
- emitVersion ();
565
- emitTargetID (TargetID);
566
- emitPrintf (Mod);
567
- getRootMetadata (" amdhsa.kernels" ) = HSAMetadataDoc->getArrayNode ();
568
- }
569
-
570
553
// ===----------------------------------------------------------------------===//
571
554
// HSAMetadataStreamerV5
572
555
// ===----------------------------------------------------------------------===//
@@ -680,7 +663,7 @@ void MetadataStreamerMsgPackV5::emitHiddenKernelArgs(
680
663
681
664
void MetadataStreamerMsgPackV5::emitKernelAttrs (const Function &Func,
682
665
msgpack::MapDocNode Kern) {
683
- MetadataStreamerMsgPackV3 ::emitKernelAttrs (Func, Kern);
666
+ MetadataStreamerMsgPackV4 ::emitKernelAttrs (Func, Kern);
684
667
685
668
if (Func.getFnAttribute (" uniform-work-group-size" ).getValueAsBool ())
686
669
Kern[" .uniform_work_group_size" ] = Kern.getDocument ()->getNode (1 );
0 commit comments