| 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 129 // | 129 // | 
| 130 // The lowering method may look ahead in the instruction stream as | 130 // The lowering method may look ahead in the instruction stream as | 
| 131 // desired, and lower additional instructions in conjunction with the | 131 // desired, and lower additional instructions in conjunction with the | 
| 132 // current one, for example fusing a compare and branch.  If it does, | 132 // current one, for example fusing a compare and branch.  If it does, | 
| 133 // it should advance Context.Cur to point to the next non-deleted | 133 // it should advance Context.Cur to point to the next non-deleted | 
| 134 // instruction to process, and it should delete any additional | 134 // instruction to process, and it should delete any additional | 
| 135 // instructions it consumes. | 135 // instructions it consumes. | 
| 136 void TargetLowering::lower() { | 136 void TargetLowering::lower() { | 
| 137   assert(!Context.atEnd()); | 137   assert(!Context.atEnd()); | 
| 138   Inst *Inst = *Context.getCur(); | 138   Inst *Inst = *Context.getCur(); | 
|  | 139   // Mark the current instruction as deleted before lowering, | 
|  | 140   // otherwise the Dest variable will likely get marked as non-SSA. | 
|  | 141   // See Variable::setDefinition(). | 
|  | 142   Inst->setDeleted(); | 
| 139   switch (Inst->getKind()) { | 143   switch (Inst->getKind()) { | 
| 140   case Inst::Alloca: | 144   case Inst::Alloca: | 
| 141     lowerAlloca(llvm::dyn_cast<InstAlloca>(Inst)); | 145     lowerAlloca(llvm::dyn_cast<InstAlloca>(Inst)); | 
| 142     break; | 146     break; | 
| 143   case Inst::Arithmetic: | 147   case Inst::Arithmetic: | 
| 144     lowerArithmetic(llvm::dyn_cast<InstArithmetic>(Inst)); | 148     lowerArithmetic(llvm::dyn_cast<InstArithmetic>(Inst)); | 
| 145     break; | 149     break; | 
| 146   case Inst::Assign: | 150   case Inst::Assign: | 
| 147     lowerAssign(llvm::dyn_cast<InstAssign>(Inst)); | 151     lowerAssign(llvm::dyn_cast<InstAssign>(Inst)); | 
| 148     break; | 152     break; | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 193     break; | 197     break; | 
| 194   case Inst::FakeDef: | 198   case Inst::FakeDef: | 
| 195   case Inst::FakeUse: | 199   case Inst::FakeUse: | 
| 196   case Inst::FakeKill: | 200   case Inst::FakeKill: | 
| 197   case Inst::Target: | 201   case Inst::Target: | 
| 198     // These are all Target instruction types and shouldn't be | 202     // These are all Target instruction types and shouldn't be | 
| 199     // encountered at this stage. | 203     // encountered at this stage. | 
| 200     Func->setError("Can't lower unsupported instruction type"); | 204     Func->setError("Can't lower unsupported instruction type"); | 
| 201     break; | 205     break; | 
| 202   } | 206   } | 
| 203   Inst->setDeleted(); |  | 
| 204 | 207 | 
| 205   postLower(); | 208   postLower(); | 
| 206 | 209 | 
| 207   Context.advanceCur(); | 210   Context.advanceCur(); | 
| 208   Context.advanceNext(); | 211   Context.advanceNext(); | 
| 209 } | 212 } | 
| 210 | 213 | 
| 211 // Drives register allocation, allowing all physical registers (except | 214 // Drives register allocation, allowing all physical registers (except | 
| 212 // perhaps for the frame pointer) to be allocated.  This set of | 215 // perhaps for the frame pointer) to be allocated.  This set of | 
| 213 // registers could potentially be parameterized if we want to restrict | 216 // registers could potentially be parameterized if we want to restrict | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 239   if (Target == Target_ARM64) | 242   if (Target == Target_ARM64) | 
| 240     return IceTargetGlobalInitARM64::create(Ctx); | 243     return IceTargetGlobalInitARM64::create(Ctx); | 
| 241 #endif | 244 #endif | 
| 242   llvm_unreachable("Unsupported target"); | 245   llvm_unreachable("Unsupported target"); | 
| 243   return NULL; | 246   return NULL; | 
| 244 } | 247 } | 
| 245 | 248 | 
| 246 TargetGlobalInitLowering::~TargetGlobalInitLowering() {} | 249 TargetGlobalInitLowering::~TargetGlobalInitLowering() {} | 
| 247 | 250 | 
| 248 } // end of namespace Ice | 251 } // end of namespace Ice | 
| OLD | NEW | 
|---|