@@ -2359,14 +2359,24 @@ void SWSB::tokenAllocation()
2359
2359
// Assign tokens to nodes in the order of liveness. Here we only need to
2360
2360
// iterate SB nodes in that order, and don't actually need to sort
2361
2361
// SBSendNodes as it might be referenced through allTokenNodesMap.
2362
- auto sortInLivenessOrder = [](const SBNODE_VECT& vec) {
2363
- SBNODE_VECT sorted (vec.size ());
2364
- std::partial_sort_copy (vec.begin (), vec.end (), sorted.begin (), sorted.end (), compareInterval);
2365
- return sorted;
2362
+ auto sortInLivenessOrder = [](const SBNODE_VECT& vec, bool stdSort) {
2363
+ if (stdSort)
2364
+ {
2365
+ SBNODE_VECT sorted (vec);
2366
+ std::sort (sorted.begin (), sorted.end (), compareInterval);
2367
+ return sorted;
2368
+ }
2369
+ else
2370
+ {
2371
+ SBNODE_VECT sorted (vec.size ());
2372
+ std::partial_sort_copy (vec.begin (), vec.end (), sorted.begin (), sorted.end (), compareInterval);
2373
+ return sorted;
2374
+ }
2366
2375
};
2367
2376
const bool enableSendTokenReduction = fg.builder ->getOptions ()->getOption (vISA_EnableSendTokenReduction);
2368
2377
const bool enableDPASTokenReduction = fg.builder ->getOptions ()->getOption (vISA_EnableDPASTokenReduction);
2369
- for (SBNode* node : sortInLivenessOrder (SBSendNodes))
2378
+ const bool assignTokenUsingStdsort = fg.builder ->getOptions ()->getOption (vISA_AssignTokenUsingStdSort);
2379
+ for (SBNode* node : sortInLivenessOrder (SBSendNodes, assignTokenUsingStdsort))
2370
2380
{
2371
2381
unsigned startID = node->getLiveStartID ();
2372
2382
G4_INST* inst = node->getLastInstruction ();
0 commit comments