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 // This file implements the skeleton of the TargetLowering class, | 10 // This file implements the skeleton of the TargetLowering class, |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 } | 244 } |
245 } | 245 } |
246 | 246 |
247 void TargetLowering::sortVarsByAlignment(VarList &Dest, | 247 void TargetLowering::sortVarsByAlignment(VarList &Dest, |
248 const VarList &Source) const { | 248 const VarList &Source) const { |
249 Dest = Source; | 249 Dest = Source; |
250 // Instead of std::sort, we could do a bucket sort with log2(alignment) | 250 // Instead of std::sort, we could do a bucket sort with log2(alignment) |
251 // as the buckets, if performance is an issue. | 251 // as the buckets, if performance is an issue. |
252 std::sort(Dest.begin(), Dest.end(), | 252 std::sort(Dest.begin(), Dest.end(), |
253 [this](const Variable *V1, const Variable *V2) { | 253 [this](const Variable *V1, const Variable *V2) { |
254 return typeWidthInBytesOnStack(V1->getType()) > | 254 return typeWidthInBytesOnStack(V1->getType()) > |
255 typeWidthInBytesOnStack(V2->getType()); | 255 typeWidthInBytesOnStack(V2->getType()); |
256 }); | 256 }); |
257 } | 257 } |
258 | 258 |
259 void TargetLowering::getVarStackSlotParams( | 259 void TargetLowering::getVarStackSlotParams( |
260 VarList &SortedSpilledVariables, llvm::SmallBitVector &RegsUsed, | 260 VarList &SortedSpilledVariables, llvm::SmallBitVector &RegsUsed, |
261 size_t *GlobalsSize, size_t *SpillAreaSizeBytes, | 261 size_t *GlobalsSize, size_t *SpillAreaSizeBytes, |
262 uint32_t *SpillAreaAlignmentBytes, uint32_t *LocalsSlotsAlignmentBytes, | 262 uint32_t *SpillAreaAlignmentBytes, uint32_t *LocalsSlotsAlignmentBytes, |
263 std::function<bool(Variable *)> TargetVarHook) { | 263 std::function<bool(Variable *)> TargetVarHook) { |
264 const VariablesMetadata *VMetadata = Func->getVMetadata(); | 264 const VariablesMetadata *VMetadata = Func->getVMetadata(); |
265 llvm::BitVector IsVarReferenced(Func->getNumVariables()); | 265 llvm::BitVector IsVarReferenced(Func->getNumVariables()); |
266 for (CfgNode *Node : Func->getNodes()) { | 266 for (CfgNode *Node : Func->getNodes()) { |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 return std::unique_ptr<TargetDataLowering>(TargetData##X::create(Ctx)); | 438 return std::unique_ptr<TargetDataLowering>(TargetData##X::create(Ctx)); |
439 #include "llvm/Config/SZTargets.def" | 439 #include "llvm/Config/SZTargets.def" |
440 | 440 |
441 llvm_unreachable("Unsupported target data lowering"); | 441 llvm_unreachable("Unsupported target data lowering"); |
442 return nullptr; | 442 return nullptr; |
443 } | 443 } |
444 | 444 |
445 TargetDataLowering::~TargetDataLowering() {} | 445 TargetDataLowering::~TargetDataLowering() {} |
446 | 446 |
447 } // end of namespace Ice | 447 } // end of namespace Ice |
OLD | NEW |