@@ -2359,14 +2359,24 @@ void SWSB::tokenAllocation()
23592359 // Assign tokens to nodes in the order of liveness. Here we only need to
23602360 // iterate SB nodes in that order, and don't actually need to sort
23612361 // 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+ }
23662375 };
23672376 const bool enableSendTokenReduction = fg.builder ->getOptions ()->getOption (vISA_EnableSendTokenReduction);
23682377 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))
23702380 {
23712381 unsigned startID = node->getLiveStartID ();
23722382 G4_INST* inst = node->getLastInstruction ();
0 commit comments