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

Side by Side Diff: src/IceTargetLowering.h

Issue 1455033005: Subzero. Adds a pass for target-specific helper call generation. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 1 month 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/IceInst.h ('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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 virtual void translateO0() { 163 virtual void translateO0() {
164 Func->setError("Target doesn't specify O0 lowering steps."); 164 Func->setError("Target doesn't specify O0 lowering steps.");
165 } 165 }
166 virtual void translateO1() { 166 virtual void translateO1() {
167 Func->setError("Target doesn't specify O1 lowering steps."); 167 Func->setError("Target doesn't specify O1 lowering steps.");
168 } 168 }
169 virtual void translateO2() { 169 virtual void translateO2() {
170 Func->setError("Target doesn't specify O2 lowering steps."); 170 Func->setError("Target doesn't specify O2 lowering steps.");
171 } 171 }
172 172
173 /// Generates calls to intrinsics for operations the Target can't handle.
174 void genTargetHelperCalls();
173 /// Tries to do address mode optimization on a single instruction. 175 /// Tries to do address mode optimization on a single instruction.
174 void doAddressOpt(); 176 void doAddressOpt();
175 /// Randomly insert NOPs. 177 /// Randomly insert NOPs.
176 void doNopInsertion(RandomNumberGenerator &RNG); 178 void doNopInsertion(RandomNumberGenerator &RNG);
177 /// Lowers a single non-Phi instruction. 179 /// Lowers a single non-Phi instruction.
178 void lower(); 180 void lower();
179 /// Inserts and lowers a single high-level instruction at a specific insertion 181 /// Inserts and lowers a single high-level instruction at a specific insertion
180 /// point. 182 /// point.
181 void lowerInst(CfgNode *Node, InstList::iterator Next, InstHighLevel *Instr); 183 void lowerInst(CfgNode *Node, InstList::iterator Next, InstHighLevel *Instr);
182 /// Does preliminary lowering of the set of Phi instructions in the current 184 /// Does preliminary lowering of the set of Phi instructions in the current
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 virtual void lowerIntrinsicCall(const InstIntrinsicCall *Inst) = 0; 303 virtual void lowerIntrinsicCall(const InstIntrinsicCall *Inst) = 0;
302 virtual void lowerLoad(const InstLoad *Inst) = 0; 304 virtual void lowerLoad(const InstLoad *Inst) = 0;
303 virtual void lowerPhi(const InstPhi *Inst) = 0; 305 virtual void lowerPhi(const InstPhi *Inst) = 0;
304 virtual void lowerRet(const InstRet *Inst) = 0; 306 virtual void lowerRet(const InstRet *Inst) = 0;
305 virtual void lowerSelect(const InstSelect *Inst) = 0; 307 virtual void lowerSelect(const InstSelect *Inst) = 0;
306 virtual void lowerStore(const InstStore *Inst) = 0; 308 virtual void lowerStore(const InstStore *Inst) = 0;
307 virtual void lowerSwitch(const InstSwitch *Inst) = 0; 309 virtual void lowerSwitch(const InstSwitch *Inst) = 0;
308 virtual void lowerUnreachable(const InstUnreachable *Inst) = 0; 310 virtual void lowerUnreachable(const InstUnreachable *Inst) = 0;
309 virtual void lowerOther(const Inst *Instr); 311 virtual void lowerOther(const Inst *Instr);
310 312
313 virtual void genTargetHelperCallFor(Inst *Instr) = 0;
314
311 virtual void doAddressOptLoad() {} 315 virtual void doAddressOptLoad() {}
312 virtual void doAddressOptStore() {} 316 virtual void doAddressOptStore() {}
313 virtual void doMockBoundsCheck(Operand *) {} 317 virtual void doMockBoundsCheck(Operand *) {}
314 virtual void randomlyInsertNop(float Probability, 318 virtual void randomlyInsertNop(float Probability,
315 RandomNumberGenerator &RNG) = 0; 319 RandomNumberGenerator &RNG) = 0;
316 /// This gives the target an opportunity to post-process the lowered expansion 320 /// This gives the target an opportunity to post-process the lowered expansion
317 /// before returning. 321 /// before returning.
318 virtual void postLower() {} 322 virtual void postLower() {}
319 323
320 /// Find (non-SSA) instructions where the Dest variable appears in some source 324 /// Find (non-SSA) instructions where the Dest variable appears in some source
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 virtual void lower() {} 487 virtual void lower() {}
484 488
485 protected: 489 protected:
486 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {} 490 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {}
487 GlobalContext *Ctx; 491 GlobalContext *Ctx;
488 }; 492 };
489 493
490 } // end of namespace Ice 494 } // end of namespace Ice
491 495
492 #endif // SUBZERO_SRC_ICETARGETLOWERING_H 496 #endif // SUBZERO_SRC_ICETARGETLOWERING_H
OLDNEW
« no previous file with comments | « src/IceInst.h ('k') | src/IceTargetLowering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698