| 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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 size_t Pos = RegName.find(Separator); | 147 size_t Pos = RegName.find(Separator); |
| 148 if (Pos == std::string::npos) { | 148 if (Pos == std::string::npos) { |
| 149 *SplitRegClass = ""; | 149 *SplitRegClass = ""; |
| 150 *SplitRegName = RegName; | 150 *SplitRegName = RegName; |
| 151 } else { | 151 } else { |
| 152 *SplitRegClass = RegName.substr(0, Pos); | 152 *SplitRegClass = RegName.substr(0, Pos); |
| 153 *SplitRegName = RegName.substr(Pos + SeparatorWidth); | 153 *SplitRegName = RegName.substr(Pos + SeparatorWidth); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 | 156 |
| 157 LLVM_ATTRIBUTE_NORETURN void badTargetFatalError(TargetArch Target) { |
| 158 llvm::report_fatal_error("Unsupported target: " + |
| 159 std::string(targetArchString(Target))); |
| 160 } |
| 161 |
| 157 } // end of anonymous namespace | 162 } // end of anonymous namespace |
| 158 | 163 |
| 159 void TargetLowering::filterTypeToRegisterSet( | 164 void TargetLowering::filterTypeToRegisterSet( |
| 160 GlobalContext *Ctx, int32_t NumRegs, | 165 GlobalContext *Ctx, int32_t NumRegs, |
| 161 llvm::SmallBitVector TypeToRegisterSet[], size_t TypeToRegisterSetSize, | 166 llvm::SmallBitVector TypeToRegisterSet[], size_t TypeToRegisterSetSize, |
| 162 std::function<IceString(RegNumT)> getRegName, | 167 std::function<IceString(RegNumT)> getRegName, |
| 163 std::function<IceString(RegClass)> getRegClassName) { | 168 std::function<IceString(RegClass)> getRegClassName) { |
| 164 std::vector<llvm::SmallBitVector> UseSet(TypeToRegisterSetSize, | 169 std::vector<llvm::SmallBitVector> UseSet(TypeToRegisterSetSize, |
| 165 llvm::SmallBitVector(NumRegs)); | 170 llvm::SmallBitVector(NumRegs)); |
| 166 std::vector<llvm::SmallBitVector> ExcludeSet(TypeToRegisterSetSize, | 171 std::vector<llvm::SmallBitVector> ExcludeSet(TypeToRegisterSetSize, |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 IndentTwice); | 241 IndentTwice); |
| 237 } | 242 } |
| 238 Str << "\n"; | 243 Str << "\n"; |
| 239 } | 244 } |
| 240 } | 245 } |
| 241 | 246 |
| 242 std::unique_ptr<TargetLowering> | 247 std::unique_ptr<TargetLowering> |
| 243 TargetLowering::createLowering(TargetArch Target, Cfg *Func) { | 248 TargetLowering::createLowering(TargetArch Target, Cfg *Func) { |
| 244 switch (Target) { | 249 switch (Target) { |
| 245 default: | 250 default: |
| 246 llvm::report_fatal_error("Unsupported target"); | 251 badTargetFatalError(Target); |
| 247 #define SUBZERO_TARGET(X) \ | 252 #define SUBZERO_TARGET(X) \ |
| 248 case Target_##X: \ | 253 case Target_##X: \ |
| 249 return ::X::createTargetLowering(Func); | 254 return ::X::createTargetLowering(Func); |
| 250 #include "llvm/Config/SZTargets.def" | 255 #include "llvm/Config/SZTargets.def" |
| 251 #undef SUBZERO_TARGET | 256 #undef SUBZERO_TARGET |
| 252 } | 257 } |
| 253 } | 258 } |
| 254 | 259 |
| 255 void TargetLowering::staticInit(GlobalContext *Ctx) { | 260 void TargetLowering::staticInit(GlobalContext *Ctx) { |
| 256 const TargetArch Target = Ctx->getFlags().getTargetArch(); | 261 const TargetArch Target = Ctx->getFlags().getTargetArch(); |
| 257 // Call the specified target's static initializer. | 262 // Call the specified target's static initializer. |
| 258 switch (Target) { | 263 switch (Target) { |
| 259 default: | 264 default: |
| 260 llvm::report_fatal_error("Unsupported target"); | 265 badTargetFatalError(Target); |
| 261 #define SUBZERO_TARGET(X) \ | 266 #define SUBZERO_TARGET(X) \ |
| 262 case Target_##X: { \ | 267 case Target_##X: { \ |
| 263 static bool InitGuard##X = false; \ | 268 static bool InitGuard##X = false; \ |
| 264 if (InitGuard##X) { \ | 269 if (InitGuard##X) { \ |
| 265 return; \ | 270 return; \ |
| 266 } \ | 271 } \ |
| 267 InitGuard##X = true; \ | 272 InitGuard##X = true; \ |
| 268 ::X::staticInit(Ctx); \ | 273 ::X::staticInit(Ctx); \ |
| 269 } break; | 274 } break; |
| 270 #include "llvm/Config/SZTargets.def" | 275 #include "llvm/Config/SZTargets.def" |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 Str << "+"; | 740 Str << "+"; |
| 736 Str << Offset; | 741 Str << Offset; |
| 737 } | 742 } |
| 738 } | 743 } |
| 739 | 744 |
| 740 std::unique_ptr<TargetDataLowering> | 745 std::unique_ptr<TargetDataLowering> |
| 741 TargetDataLowering::createLowering(GlobalContext *Ctx) { | 746 TargetDataLowering::createLowering(GlobalContext *Ctx) { |
| 742 TargetArch Target = Ctx->getFlags().getTargetArch(); | 747 TargetArch Target = Ctx->getFlags().getTargetArch(); |
| 743 switch (Target) { | 748 switch (Target) { |
| 744 default: | 749 default: |
| 745 llvm::report_fatal_error("Unsupported target"); | 750 badTargetFatalError(Target); |
| 746 #define SUBZERO_TARGET(X) \ | 751 #define SUBZERO_TARGET(X) \ |
| 747 case Target_##X: \ | 752 case Target_##X: \ |
| 748 return ::X::createTargetDataLowering(Ctx); | 753 return ::X::createTargetDataLowering(Ctx); |
| 749 #include "llvm/Config/SZTargets.def" | 754 #include "llvm/Config/SZTargets.def" |
| 750 #undef SUBZERO_TARGET | 755 #undef SUBZERO_TARGET |
| 751 } | 756 } |
| 752 } | 757 } |
| 753 | 758 |
| 754 TargetDataLowering::~TargetDataLowering() = default; | 759 TargetDataLowering::~TargetDataLowering() = default; |
| 755 | 760 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 } | 872 } |
| 868 | 873 |
| 869 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; | 874 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; |
| 870 } | 875 } |
| 871 | 876 |
| 872 std::unique_ptr<TargetHeaderLowering> | 877 std::unique_ptr<TargetHeaderLowering> |
| 873 TargetHeaderLowering::createLowering(GlobalContext *Ctx) { | 878 TargetHeaderLowering::createLowering(GlobalContext *Ctx) { |
| 874 TargetArch Target = Ctx->getFlags().getTargetArch(); | 879 TargetArch Target = Ctx->getFlags().getTargetArch(); |
| 875 switch (Target) { | 880 switch (Target) { |
| 876 default: | 881 default: |
| 877 llvm::report_fatal_error("Unsupported target"); | 882 badTargetFatalError(Target); |
| 878 #define SUBZERO_TARGET(X) \ | 883 #define SUBZERO_TARGET(X) \ |
| 879 case Target_##X: \ | 884 case Target_##X: \ |
| 880 return ::X::createTargetHeaderLowering(Ctx); | 885 return ::X::createTargetHeaderLowering(Ctx); |
| 881 #include "llvm/Config/SZTargets.def" | 886 #include "llvm/Config/SZTargets.def" |
| 882 #undef SUBZERO_TARGET | 887 #undef SUBZERO_TARGET |
| 883 } | 888 } |
| 884 } | 889 } |
| 885 | 890 |
| 886 TargetHeaderLowering::~TargetHeaderLowering() = default; | 891 TargetHeaderLowering::~TargetHeaderLowering() = default; |
| 887 | 892 |
| 888 } // end of namespace Ice | 893 } // end of namespace Ice |
| OLD | NEW |