mirror of
https://github.com/RPCS3/glslang.git
synced 2025-02-26 05:47:29 +00:00
Move continue-block to after all branches.
This commit is contained in:
parent
e7f6cac1bd
commit
f3c63cc359
@ -67,8 +67,9 @@ class ReadableOrderTraverser {
|
||||
public:
|
||||
explicit ReadableOrderTraverser(std::function<void(Block*)> callback) : callback_(callback) {}
|
||||
// Visits the block if it hasn't been visited already and isn't currently
|
||||
// being delayed. Invokes callback(block), then descends into its successors.
|
||||
// Delays merge-block processing until all the branches have been completed.
|
||||
// being delayed. Invokes callback(block), then descends into its
|
||||
// successors. Delays merge-block and continue-block processing until all
|
||||
// the branches have been completed.
|
||||
void visit(Block* block)
|
||||
{
|
||||
assert(block);
|
||||
@ -77,14 +78,25 @@ public:
|
||||
callback_(block);
|
||||
visited_[block] = true;
|
||||
Block* mergeBlock = nullptr;
|
||||
Block* continueBlock = nullptr;
|
||||
auto mergeInst = block->getMergeInstruction();
|
||||
if (mergeInst) {
|
||||
Id mergeId = mergeInst->getIdOperand(0);
|
||||
mergeBlock = block->getParent().getParent().getInstruction(mergeId)->getBlock();
|
||||
delayed_[mergeBlock] = true;
|
||||
if (mergeInst->getOpCode() == spv::OpLoopMerge) {
|
||||
Id continueId = mergeInst->getIdOperand(1);
|
||||
continueBlock =
|
||||
block->getParent().getParent().getInstruction(continueId)->getBlock();
|
||||
delayed_[continueBlock] = true;
|
||||
}
|
||||
}
|
||||
for (const auto succ : block->getSuccessors())
|
||||
visit(succ);
|
||||
if (continueBlock) {
|
||||
delayed_[continueBlock] = false;
|
||||
visit(continueBlock);
|
||||
}
|
||||
if (mergeBlock) {
|
||||
delayed_[mergeBlock] = false;
|
||||
visit(mergeBlock);
|
||||
|
@ -66,12 +66,6 @@ Linked vertex stage:
|
||||
19: Label
|
||||
Store 21(B) 22
|
||||
Branch 13
|
||||
13: Label
|
||||
37: 6(int) Load 8(i)
|
||||
38: 6(int) IAdd 37 22
|
||||
Store 8(i) 38
|
||||
40: 17(bool) SLessThan 38 39
|
||||
BranchConditional 40 10 12
|
||||
20: Label
|
||||
25: 6(int) Load 8(i)
|
||||
27: 17(bool) IEqual 25 26
|
||||
@ -83,6 +77,12 @@ Linked vertex stage:
|
||||
29: Label
|
||||
Store 35(F) 36
|
||||
Branch 13
|
||||
13: Label
|
||||
37: 6(int) Load 8(i)
|
||||
38: 6(int) IAdd 37 22
|
||||
Store 8(i) 38
|
||||
40: 17(bool) SLessThan 38 39
|
||||
BranchConditional 40 10 12
|
||||
12: Label
|
||||
Store 41(G) 42
|
||||
Return
|
||||
|
@ -67,11 +67,6 @@ Linked vertex stage:
|
||||
24: Label
|
||||
Store 26(B) 19
|
||||
Branch 13
|
||||
13: Label
|
||||
40: 6(int) Load 8(i)
|
||||
41: 6(int) IAdd 40 19
|
||||
Store 8(i) 41
|
||||
Branch 10
|
||||
25: Label
|
||||
29: 6(int) Load 8(i)
|
||||
31: 6(int) SMod 29 30
|
||||
@ -84,6 +79,11 @@ Linked vertex stage:
|
||||
34: Label
|
||||
Store 38(F) 39
|
||||
Branch 13
|
||||
13: Label
|
||||
40: 6(int) Load 8(i)
|
||||
41: 6(int) IAdd 40 19
|
||||
Store 8(i) 41
|
||||
Branch 10
|
||||
12: Label
|
||||
Store 42(G) 43
|
||||
Return
|
||||
|
@ -197,6 +197,8 @@ Linked fragment stage:
|
||||
43: 7(fvec4) FAdd 42 28
|
||||
Store 9(color) 43
|
||||
Branch 15
|
||||
16: Label
|
||||
Branch 13
|
||||
15: Label
|
||||
Branch 45
|
||||
45: Label
|
||||
@ -236,14 +238,14 @@ Linked fragment stage:
|
||||
BranchConditional 77 78 79
|
||||
78: Label
|
||||
Branch 63
|
||||
63: Label
|
||||
Branch 60
|
||||
79: Label
|
||||
81: 7(fvec4) Load 69(bigColor1_1)
|
||||
82: 7(fvec4) Load 9(color)
|
||||
83: 7(fvec4) FAdd 82 81
|
||||
Store 9(color) 83
|
||||
Branch 63
|
||||
63: Label
|
||||
Branch 60
|
||||
62: Label
|
||||
Branch 84
|
||||
84: Label
|
||||
@ -482,17 +484,17 @@ Linked fragment stage:
|
||||
BranchConditional 260 261 262
|
||||
261: Label
|
||||
Branch 249
|
||||
249: Label
|
||||
267: 141(int) Load 245(i)
|
||||
268: 141(int) IAdd 267 159
|
||||
Store 245(i) 268
|
||||
Branch 246
|
||||
262: Label
|
||||
264: 21(ptr) AccessChain 9(color) 73
|
||||
265: 6(float) Load 264
|
||||
266: 6(float) FAdd 265 93
|
||||
Store 264 266
|
||||
Branch 249
|
||||
249: Label
|
||||
267: 141(int) Load 245(i)
|
||||
268: 141(int) IAdd 267 159
|
||||
Store 245(i) 268
|
||||
Branch 246
|
||||
248: Label
|
||||
Store 269(i) 144
|
||||
Branch 270
|
||||
@ -545,12 +547,6 @@ Linked fragment stage:
|
||||
BranchConditional 304 305 306
|
||||
305: Label
|
||||
Branch 296
|
||||
296: Label
|
||||
325: 21(ptr) AccessChain 9(color) 64
|
||||
326: 6(float) Load 325
|
||||
327: 6(float) Load 132(d4)
|
||||
328: 17(bool) FOrdLessThan 326 327
|
||||
BranchConditional 328 293 295
|
||||
306: Label
|
||||
308: 21(ptr) AccessChain 9(color) 107
|
||||
309: 6(float) Load 308
|
||||
@ -576,6 +572,12 @@ Linked fragment stage:
|
||||
Branch 313
|
||||
313: Label
|
||||
Branch 296
|
||||
296: Label
|
||||
325: 21(ptr) AccessChain 9(color) 64
|
||||
326: 6(float) Load 325
|
||||
327: 6(float) Load 132(d4)
|
||||
328: 17(bool) FOrdLessThan 326 327
|
||||
BranchConditional 328 293 295
|
||||
295: Label
|
||||
Branch 329
|
||||
329: Label
|
||||
@ -891,14 +893,14 @@ Linked fragment stage:
|
||||
Branch 549
|
||||
549: Label
|
||||
Branch 524
|
||||
524: Label
|
||||
Branch 521
|
||||
539: Label
|
||||
558: 7(fvec4) Load 9(color)
|
||||
559: 7(fvec4) CompositeConstruct 93 93 93 93
|
||||
560: 7(fvec4) FAdd 558 559
|
||||
Store 9(color) 560
|
||||
Branch 523
|
||||
524: Label
|
||||
Branch 521
|
||||
523: Label
|
||||
Branch 562
|
||||
562: Label
|
||||
@ -927,8 +929,6 @@ Linked fragment stage:
|
||||
BranchConditional 583 584 585
|
||||
584: Label
|
||||
Branch 565
|
||||
565: Label
|
||||
Branch 562
|
||||
585: Label
|
||||
Branch 579
|
||||
579: Label
|
||||
@ -940,6 +940,8 @@ Linked fragment stage:
|
||||
592: 21(ptr) AccessChain 9(color) 107
|
||||
Store 592 591
|
||||
Branch 565
|
||||
565: Label
|
||||
Branch 562
|
||||
564: Label
|
||||
593: 7(fvec4) Load 9(color)
|
||||
594: 7(fvec4) CompositeConstruct 93 93 93 93
|
||||
|
@ -171,12 +171,6 @@ Linked fragment stage:
|
||||
49: 6(float) FAdd 47 48
|
||||
Store 46 49
|
||||
Branch 16
|
||||
16: Label
|
||||
69: 24(ptr) AccessChain 9(color) 35
|
||||
70: 6(float) Load 69
|
||||
71: 6(float) Load 28(d4)
|
||||
72: 30(bool) FOrdLessThan 70 71
|
||||
BranchConditional 72 13 15
|
||||
45: Label
|
||||
Branch 33
|
||||
33: Label
|
||||
@ -204,6 +198,12 @@ Linked fragment stage:
|
||||
Branch 57
|
||||
57: Label
|
||||
Branch 16
|
||||
16: Label
|
||||
69: 24(ptr) AccessChain 9(color) 35
|
||||
70: 6(float) Load 69
|
||||
71: 6(float) Load 28(d4)
|
||||
72: 30(bool) FOrdLessThan 70 71
|
||||
BranchConditional 72 13 15
|
||||
15: Label
|
||||
Branch 73
|
||||
73: Label
|
||||
@ -261,8 +261,6 @@ Linked fragment stage:
|
||||
117: 6(float) FAdd 116 48
|
||||
Store 115 117
|
||||
Branch 76
|
||||
76: Label
|
||||
Branch 73
|
||||
114: Label
|
||||
Branch 104
|
||||
104: Label
|
||||
@ -290,6 +288,8 @@ Linked fragment stage:
|
||||
Branch 124
|
||||
124: Label
|
||||
Branch 76
|
||||
76: Label
|
||||
Branch 73
|
||||
75: Label
|
||||
136: 7(fvec4) Load 9(color)
|
||||
137: 7(fvec4) CompositeConstruct 48 48 48 48
|
||||
|
@ -60,8 +60,6 @@ Linked vertex stage:
|
||||
24: Label
|
||||
Store 26(B) 21
|
||||
Branch 13
|
||||
13: Label
|
||||
Branch 10
|
||||
25: Label
|
||||
29: 6(int) Load 8(i)
|
||||
31: 6(int) SMod 29 30
|
||||
@ -76,6 +74,8 @@ Linked vertex stage:
|
||||
37: 6(int) IAdd 36 19
|
||||
Store 8(i) 37
|
||||
Branch 13
|
||||
13: Label
|
||||
Branch 10
|
||||
12: Label
|
||||
Store 38(D) 39
|
||||
Return
|
||||
|
Loading…
x
Reference in New Issue
Block a user