MCPcopy Create free account
hub / github.com/clMathLibraries/clBLAS / genExtraDatasForPattern

Function genExtraDatasForPattern

src/library/tools/tune/storage_data.c:207–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205}
206
207int
208genExtraDatasForPattern(
209 BlasPatternInfo* bPatt,
210 unsigned int tuningsMask,
211 unsigned int uniqueMask,
212 DeviceInfo* defInf)
213{
214 size_t dtypeCount;
215 size_t ndt;
216 unsigned int flags;
217 unsigned int index;
218 DataType dTypes[4];
219 BlasExtraInfo* extra;
220 BlasFunctionInfo* bFunc;
221 unsigned int extraCount;
222
223 bFunc = bPatt->parent;
224 extra = bPatt->extra;
225 extraCount = bPatt->numExtra;
226 bPatt->numTuneExtra = 0;
227
228 dtypeCount = getDTypeArray(dTypes, 4, defInf);
229 index = 0;
230 for (flags = 0; flags <= uniqueMask; flags++) {
231 unsigned int m = flags & (~uniqueMask);
232 if (!m){
233 for (ndt = 0; ndt < dtypeCount; ++ndt) {
234 DataType curType = dTypes[ndt];
235 if ( bFunc->isValidFlag != NULL
236 && bFunc->isValidFlag(curType, flags)) {
237 continue;
238 }
239
240 if (extra != NULL) {
241 unsigned int tm;
242 if (index == extraCount) {
243 return index;
244 }
245
246 extra[index].parent = bPatt;
247 initExtraData(&extra[index], dTypes[ndt], flags, defInf);
248 tm = flags & (~tuningsMask);
249 extra[index].isUseForTunning = tm == 0;
250 if (extra[index].isUseForTunning) {
251 bPatt->numTuneExtra++;
252 }
253 }
254 ++index;
255 }
256 }
257 else {
258 m = (m&(m-1))^m;
259 flags = flags + m - 1;
260 }
261 }
262 return index;
263}
264

Callers 1

initPatternDataFunction · 0.85

Calls 2

getDTypeArrayFunction · 0.85
initExtraDataFunction · 0.85

Tested by

no test coverage detected