@@ -78,6 +78,42 @@ void IGCMetaDataHelper::removeFunction(
7878 }
7979}
8080
81+ llvm::Optional<std::array<uint32_t , 3 >>
82+ IGCMetaDataHelper::getThreadGroupDims (
83+ MetaDataUtils& mdUtils,
84+ llvm::Function* pKernelFunc)
85+ {
86+ auto finfo = mdUtils.findFunctionsInfoItem (pKernelFunc);
87+ if (finfo == mdUtils.end_FunctionsInfo ())
88+ return llvm::None;
89+
90+ auto & FI = finfo->second ;
91+
92+ if (!FI->getThreadGroupSize ()->hasValue ())
93+ return llvm::None;
94+
95+ auto Dims = FI->getThreadGroupSize ();
96+
97+ std::array<uint32_t , 3 > A {
98+ (uint32_t )Dims->getXDim (),
99+ (uint32_t )Dims->getYDim (),
100+ (uint32_t )Dims->getZDim ()
101+ };
102+
103+ return A;
104+ }
105+
106+ uint32_t IGCMetaDataHelper::getThreadGroupSize (MetaDataUtils& mdUtils, llvm::Function* pKernelFunc)
107+ {
108+ auto Dims = IGCMD::IGCMetaDataHelper::getThreadGroupDims (mdUtils, pKernelFunc);
109+ if (!Dims)
110+ return 0 ;
111+
112+ auto & Vals = *Dims;
113+
114+ return Vals[0 ] * Vals[1 ] * Vals[2 ];
115+ }
116+
81117uint32_t IGCMetaDataHelper::getThreadGroupSizeHint (MetaDataUtils& mdUtils, llvm::Function* pKernelFunc)
82118{
83119 FunctionInfoMetaDataHandle finfo = mdUtils.getFunctionsInfoItem (pKernelFunc);
@@ -89,17 +125,4 @@ uint32_t IGCMetaDataHelper::getThreadGroupSizeHint(MetaDataUtils& mdUtils, llvm:
89125 finfo->getThreadGroupSizeHint ()->getZDim ();
90126 }
91127 return size;
92- }
93-
94- uint32_t IGCMetaDataHelper::getThreadGroupSize (MetaDataUtils& mdUtils, llvm::Function* pKernelFunc)
95- {
96- FunctionInfoMetaDataHandle finfo = mdUtils.getFunctionsInfoItem (pKernelFunc);
97- uint32_t size = 0 ;
98- if (finfo->getThreadGroupSize ()->hasValue ())
99- {
100- size = finfo->getThreadGroupSize ()->getXDim () *
101- finfo->getThreadGroupSize ()->getYDim () *
102- finfo->getThreadGroupSize ()->getZDim ();
103- }
104- return size;
105128}
0 commit comments