| OLD | NEW |
| 1 //===- subzero/src/IceClFlags.h - Cl Flags for translation ------*- C++ -*-===// | 1 //===- subzero/src/IceClFlags.h - Cl Flags for translation ------*- 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 10 matching lines...) Expand all Loading... |
| 21 namespace Ice { | 21 namespace Ice { |
| 22 | 22 |
| 23 class ClFlagsExtra; | 23 class ClFlagsExtra; |
| 24 | 24 |
| 25 /// Define variables which configure translation and related support functions. | 25 /// Define variables which configure translation and related support functions. |
| 26 class ClFlags { | 26 class ClFlags { |
| 27 ClFlags(const ClFlags &) = delete; | 27 ClFlags(const ClFlags &) = delete; |
| 28 ClFlags &operator=(const ClFlags &) = delete; | 28 ClFlags &operator=(const ClFlags &) = delete; |
| 29 | 29 |
| 30 public: | 30 public: |
| 31 using StringVector = std::vector<IceString>; |
| 32 |
| 31 /// User defined constructor. | 33 /// User defined constructor. |
| 32 ClFlags() { resetClFlags(*this); } | 34 ClFlags() { resetClFlags(*this); } |
| 33 | 35 |
| 34 /// \brief Parse commmand line options for Subzero. | 36 /// \brief Parse commmand line options for Subzero. |
| 35 /// | 37 /// |
| 36 /// This is done use cl::ParseCommandLineOptions() and the static variables of | 38 /// This is done use cl::ParseCommandLineOptions() and the static variables of |
| 37 /// type cl::opt defined in IceClFlags.cpp | 39 /// type cl::opt defined in IceClFlags.cpp |
| 38 static void parseFlags(int argc, char *argv[]); | 40 static void parseFlags(int argc, char *argv[]); |
| 39 /// Reset all configuration options to their nominal values. | 41 /// Reset all configuration options to their nominal values. |
| 40 static void resetClFlags(ClFlags &OutFlags); | 42 static void resetClFlags(ClFlags &OutFlags); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 /// Get the value of ClFlags::DumpStats | 110 /// Get the value of ClFlags::DumpStats |
| 109 bool getDumpStats() const { return BuildDefs::dump() && DumpStats; } | 111 bool getDumpStats() const { return BuildDefs::dump() && DumpStats; } |
| 110 /// Set ClFlags::DumpStats to a new value | 112 /// Set ClFlags::DumpStats to a new value |
| 111 void setDumpStats(bool NewValue) { DumpStats = NewValue; } | 113 void setDumpStats(bool NewValue) { DumpStats = NewValue; } |
| 112 | 114 |
| 113 /// Get the value of ClFlags::EnableBlockProfile | 115 /// Get the value of ClFlags::EnableBlockProfile |
| 114 bool getEnableBlockProfile() const { return EnableBlockProfile; } | 116 bool getEnableBlockProfile() const { return EnableBlockProfile; } |
| 115 /// Set ClFlags::EnableBlockProfile to a new value | 117 /// Set ClFlags::EnableBlockProfile to a new value |
| 116 void setEnableBlockProfile(bool NewValue) { EnableBlockProfile = NewValue; } | 118 void setEnableBlockProfile(bool NewValue) { EnableBlockProfile = NewValue; } |
| 117 | 119 |
| 120 /// Get the restricted list of registers to use, for corresponding register |
| 121 /// classes, in register allocation. |
| 122 const StringVector &getUseRestrictedRegisters() const { |
| 123 return UseRestrictedRegisters; |
| 124 } |
| 125 void clearUseRestrictedRegisters() { UseRestrictedRegisters.clear(); } |
| 126 void setUseRestrictedRegisters(const StringVector &Registers) { |
| 127 UseRestrictedRegisters = Registers; |
| 128 } |
| 129 |
| 118 /// Get the value of ClFlags::ForceMemIntrinOpt | 130 /// Get the value of ClFlags::ForceMemIntrinOpt |
| 119 bool getForceMemIntrinOpt() const { return ForceMemIntrinOpt; } | 131 bool getForceMemIntrinOpt() const { return ForceMemIntrinOpt; } |
| 120 /// Set ClFlags::ForceMemIntrinOpt to a new value | 132 /// Set ClFlags::ForceMemIntrinOpt to a new value |
| 121 void setForceMemIntrinOpt(bool NewValue) { ForceMemIntrinOpt = NewValue; } | 133 void setForceMemIntrinOpt(bool NewValue) { ForceMemIntrinOpt = NewValue; } |
| 122 | 134 |
| 123 /// Get the value of ClFlags::FunctionSections | 135 /// Get the value of ClFlags::FunctionSections |
| 124 bool getFunctionSections() const { return FunctionSections; } | 136 bool getFunctionSections() const { return FunctionSections; } |
| 125 /// Set ClFlags::FunctionSections to a new value | 137 /// Set ClFlags::FunctionSections to a new value |
| 126 void setFunctionSections(bool NewValue) { FunctionSections = NewValue; } | 138 void setFunctionSections(bool NewValue) { FunctionSections = NewValue; } |
| 127 | 139 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 return BuildDefs::dump() && TimeEachFunction; | 191 return BuildDefs::dump() && TimeEachFunction; |
| 180 } | 192 } |
| 181 /// Set ClFlags::TimeEachFunction to a new value | 193 /// Set ClFlags::TimeEachFunction to a new value |
| 182 void setTimeEachFunction(bool NewValue) { TimeEachFunction = NewValue; } | 194 void setTimeEachFunction(bool NewValue) { TimeEachFunction = NewValue; } |
| 183 | 195 |
| 184 /// Get the value of ClFlags::UseNonsfi | 196 /// Get the value of ClFlags::UseNonsfi |
| 185 bool getUseNonsfi() const { return UseNonsfi; } | 197 bool getUseNonsfi() const { return UseNonsfi; } |
| 186 /// Set ClFlags::UseNonsfi to a new value | 198 /// Set ClFlags::UseNonsfi to a new value |
| 187 void setUseNonsfi(bool NewValue) { UseNonsfi = NewValue; } | 199 void setUseNonsfi(bool NewValue) { UseNonsfi = NewValue; } |
| 188 | 200 |
| 201 /// Get the list of registers exluded in register allocation. |
| 202 const StringVector &getExcludedRegisters() const { return ExcludedRegisters; } |
| 203 void clearExcludedRegisters() { ExcludedRegisters.clear(); } |
| 204 void setExcludedRegisters(const StringVector &Registers) { |
| 205 ExcludedRegisters = Registers; |
| 206 } |
| 207 |
| 189 /// Get the value of ClFlags::UseSandboxing | 208 /// Get the value of ClFlags::UseSandboxing |
| 190 bool getUseSandboxing() const { return UseSandboxing; } | 209 bool getUseSandboxing() const { return UseSandboxing; } |
| 191 /// Set ClFlags::UseSandboxing to a new value | 210 /// Set ClFlags::UseSandboxing to a new value |
| 192 void setUseSandboxing(bool NewValue) { UseSandboxing = NewValue; } | 211 void setUseSandboxing(bool NewValue) { UseSandboxing = NewValue; } |
| 193 | 212 |
| 194 // Enum and integer accessors. | 213 // Enum and integer accessors. |
| 195 /// Get the value of ClFlags::Opt | 214 /// Get the value of ClFlags::Opt |
| 196 OptLevel getOptLevel() const { return Opt; } | 215 OptLevel getOptLevel() const { return Opt; } |
| 197 /// Set ClFlags::Opt to a new value | 216 /// Set ClFlags::Opt to a new value |
| 198 void setOptLevel(OptLevel NewValue) { Opt = NewValue; } | 217 void setOptLevel(OptLevel NewValue) { Opt = NewValue; } |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 /// see anonymous_namespace{IceClFlags.cpp}::DisableHybridAssembly | 402 /// see anonymous_namespace{IceClFlags.cpp}::DisableHybridAssembly |
| 384 bool DisableHybridAssembly; | 403 bool DisableHybridAssembly; |
| 385 /// see anonymous_namespace{IceClFlags.cpp}::DisableInternal | 404 /// see anonymous_namespace{IceClFlags.cpp}::DisableInternal |
| 386 bool DisableInternal; | 405 bool DisableInternal; |
| 387 /// see anonymous_namespace{IceClFlags.cpp}::DisableTranslation | 406 /// see anonymous_namespace{IceClFlags.cpp}::DisableTranslation |
| 388 bool DisableTranslation; | 407 bool DisableTranslation; |
| 389 /// see anonymous_namespace{IceClFlags.cpp}::DumpStats | 408 /// see anonymous_namespace{IceClFlags.cpp}::DumpStats |
| 390 bool DumpStats; | 409 bool DumpStats; |
| 391 /// see anonymous_namespace{IceClFlags.cpp}::EnableBlockProfile | 410 /// see anonymous_namespace{IceClFlags.cpp}::EnableBlockProfile |
| 392 bool EnableBlockProfile; | 411 bool EnableBlockProfile; |
| 412 /// see anonymous_namespace{IceClFlags.cpp}::ExcludedRegisters; |
| 413 StringVector ExcludedRegisters; |
| 393 /// see anonymous_namespace{IceClFlags.cpp}::ForceMemIntrinOpt | 414 /// see anonymous_namespace{IceClFlags.cpp}::ForceMemIntrinOpt |
| 394 bool ForceMemIntrinOpt; | 415 bool ForceMemIntrinOpt; |
| 395 /// see anonymous_namespace{IceClFlags.cpp}::FunctionSections | 416 /// see anonymous_namespace{IceClFlags.cpp}::FunctionSections |
| 396 bool FunctionSections; | 417 bool FunctionSections; |
| 397 /// Initialized to false; not set by the command line. | 418 /// Initialized to false; not set by the command line. |
| 398 bool GenerateUnitTestMessages; | 419 bool GenerateUnitTestMessages; |
| 399 /// see anonymous_namespace{IceClFlags.cpp}::MockBoundsCheck | 420 /// see anonymous_namespace{IceClFlags.cpp}::MockBoundsCheck |
| 400 bool MockBoundsCheck; | 421 bool MockBoundsCheck; |
| 401 /// see anonymous_namespace{IceClFlags.cpp}::EnablePhiEdgeSplit | 422 /// see anonymous_namespace{IceClFlags.cpp}::EnablePhiEdgeSplit |
| 402 bool PhiEdgeSplit; | 423 bool PhiEdgeSplit; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 415 /// see anonymous_namespace{IceClFlags.cpp}::ReorderPooledConstants | 436 /// see anonymous_namespace{IceClFlags.cpp}::ReorderPooledConstants |
| 416 bool ReorderPooledConstants; | 437 bool ReorderPooledConstants; |
| 417 /// see anonymous_namespace{IceClFlags.cpp}::SkipUnimplemented | 438 /// see anonymous_namespace{IceClFlags.cpp}::SkipUnimplemented |
| 418 bool SkipUnimplemented; | 439 bool SkipUnimplemented; |
| 419 /// see anonymous_namespace{IceClFlags.cpp}::SubzeroTimingEnabled | 440 /// see anonymous_namespace{IceClFlags.cpp}::SubzeroTimingEnabled |
| 420 bool SubzeroTimingEnabled; | 441 bool SubzeroTimingEnabled; |
| 421 /// see anonymous_namespace{IceClFlags.cpp}::TimeEachFunction | 442 /// see anonymous_namespace{IceClFlags.cpp}::TimeEachFunction |
| 422 bool TimeEachFunction; | 443 bool TimeEachFunction; |
| 423 /// see anonymous_namespace{IceClFlags.cpp}::UseNonsfi | 444 /// see anonymous_namespace{IceClFlags.cpp}::UseNonsfi |
| 424 bool UseNonsfi; | 445 bool UseNonsfi; |
| 446 /// see anonymous_namespace{IceClFlags.cpp}::UseRegistrictedRegisters; |
| 447 StringVector UseRestrictedRegisters; |
| 425 /// see anonymous_namespace{IceClFlags.cpp}::UseSandboxing | 448 /// see anonymous_namespace{IceClFlags.cpp}::UseSandboxing |
| 426 bool UseSandboxing; | 449 bool UseSandboxing; |
| 427 /// see anonymous_namespace{IceClFlags.cpp}::OLevel | 450 /// see anonymous_namespace{IceClFlags.cpp}::OLevel |
| 428 OptLevel Opt; | 451 OptLevel Opt; |
| 429 /// see anonymous_namespace{IceClFlags.cpp}::OutFileType | 452 /// see anonymous_namespace{IceClFlags.cpp}::OutFileType |
| 430 FileType OutFileType; | 453 FileType OutFileType; |
| 431 /// see anonymous_namespace{IceClFlags.cpp}::RandomizeAndPoolImmediatesOption | 454 /// see anonymous_namespace{IceClFlags.cpp}::RandomizeAndPoolImmediatesOption |
| 432 RandomizeAndPoolImmediatesEnum RandomizeAndPoolImmediatesOption; | 455 RandomizeAndPoolImmediatesEnum RandomizeAndPoolImmediatesOption; |
| 433 /// see | 456 /// see |
| 434 /// anonymous_namespace{IceClFlags.cpp}::RandomizeAndPoolImmediatesThreshold | 457 /// anonymous_namespace{IceClFlags.cpp}::RandomizeAndPoolImmediatesThreshold |
| (...skipping 27 matching lines...) Expand all Loading... |
| 462 /// see anonymous_namespace{IceClFlags.cpp}::NumThreads | 485 /// see anonymous_namespace{IceClFlags.cpp}::NumThreads |
| 463 | 486 |
| 464 size_t NumTranslationThreads; // 0 means completely sequential | 487 size_t NumTranslationThreads; // 0 means completely sequential |
| 465 /// see anonymous_namespace{IceClFlags.cpp}::RandomSeed | 488 /// see anonymous_namespace{IceClFlags.cpp}::RandomSeed |
| 466 uint64_t RandomSeed; | 489 uint64_t RandomSeed; |
| 467 }; | 490 }; |
| 468 | 491 |
| 469 } // end of namespace Ice | 492 } // end of namespace Ice |
| 470 | 493 |
| 471 #endif // SUBZERO_SRC_ICECLFLAGS_H | 494 #endif // SUBZERO_SRC_ICECLFLAGS_H |
| OLD | NEW |