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

Side by Side Diff: src/sksl/SkSLSPIRVCodeGenerator.cpp

Issue 2405383003: added basic dataflow analysis to skslc (Closed)
Patch Set: I have no idea what I was thinking Created 4 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/sksl/SkSLSPIRVCodeGenerator.h ('k') | src/sksl/ir/SkSLExpression.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 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkSLSPIRVCodeGenerator.h" 8 #include "SkSLSPIRVCodeGenerator.h"
9 9
10 #include "string.h" 10 #include "string.h"
(...skipping 2511 matching lines...) Expand 10 before | Expand all | Expand 10 after
2522 SpvId body = this->nextId(); 2522 SpvId body = this->nextId();
2523 SpvId next = this->nextId(); 2523 SpvId next = this->nextId();
2524 fContinueTarget.push(next); 2524 fContinueTarget.push(next);
2525 SpvId end = this->nextId(); 2525 SpvId end = this->nextId();
2526 fBreakTarget.push(end); 2526 fBreakTarget.push(end);
2527 this->writeInstruction(SpvOpBranch, header, out); 2527 this->writeInstruction(SpvOpBranch, header, out);
2528 this->writeLabel(header, out); 2528 this->writeLabel(header, out);
2529 this->writeInstruction(SpvOpLoopMerge, end, next, SpvLoopControlMaskNone, ou t); 2529 this->writeInstruction(SpvOpLoopMerge, end, next, SpvLoopControlMaskNone, ou t);
2530 this->writeInstruction(SpvOpBranch, start, out); 2530 this->writeInstruction(SpvOpBranch, start, out);
2531 this->writeLabel(start, out); 2531 this->writeLabel(start, out);
2532 SpvId test = this->writeExpression(*f.fTest, out); 2532 if (f.fTest) {
2533 this->writeInstruction(SpvOpBranchConditional, test, body, end, out); 2533 SpvId test = this->writeExpression(*f.fTest, out);
2534 this->writeInstruction(SpvOpBranchConditional, test, body, end, out);
2535 }
2534 this->writeLabel(body, out); 2536 this->writeLabel(body, out);
2535 this->writeStatement(*f.fStatement, out); 2537 this->writeStatement(*f.fStatement, out);
2536 if (fCurrentBlock) { 2538 if (fCurrentBlock) {
2537 this->writeInstruction(SpvOpBranch, next, out); 2539 this->writeInstruction(SpvOpBranch, next, out);
2538 } 2540 }
2539 this->writeLabel(next, out); 2541 this->writeLabel(next, out);
2540 if (f.fNext) { 2542 if (f.fNext) {
2541 this->writeExpression(*f.fNext, out); 2543 this->writeExpression(*f.fNext, out);
2542 } 2544 }
2543 this->writeInstruction(SpvOpBranch, header, out); 2545 this->writeInstruction(SpvOpBranch, header, out);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2646 this->writeWord(SpvVersion, out); 2648 this->writeWord(SpvVersion, out);
2647 this->writeWord(SKSL_MAGIC, out); 2649 this->writeWord(SKSL_MAGIC, out);
2648 std::stringstream buffer; 2650 std::stringstream buffer;
2649 this->writeInstructions(program, buffer); 2651 this->writeInstructions(program, buffer);
2650 this->writeWord(fIdCount, out); 2652 this->writeWord(fIdCount, out);
2651 this->writeWord(0, out); // reserved, always zero 2653 this->writeWord(0, out); // reserved, always zero
2652 out << buffer.str(); 2654 out << buffer.str();
2653 } 2655 }
2654 2656
2655 } 2657 }
OLDNEW
« no previous file with comments | « src/sksl/SkSLSPIRVCodeGenerator.h ('k') | src/sksl/ir/SkSLExpression.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698