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

Side by Side Diff: src/IceTargetLowering.h

Issue 1368993004: Subzero: Improve usability of liveness-related tools. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes Created 5 years, 2 months 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/IceRegAlloc.cpp ('k') | src/IceTargetLowering.cpp » ('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/IceTargetLowering.h - Lowering interface -----*- C++ -*-===// 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- C++ -*-===//
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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 280
281 virtual void doAddressOptLoad() {} 281 virtual void doAddressOptLoad() {}
282 virtual void doAddressOptStore() {} 282 virtual void doAddressOptStore() {}
283 virtual void doMockBoundsCheck(Operand *) {} 283 virtual void doMockBoundsCheck(Operand *) {}
284 virtual void randomlyInsertNop(float Probability, 284 virtual void randomlyInsertNop(float Probability,
285 RandomNumberGenerator &RNG) = 0; 285 RandomNumberGenerator &RNG) = 0;
286 /// This gives the target an opportunity to post-process the lowered expansion 286 /// This gives the target an opportunity to post-process the lowered expansion
287 /// before returning. 287 /// before returning.
288 virtual void postLower() {} 288 virtual void postLower() {}
289 289
290 /// Find two-address non-SSA instructions and set the DestNonKillable flag to 290 /// Find (non-SSA) instructions where the Dest variable appears in some source
291 /// keep liveness analysis consistent. 291 /// operand, and set the IsDestRedefined flag. This keeps liveness analysis
292 void inferTwoAddress(); 292 /// consistent.
293 void markRedefinitions();
293 294
294 /// Make a pass over the Cfg to determine which variables need stack slots and 295 /// Make a pass over the Cfg to determine which variables need stack slots and
295 /// place them in a sorted list (SortedSpilledVariables). Among those, vars, 296 /// place them in a sorted list (SortedSpilledVariables). Among those, vars,
296 /// classify the spill variables as local to the basic block vs global 297 /// classify the spill variables as local to the basic block vs global
297 /// (multi-block) in order to compute the parameters GlobalsSize and 298 /// (multi-block) in order to compute the parameters GlobalsSize and
298 /// SpillAreaSizeBytes (represents locals or general vars if the coalescing of 299 /// SpillAreaSizeBytes (represents locals or general vars if the coalescing of
299 /// locals is disallowed) along with alignments required for variables in each 300 /// locals is disallowed) along with alignments required for variables in each
300 /// area. We rely on accurate VMetadata in order to classify a variable as 301 /// area. We rely on accurate VMetadata in order to classify a variable as
301 /// global vs local (otherwise the variable is conservatively global). The 302 /// global vs local (otherwise the variable is conservatively global). The
302 /// in-args should be initialized to 0. 303 /// in-args should be initialized to 0.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 342
342 /// Make a call to an external helper function. 343 /// Make a call to an external helper function.
343 InstCall *makeHelperCall(const IceString &Name, Variable *Dest, 344 InstCall *makeHelperCall(const IceString &Name, Variable *Dest,
344 SizeT MaxSrcs); 345 SizeT MaxSrcs);
345 346
346 void 347 void
347 _bundle_lock(InstBundleLock::Option BundleOption = InstBundleLock::Opt_None) { 348 _bundle_lock(InstBundleLock::Option BundleOption = InstBundleLock::Opt_None) {
348 Context.insert(InstBundleLock::create(Func, BundleOption)); 349 Context.insert(InstBundleLock::create(Func, BundleOption));
349 } 350 }
350 void _bundle_unlock() { Context.insert(InstBundleUnlock::create(Func)); } 351 void _bundle_unlock() { Context.insert(InstBundleUnlock::create(Func)); }
351 void _set_dest_nonkillable() { 352 void _set_dest_redefined() { Context.getLastInserted()->setDestRedefined(); }
352 Context.getLastInserted()->setDestNonKillable();
353 }
354 353
355 bool shouldOptimizeMemIntrins(); 354 bool shouldOptimizeMemIntrins();
356 355
357 Cfg *Func; 356 Cfg *Func;
358 GlobalContext *Ctx; 357 GlobalContext *Ctx;
359 bool HasComputedFrame = false; 358 bool HasComputedFrame = false;
360 bool CallsReturnsTwice = false; 359 bool CallsReturnsTwice = false;
361 /// StackAdjustment keeps track of the current stack offset from its natural 360 /// StackAdjustment keeps track of the current stack offset from its natural
362 /// location, e.g. as arguments are pushed for a function call or as 361 /// location, e.g. as arguments are pushed for a function call or as
363 /// fixed-size alloca instructions are executed in the entry block. 362 /// fixed-size alloca instructions are executed in the entry block.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 virtual void lower() {} 453 virtual void lower() {}
455 454
456 protected: 455 protected:
457 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {} 456 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {}
458 GlobalContext *Ctx; 457 GlobalContext *Ctx;
459 }; 458 };
460 459
461 } // end of namespace Ice 460 } // end of namespace Ice
462 461
463 #endif // SUBZERO_SRC_ICETARGETLOWERING_H 462 #endif // SUBZERO_SRC_ICETARGETLOWERING_H
OLDNEW
« no previous file with comments | « src/IceRegAlloc.cpp ('k') | src/IceTargetLowering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698