OLD | NEW |
1 //===- subzero/src/IceTargetLoweringARM32.cpp - ARM32 lowering ------------===// | 1 //===- subzero/src/IceTargetLoweringARM32.cpp - ARM32 lowering ------------===// |
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 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 | 1263 |
1264 void TargetARM32::emitVariable(const Variable *Var) const { | 1264 void TargetARM32::emitVariable(const Variable *Var) const { |
1265 if (!BuildDefs::dump()) | 1265 if (!BuildDefs::dump()) |
1266 return; | 1266 return; |
1267 Ostream &Str = Ctx->getStrEmit(); | 1267 Ostream &Str = Ctx->getStrEmit(); |
1268 if (Var->hasReg()) { | 1268 if (Var->hasReg()) { |
1269 Str << getRegName(Var->getRegNum(), Var->getType()); | 1269 Str << getRegName(Var->getRegNum(), Var->getType()); |
1270 return; | 1270 return; |
1271 } | 1271 } |
1272 if (Var->mustHaveReg()) { | 1272 if (Var->mustHaveReg()) { |
1273 llvm::report_fatal_error("Infinite-weight Variable (" + Var->getName(Func) + | 1273 llvm::report_fatal_error("Infinite-weight Variable (" + Var->getName() + |
1274 ") has no register assigned - function " + | 1274 ") has no register assigned - function " + |
1275 Func->getFunctionName()); | 1275 Func->getFunctionName()); |
1276 } | 1276 } |
1277 assert(!Var->isRematerializable()); | 1277 assert(!Var->isRematerializable()); |
1278 int32_t Offset = Var->getStackOffset(); | 1278 int32_t Offset = Var->getStackOffset(); |
1279 auto BaseRegNum = Var->getBaseRegNum(); | 1279 auto BaseRegNum = Var->getBaseRegNum(); |
1280 if (BaseRegNum.hasNoValue()) { | 1280 if (BaseRegNum.hasNoValue()) { |
1281 BaseRegNum = getFrameOrStackReg(); | 1281 BaseRegNum = getFrameOrStackReg(); |
1282 } | 1282 } |
1283 const Type VarTy = Var->getType(); | 1283 const Type VarTy = Var->getType(); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1395 continue; | 1395 continue; |
1396 } | 1396 } |
1397 } else { | 1397 } else { |
1398 if (!CC.argInVFP(Ty, &RegNum)) { | 1398 if (!CC.argInVFP(Ty, &RegNum)) { |
1399 continue; | 1399 continue; |
1400 } | 1400 } |
1401 } | 1401 } |
1402 | 1402 |
1403 Variable *RegisterArg = Func->makeVariable(Ty); | 1403 Variable *RegisterArg = Func->makeVariable(Ty); |
1404 if (BuildDefs::dump()) { | 1404 if (BuildDefs::dump()) { |
1405 RegisterArg->setName(Func, "home_reg:" + Arg->getName(Func)); | 1405 RegisterArg->setName(Func, "home_reg:" + Arg->getName()); |
1406 } | 1406 } |
1407 RegisterArg->setIsArg(); | 1407 RegisterArg->setIsArg(); |
1408 Arg->setIsArg(false); | 1408 Arg->setIsArg(false); |
1409 Args[I] = RegisterArg; | 1409 Args[I] = RegisterArg; |
1410 switch (Ty) { | 1410 switch (Ty) { |
1411 default: { RegisterArg->setRegNum(RegNum); } break; | 1411 default: { RegisterArg->setRegNum(RegNum); } break; |
1412 case IceType_i64: { | 1412 case IceType_i64: { |
1413 auto *RegisterArg64 = llvm::cast<Variable64On32>(RegisterArg); | 1413 auto *RegisterArg64 = llvm::cast<Variable64On32>(RegisterArg); |
1414 RegisterArg64->initHiLo(Func); | 1414 RegisterArg64->initHiLo(Func); |
1415 RegisterArg64->getLo()->setRegNum( | 1415 RegisterArg64->getLo()->setRegNum( |
(...skipping 5496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6912 // However, for compatibility with current NaCl LLVM, don't claim that. | 6912 // However, for compatibility with current NaCl LLVM, don't claim that. |
6913 Str << ".eabi_attribute 14, 3 @ Tag_ABI_PCS_R9_use: Not used\n"; | 6913 Str << ".eabi_attribute 14, 3 @ Tag_ABI_PCS_R9_use: Not used\n"; |
6914 } | 6914 } |
6915 | 6915 |
6916 SmallBitVector TargetARM32::TypeToRegisterSet[RegARM32::RCARM32_NUM]; | 6916 SmallBitVector TargetARM32::TypeToRegisterSet[RegARM32::RCARM32_NUM]; |
6917 SmallBitVector TargetARM32::TypeToRegisterSetUnfiltered[RegARM32::RCARM32_NUM]; | 6917 SmallBitVector TargetARM32::TypeToRegisterSetUnfiltered[RegARM32::RCARM32_NUM]; |
6918 SmallBitVector TargetARM32::RegisterAliases[RegARM32::Reg_NUM]; | 6918 SmallBitVector TargetARM32::RegisterAliases[RegARM32::Reg_NUM]; |
6919 | 6919 |
6920 } // end of namespace ARM32 | 6920 } // end of namespace ARM32 |
6921 } // end of namespace Ice | 6921 } // end of namespace Ice |
OLD | NEW |