| OLD | NEW |
| 1 //===- subzero/src/IceInstX8664.cpp - X86-64 instruction implementation ---===// | 1 //===- subzero/src/IceInstX8664.cpp - X86-64 instruction 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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 Fixup); | 208 Fixup); |
| 209 } else { | 209 } else { |
| 210 return X8664::Traits::Address(Disp, Fixup); | 210 return X8664::Traits::Address(Disp, Fixup); |
| 211 } | 211 } |
| 212 } | 212 } |
| 213 | 213 |
| 214 MachineTraits<TargetX8664>::Address | 214 MachineTraits<TargetX8664>::Address |
| 215 MachineTraits<TargetX8664>::VariableSplit::toAsmAddress(const Cfg *Func) const { | 215 MachineTraits<TargetX8664>::VariableSplit::toAsmAddress(const Cfg *Func) const { |
| 216 assert(!Var->hasReg()); | 216 assert(!Var->hasReg()); |
| 217 const ::Ice::TargetLowering *Target = Func->getTarget(); | 217 const ::Ice::TargetLowering *Target = Func->getTarget(); |
| 218 int32_t Offset = | 218 int32_t Offset = Var->getStackOffset() + getOffset(); |
| 219 Var->getStackOffset() + Target->getStackAdjustment() + getOffset(); | |
| 220 return X8664::Traits::Address(getEncodedGPR(Target->getFrameOrStackReg()), | 219 return X8664::Traits::Address(getEncodedGPR(Target->getFrameOrStackReg()), |
| 221 Offset, AssemblerFixup::NoFixup); | 220 Offset, AssemblerFixup::NoFixup); |
| 222 } | 221 } |
| 223 | 222 |
| 224 void MachineTraits<TargetX8664>::VariableSplit::emit(const Cfg *Func) const { | 223 void MachineTraits<TargetX8664>::VariableSplit::emit(const Cfg *Func) const { |
| 225 if (!BuildDefs::dump()) | 224 if (!BuildDefs::dump()) |
| 226 return; | 225 return; |
| 227 Ostream &Str = Func->getContext()->getStrEmit(); | 226 Ostream &Str = Func->getContext()->getStrEmit(); |
| 228 assert(!Var->hasReg()); | 227 assert(!Var->hasReg()); |
| 229 // The following is copied/adapted from TargetX8664::emitVariable(). | 228 // The following is copied/adapted from TargetX8664::emitVariable(). |
| 230 const ::Ice::TargetLowering *Target = Func->getTarget(); | 229 const ::Ice::TargetLowering *Target = Func->getTarget(); |
| 231 constexpr Type Ty = IceType_i32; | 230 constexpr Type Ty = IceType_i32; |
| 232 int32_t Offset = | 231 int32_t Offset = Var->getStackOffset() + getOffset(); |
| 233 Var->getStackOffset() + Target->getStackAdjustment() + getOffset(); | |
| 234 if (Offset) | 232 if (Offset) |
| 235 Str << Offset; | 233 Str << Offset; |
| 236 Str << "(%" << Target->getRegName(Target->getFrameOrStackReg(), Ty) << ")"; | 234 Str << "(%" << Target->getRegName(Target->getFrameOrStackReg(), Ty) << ")"; |
| 237 } | 235 } |
| 238 | 236 |
| 239 void MachineTraits<TargetX8664>::VariableSplit::dump(const Cfg *Func, | 237 void MachineTraits<TargetX8664>::VariableSplit::dump(const Cfg *Func, |
| 240 Ostream &Str) const { | 238 Ostream &Str) const { |
| 241 if (!BuildDefs::dump()) | 239 if (!BuildDefs::dump()) |
| 242 return; | 240 return; |
| 243 switch (Part) { | 241 switch (Part) { |
| 244 case Low: | 242 case Low: |
| 245 Str << "low"; | 243 Str << "low"; |
| 246 break; | 244 break; |
| 247 case High: | 245 case High: |
| 248 Str << "high"; | 246 Str << "high"; |
| 249 break; | 247 break; |
| 250 } | 248 } |
| 251 Str << "("; | 249 Str << "("; |
| 252 if (Func) | 250 if (Func) |
| 253 Var->dump(Func); | 251 Var->dump(Func); |
| 254 else | 252 else |
| 255 Var->dump(Str); | 253 Var->dump(Str); |
| 256 Str << ")"; | 254 Str << ")"; |
| 257 } | 255 } |
| 258 | 256 |
| 259 } // namespace X86Internal | 257 } // namespace X86Internal |
| 260 } // end of namespace Ice | 258 } // end of namespace Ice |
| 261 | 259 |
| 262 X86INSTS_DEFINE_STATIC_DATA(TargetX8664) | 260 X86INSTS_DEFINE_STATIC_DATA(TargetX8664) |
| OLD | NEW |