OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |