@@ -254,9 +254,9 @@ void MetadataStreamerMsgPackV4::emitKernelLanguage(const Function &Func,
254254}
255255
256256void MetadataStreamerMsgPackV4::emitKernelAttrs (const AMDGPUTargetMachine &TM,
257- const Function &Func ,
257+ const MachineFunction &MF ,
258258 msgpack::MapDocNode Kern) {
259-
259+ const Function &Func = MF. getFunction ();
260260 if (auto *Node = Func.getMetadata (" reqd_work_group_size" ))
261261 Kern[" .reqd_workgroup_size" ] = getWorkGroupDimensions (Node);
262262 if (auto *Node = Func.getMetadata (" work_group_size_hint" ))
@@ -599,7 +599,7 @@ void MetadataStreamerMsgPackV4::emitKernel(const MachineFunction &MF,
599599 Kern[" .symbol" ] = Kern.getDocument ()->getNode (
600600 (Twine (Func.getName ()) + Twine (" .kd" )).str (), /* Copy=*/ true );
601601 emitKernelLanguage (Func, Kern);
602- emitKernelAttrs (TM, Func , Kern);
602+ emitKernelAttrs (TM, MF , Kern);
603603 emitKernelArgs (MF, Kern);
604604 }
605605
@@ -726,10 +726,11 @@ void MetadataStreamerMsgPackV5::emitHiddenKernelArgs(
726726}
727727
728728void MetadataStreamerMsgPackV5::emitKernelAttrs (const AMDGPUTargetMachine &TM,
729- const Function &Func ,
729+ const MachineFunction &MF ,
730730 msgpack::MapDocNode Kern) {
731- MetadataStreamerMsgPackV4::emitKernelAttrs (TM, Func , Kern);
731+ MetadataStreamerMsgPackV4::emitKernelAttrs (TM, MF , Kern);
732732
733+ const Function &Func = MF.getFunction ();
733734 if (Func.getFnAttribute (" uniform-work-group-size" ).getValueAsBool ())
734735 Kern[" .uniform_work_group_size" ] = Kern.getDocument ()->getNode (1 );
735736}
@@ -745,5 +746,21 @@ void MetadataStreamerMsgPackV6::emitVersion() {
745746 getRootMetadata (" amdhsa.version" ) = Version;
746747}
747748
749+ void MetadataStreamerMsgPackV6::emitKernelAttrs (const AMDGPUTargetMachine &TM,
750+ const MachineFunction &MF,
751+ msgpack::MapDocNode Kern) {
752+ MetadataStreamerMsgPackV5::emitKernelAttrs (TM, MF, Kern);
753+
754+ const SIMachineFunctionInfo &MFI = *MF.getInfo <SIMachineFunctionInfo>();
755+ ClusterDimsAttr Attr = MFI.getClusterDims ();
756+ if (Attr.isFixedDims ()) {
757+ msgpack::ArrayDocNode ClusterDimsNode = HSAMetadataDoc->getArrayNode ();
758+ ClusterDimsNode.push_back (HSAMetadataDoc->getNode (Attr.getDims ()[0 ]));
759+ ClusterDimsNode.push_back (HSAMetadataDoc->getNode (Attr.getDims ()[1 ]));
760+ ClusterDimsNode.push_back (HSAMetadataDoc->getNode (Attr.getDims ()[2 ]));
761+ Kern[" .cluster_dims" ] = ClusterDimsNode;
762+ }
763+ }
764+
748765} // end namespace AMDGPU::HSAMD
749766} // end namespace llvm
0 commit comments