Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: src/IceInstX8664.cpp

Issue 1472623002: Unify alloca, outgoing arg, and prolog construction (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review fixes. Also removed StackAdjustment. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceInstX8632.cpp ('k') | src/IceInstX86Base.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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)
OLDNEW
« no previous file with comments | « src/IceInstX8632.cpp ('k') | src/IceInstX86Base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698