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

Side by Side Diff: src/IceClFlags.cpp

Issue 1185703004: Add constant blinding/pooling option for X8632 code translation (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: fix the lit tests and some issues Created 5 years, 6 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/IceClFlags.cpp - Command line flags and parsing --------===// 1 //===- subzero/src/IceClFlags.cpp - Command line flags and parsing --------===//
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 // This file defines commandline flags parsing. 10 // This file defines commandline flags parsing.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 cl::opt<bool> 99 cl::opt<bool>
100 EnablePhiEdgeSplit("phi-edge-split", 100 EnablePhiEdgeSplit("phi-edge-split",
101 cl::desc("Enable edge splitting for Phi lowering"), 101 cl::desc("Enable edge splitting for Phi lowering"),
102 cl::init(true)); 102 cl::init(true));
103 103
104 // TODO(stichnot): See if we can easily use LLVM's -rng-seed option 104 // TODO(stichnot): See if we can easily use LLVM's -rng-seed option
105 // and implementation. I expect the implementation is different and 105 // and implementation. I expect the implementation is different and
106 // therefore the tests would need to be changed. 106 // therefore the tests would need to be changed.
107 cl::opt<unsigned long long> 107 cl::opt<unsigned long long>
108 RandomSeed("sz-seed", cl::desc("Seed the random number generator"), 108 RandomSeed("sz-seed", cl::desc("Seed the random number generator"),
109 cl::init(time(0))); 109 cl::init(time(0)));
Jim Stichnoth 2015/06/21 00:05:27 Why did this get switched back???
qining 2015/06/21 00:30:47 I think we can explicitly set this seed. Originall
Jim Stichnoth 2015/06/21 00:40:09 Yes, please make this init(1) by default. I think
110 110
111 cl::opt<bool> ShouldDoNopInsertion("nop-insertion", 111 cl::opt<bool> ShouldDoNopInsertion("nop-insertion",
112 cl::desc("Randomly insert NOPs"), 112 cl::desc("Randomly insert NOPs"),
113 cl::init(false)); 113 cl::init(false));
114 114
115 cl::opt<bool> 115 cl::opt<bool>
116 RandomizeRegisterAllocation("randomize-regalloc", 116 RandomizeRegisterAllocation("randomize-regalloc",
117 cl::desc("Randomize register allocation"), 117 cl::desc("Randomize register allocation"),
118 cl::init(false)); 118 cl::init(false));
119 119
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 cl::opt<bool> LLVMVerboseErrors( 251 cl::opt<bool> LLVMVerboseErrors(
252 "verbose-llvm-parse-errors", 252 "verbose-llvm-parse-errors",
253 cl::desc("Print out more descriptive PNaCl bitcode parse errors when " 253 cl::desc("Print out more descriptive PNaCl bitcode parse errors when "
254 "building LLVM IR first"), 254 "building LLVM IR first"),
255 cl::init(false)); 255 cl::init(false));
256 cl::opt<std::string> OutputFilename("o", cl::desc("Override output filename"), 256 cl::opt<std::string> OutputFilename("o", cl::desc("Override output filename"),
257 cl::init("-"), cl::value_desc("filename")); 257 cl::init("-"), cl::value_desc("filename"));
258 258
259 Ice::IceString AppName; 259 Ice::IceString AppName;
260 260
261 // Define the command line options for immediates pooling and randomization
262 cl::opt<Ice::RandomizeAndPoolImmediatesEnum> RandomizeAndPoolImmediatesOption(
263 "randomize-pool-immediates",
264 cl::desc("Randomize or pooling the representation of immediates"),
265 cl::init(Ice::RPI_None),
266 cl::values(clEnumValN(Ice::RPI_None, "none",
267 "Do not randomize or pooling immediates (default)"),
268 clEnumValN(Ice::RPI_Randomize, "randomize",
269 "Turn on immediate constants blinding"),
270 clEnumValN(Ice::RPI_Pool, "pool",
271 "Turn on immediate constants pooling"),
272 clEnumValEnd));
273 // Command line option for x86 immediate integer randomization/pooling
274 // threshold. Immediates whose representation are between:
275 // -RandomizeAndPoolImmediatesThreshold/2 and
276 // +RandomizeAndPoolImmediatesThreshold/2 will be randomized or pooled.
277 cl::opt<uint32_t> RandomizeAndPoolImmediatesThreshold(
278 "randomize-pool-threshold",
279 cl::desc("The threshold for immediates randomization and pooling"),
280 cl::init(0xffff));
281
261 } // end of anonymous namespace 282 } // end of anonymous namespace
262 283
263 namespace Ice { 284 namespace Ice {
264 285
265 void ClFlags::parseFlags(int argc, char **argv) { 286 void ClFlags::parseFlags(int argc, char **argv) {
266 cl::ParseCommandLineOptions(argc, argv); 287 cl::ParseCommandLineOptions(argc, argv);
267 AppName = IceString(argv[0]); 288 AppName = IceString(argv[0]);
268 } 289 }
269 290
270 void ClFlags::resetClFlags(ClFlags &OutFlags) { 291 void ClFlags::resetClFlags(ClFlags &OutFlags) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 OutFlags.setTestPrefix(::TestPrefix); 364 OutFlags.setTestPrefix(::TestPrefix);
344 OutFlags.setTimeEachFunction(::TimeEachFunction); 365 OutFlags.setTimeEachFunction(::TimeEachFunction);
345 OutFlags.setTimingFocusOn(::TimingFocusOn); 366 OutFlags.setTimingFocusOn(::TimingFocusOn);
346 OutFlags.setTranslateOnly(::TranslateOnly); 367 OutFlags.setTranslateOnly(::TranslateOnly);
347 OutFlags.setUseSandboxing(::UseSandboxing); 368 OutFlags.setUseSandboxing(::UseSandboxing);
348 OutFlags.setVerboseFocusOn(::VerboseFocusOn); 369 OutFlags.setVerboseFocusOn(::VerboseFocusOn);
349 OutFlags.setOutFileType(::OutFileType); 370 OutFlags.setOutFileType(::OutFileType);
350 OutFlags.setMaxNopsPerInstruction(::MaxNopsPerInstruction); 371 OutFlags.setMaxNopsPerInstruction(::MaxNopsPerInstruction);
351 OutFlags.setNopProbabilityAsPercentage(::NopProbabilityAsPercentage); 372 OutFlags.setNopProbabilityAsPercentage(::NopProbabilityAsPercentage);
352 OutFlags.setVerbose(VMask); 373 OutFlags.setVerbose(VMask);
374
375 // set for immediates randomization or pooling option
376 OutFlags.setRandomizeAndPoolImmediatesOption(
377 ::RandomizeAndPoolImmediatesOption);
378 OutFlags.setRandomizeAndPoolImmediatesThreshold(
379 ::RandomizeAndPoolImmediatesThreshold);
353 } 380 }
354 381
355 void ClFlags::getParsedClFlagsExtra(ClFlagsExtra &OutFlagsExtra) { 382 void ClFlags::getParsedClFlagsExtra(ClFlagsExtra &OutFlagsExtra) {
356 OutFlagsExtra.setAlwaysExitSuccess(AlwaysExitSuccess); 383 OutFlagsExtra.setAlwaysExitSuccess(AlwaysExitSuccess);
357 OutFlagsExtra.setBuildOnRead(BuildOnRead); 384 OutFlagsExtra.setBuildOnRead(BuildOnRead);
358 OutFlagsExtra.setGenerateBuildAtts(GenerateBuildAtts); 385 OutFlagsExtra.setGenerateBuildAtts(GenerateBuildAtts);
359 OutFlagsExtra.setLLVMVerboseErrors(LLVMVerboseErrors); 386 OutFlagsExtra.setLLVMVerboseErrors(LLVMVerboseErrors);
360 OutFlagsExtra.setAppName(AppName); 387 OutFlagsExtra.setAppName(AppName);
361 OutFlagsExtra.setInputFileFormat(InputFileFormat); 388 OutFlagsExtra.setInputFileFormat(InputFileFormat);
362 OutFlagsExtra.setIRFilename(IRFilename); 389 OutFlagsExtra.setIRFilename(IRFilename);
363 OutFlagsExtra.setLogFilename(LogFilename); 390 OutFlagsExtra.setLogFilename(LogFilename);
364 OutFlagsExtra.setOutputFilename(OutputFilename); 391 OutFlagsExtra.setOutputFilename(OutputFilename);
365 } 392 }
366 393
367 } // end of namespace Ice 394 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceClFlags.h ('k') | src/IceDefs.h » ('j') | src/IceGlobalContext.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698