| 1231 | //----------------------------------------------------------------------------- |
| 1232 | |
| 1233 | unsigned int |
| 1234 | selectPattern( SolutionStep* pStep, |
| 1235 | unsigned int maxImages ) |
| 1236 | { |
| 1237 | unsigned int i = 0; |
| 1238 | int selPatt = -1; |
| 1239 | int perf = -1; |
| 1240 | int maxPerf = -1; |
| 1241 | int funcID = pStep->funcID; |
| 1242 | unsigned int kflags = pStep->extraFlags; |
| 1243 | |
| 1244 | if (clblasSolvers[funcID].defaultPattern != -1) { |
| 1245 | // assert(clblasSolvers[funcID].defaultPattern < clblasSolvers[funcID].nrPatterns); |
| 1246 | return clblasSolvers[funcID].defaultPattern; |
| 1247 | } |
| 1248 | |
| 1249 | // select best-performing pattern for current case |
| 1250 | for( i = 0; i < clblasSolvers[funcID].nrPatterns; i++ ){ |
| 1251 | |
| 1252 | if( NULL != clblasSolvers[funcID].memPatterns[i].sops->getPatternPerf ){ |
| 1253 | |
| 1254 | perf = clblasSolvers[funcID].memPatterns[i].sops->getPatternPerf( |
| 1255 | kflags, |
| 1256 | (void*)&pStep->args); |
| 1257 | |
| 1258 | if( perf > maxPerf ){ |
| 1259 | selPatt = i; |
| 1260 | maxPerf = perf; |
| 1261 | } |
| 1262 | } |
| 1263 | // if not all patterns provide performace estimation functions |
| 1264 | // use legacy pattern selection |
| 1265 | else{ |
| 1266 | return legacySelectPattern( funcID, maxImages ); |
| 1267 | } |
| 1268 | } |
| 1269 | |
| 1270 | return selPatt; |
| 1271 | } |
| 1272 | |
| 1273 | //----------------------------------------------------------------------------- |
| 1274 |
no test coverage detected