Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/IceTargetLoweringX8632Traits.h

Issue 1300993002: Use separate random number generator for each randomization pass (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Assign default value of ConstantBlindingCookie in its declaration Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceTargetLoweringX8632Traits.h - x86-32 traits -*- C++ -*-=// 1 //===- subzero/src/IceTargetLoweringX8632Traits.h - x86-32 traits -*- C++ -*-=//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 /// 9 ///
10 /// \file 10 /// \file
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 ++NumPreserved; \ 386 ++NumPreserved; \
387 } else { \ 387 } else { \
388 const uint32_t Index = (scratch << 0) | (preserved << 1) | (isI8 << 2) | \ 388 const uint32_t Index = (scratch << 0) | (preserved << 1) | (isI8 << 2) | \
389 (isInt << 3) | (isFP << 4); \ 389 (isInt << 3) | (isFP << 4); \
390 /* val is assigned to an equivalence class based on its properties. */ \ 390 /* val is assigned to an equivalence class based on its properties. */ \
391 EquivalenceClasses[Index].push_back(RegisterSet::val); \ 391 EquivalenceClasses[Index].push_back(RegisterSet::val); \
392 } 392 }
393 REGX8632_TABLE 393 REGX8632_TABLE
394 #undef X 394 #undef X
395 395
396 RandomNumberGeneratorWrapper RNG(Ctx->getRNG()); 396 // Create a random number generator for regalloc randomization.
397 // Use function's sequence as the salt.
398 RandomNumberGenerator RNG(Ctx->getFlags().getRandomSeed(),
399 RS_RegAllocRandomization,
400 Func->getSequenceNumber());
401 RandomNumberGeneratorWrapper RNGW(RNG);
397 402
398 // Shuffle the resulting equivalence classes. 403 // Shuffle the resulting equivalence classes.
399 for (auto I : EquivalenceClasses) { 404 for (auto I : EquivalenceClasses) {
400 const RegisterList &List = I.second; 405 const RegisterList &List = I.second;
401 RegisterList Shuffled(List); 406 RegisterList Shuffled(List);
402 RandomShuffle(Shuffled.begin(), Shuffled.end(), RNG); 407 RandomShuffle(Shuffled.begin(), Shuffled.end(), RNGW);
403 for (size_t SI = 0, SE = Shuffled.size(); SI < SE; ++SI) { 408 for (size_t SI = 0, SE = Shuffled.size(); SI < SE; ++SI) {
404 Permutation[List[SI]] = Shuffled[SI]; 409 Permutation[List[SI]] = Shuffled[SI];
405 ++NumShuffled; 410 ++NumShuffled;
406 } 411 }
407 } 412 }
408 413
409 assert(NumShuffled + NumPreserved == RegisterSet::Reg_NUM); 414 assert(NumShuffled + NumPreserved == RegisterSet::Reg_NUM);
410 415
411 if (Func->isVerbose(IceV_Random)) { 416 if (Func->isVerbose(IceV_Random)) {
412 OstreamLocker L(Func->getContext()); 417 OstreamLocker L(Func->getContext());
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 710
706 } // end of namespace X86Internal 711 } // end of namespace X86Internal
707 712
708 namespace X8632 { 713 namespace X8632 {
709 using Traits = ::Ice::X86Internal::MachineTraits<TargetX8632>; 714 using Traits = ::Ice::X86Internal::MachineTraits<TargetX8632>;
710 } // end of namespace X8632 715 } // end of namespace X8632
711 716
712 } // end of namespace Ice 717 } // end of namespace Ice
713 718
714 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632TRAITS_H 719 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632TRAITS_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698