Run conditional-assignment loop forwards.
This makes for a slightly more easier-to-read disassembly; register
numbering no longer goes in reverse for vector assignment. Of course, it
makes no difference in the actual execution.
Change-Id: I86c5024bae1f73b1cd98252e4831207e47dc11eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/452323
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/src/sksl/codegen/SkSLVMCodeGenerator.cpp b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
index 2548188..41d923a 100644
--- a/src/sksl/codegen/SkSLVMCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
@@ -1465,7 +1465,7 @@
// `slots` are now absolute indices into `fSlots`.
skvm::I32 mask = this->mask();
- for (size_t i = rhs.slots(); i --> 0;) {
+ for (size_t i = 0; i < rhs.slots(); ++i) {
skvm::Val& slotVal = fSlots[slots[i]];
slotVal = this->writeConditionalStore(slotVal, rhs[i], mask);
}
diff --git a/tests/sksl/runtime/Switch.skvm b/tests/sksl/runtime/Switch.skvm
index fcf5ff5..0c0bf5a 100644
--- a/tests/sksl/runtime/Switch.skvm
+++ b/tests/sksl/runtime/Switch.skvm
@@ -11,28 +11,28 @@
9 r9 = splat FFFFFFFF (nan)
10 r10 = trunc r1
11 r8 = eq_i32 r8 r10
-12 r11 = bit_and r7 r8
-13 r12 = bit_and r6 r8
-14 r13 = bit_and r5 r8
-15 r14 = bit_and r4 r8
+12 r11 = bit_and r4 r8
+13 r12 = bit_and r5 r8
+14 r13 = bit_and r6 r8
+15 r14 = bit_and r7 r8
16 r15 = bit_xor r9 r8
17 r8 = bit_and r8 r15
18 r16 = splat 1 (1.4012985e-45)
19 r10 = eq_i32 r16 r10
20 r10 = bit_or r8 r10
21 r10 = bit_and r10 r15
-22 r11 = select r10 r3 r11
-23 r12 = select r10 r2 r12
-24 r13 = select r10 r1 r13
-25 r14 = select r10 r0 r14
+22 r11 = select r10 r0 r11
+23 r12 = select r10 r1 r12
+24 r13 = select r10 r2 r13
+25 r14 = select r10 r3 r14
26 r10 = bit_xor r9 r10
27 r10 = bit_and r15 r10
-28 r11 = select r10 r7 r11
-29 r12 = select r10 r6 r12
-30 r13 = select r10 r5 r13
-31 r14 = select r10 r4 r14
+28 r11 = select r10 r4 r11
+29 r12 = select r10 r5 r12
+30 r13 = select r10 r6 r13
+31 r14 = select r10 r7 r14
loop:
-32 store32 ptr1 r14
-33 store32 ptr2 r13
-34 store32 ptr3 r12
-35 store32 ptr4 r11
+32 store32 ptr1 r11
+33 store32 ptr2 r12
+34 store32 ptr3 r13
+35 store32 ptr4 r14