Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 //===- subzero/src/IceTargetLowering.cpp - Basic lowering implementation --===// | 1 //===- subzero/src/IceTargetLowering.cpp - Basic lowering implementation --===// |
| 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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 TargetLowering *TargetLowering::createLowering(TargetArch Target, Cfg *Func) { | 98 TargetLowering *TargetLowering::createLowering(TargetArch Target, Cfg *Func) { |
| 99 #define SUBZERO_TARGET(X) \ | 99 #define SUBZERO_TARGET(X) \ |
| 100 if (Target == Target_##X) \ | 100 if (Target == Target_##X) \ |
| 101 return Target##X::create(Func); | 101 return Target##X::create(Func); |
| 102 #include "llvm/Config/SZTargets.def" | 102 #include "llvm/Config/SZTargets.def" |
| 103 | 103 |
| 104 Func->setError("Unsupported target"); | 104 Func->setError("Unsupported target"); |
| 105 return nullptr; | 105 return nullptr; |
| 106 } | 106 } |
| 107 | 107 |
| 108 void TargetLowering::staticInit(TargetArch Target) { | |
| 109 static bool InitGuard = false; | |
|
John
2015/11/04 21:35:23
Not that this matter, but if in the future we allo
Jim Stichnoth
2015/11/04 23:51:39
I did something like that originally, by duplicati
| |
| 110 if (InitGuard) | |
| 111 return; | |
| 112 InitGuard = true; | |
| 113 | |
| 114 // Call the specified target's static initializer. | |
| 115 switch (Target) { | |
| 116 default: | |
| 117 llvm::report_fatal_error("Unsupported target"); | |
| 118 break; | |
| 119 #define SUBZERO_TARGET(X) \ | |
| 120 case Target_##X: \ | |
| 121 Target##X::staticInit(); \ | |
| 122 break; | |
| 123 #include "llvm/Config/SZTargets.def" | |
| 124 } | |
| 125 } | |
| 126 | |
| 108 TargetLowering::TargetLowering(Cfg *Func) | 127 TargetLowering::TargetLowering(Cfg *Func) |
| 109 : Func(Func), Ctx(Func->getContext()), Context() {} | 128 : Func(Func), Ctx(Func->getContext()), Context() {} |
| 110 | 129 |
| 111 std::unique_ptr<Assembler> TargetLowering::createAssembler(TargetArch Target, | 130 std::unique_ptr<Assembler> TargetLowering::createAssembler(TargetArch Target, |
| 112 Cfg *Func) { | 131 Cfg *Func) { |
| 113 #define SUBZERO_TARGET(X) \ | 132 #define SUBZERO_TARGET(X) \ |
| 114 if (Target == Target_##X) \ | 133 if (Target == Target_##X) \ |
| 115 return std::unique_ptr<Assembler>(new X::Assembler##X()); | 134 return std::unique_ptr<Assembler>(new X::Assembler##X()); |
| 116 #include "llvm/Config/SZTargets.def" | 135 #include "llvm/Config/SZTargets.def" |
| 117 | 136 |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 625 if (Target == Target_##X) \ | 644 if (Target == Target_##X) \ |
| 626 return TargetHeader##X::create(Ctx); | 645 return TargetHeader##X::create(Ctx); |
| 627 #include "llvm/Config/SZTargets.def" | 646 #include "llvm/Config/SZTargets.def" |
| 628 | 647 |
| 629 llvm::report_fatal_error("Unsupported target header lowering"); | 648 llvm::report_fatal_error("Unsupported target header lowering"); |
| 630 } | 649 } |
| 631 | 650 |
| 632 TargetHeaderLowering::~TargetHeaderLowering() = default; | 651 TargetHeaderLowering::~TargetHeaderLowering() = default; |
| 633 | 652 |
| 634 } // end of namespace Ice | 653 } // end of namespace Ice |
| OLD | NEW |