xref: /aosp_15_r20/external/skia/resources/sksl/folding/SelfAssignment.rts (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorRed, colorGreen;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerstruct S {
4*c8dee2aaSAndroid Build Coastguard Worker    half i;
5*c8dee2aaSAndroid Build Coastguard Worker    half j;
6*c8dee2aaSAndroid Build Coastguard Worker};
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
9*c8dee2aaSAndroid Build Coastguard Worker    // All of these assignments can be preserved.
10*c8dee2aaSAndroid Build Coastguard Worker    half4 x = half4(3, 2, 1, 0);
11*c8dee2aaSAndroid Build Coastguard Worker    x.xyz = x.zyx;
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Worker    S s;
14*c8dee2aaSAndroid Build Coastguard Worker    s.i = 2;
15*c8dee2aaSAndroid Build Coastguard Worker    s.j = 2;
16*c8dee2aaSAndroid Build Coastguard Worker    s.i = s.j;
17*c8dee2aaSAndroid Build Coastguard Worker    s.j = s.i;
18*c8dee2aaSAndroid Build Coastguard Worker
19*c8dee2aaSAndroid Build Coastguard Worker    half a[2];
20*c8dee2aaSAndroid Build Coastguard Worker    a[0] = 1;
21*c8dee2aaSAndroid Build Coastguard Worker    a[1] = 0;
22*c8dee2aaSAndroid Build Coastguard Worker    a[1] = a[0];
23*c8dee2aaSAndroid Build Coastguard Worker
24*c8dee2aaSAndroid Build Coastguard Worker    // All of these assignments should be eliminated.
25*c8dee2aaSAndroid Build Coastguard Worker    x.wy = x.wy;
26*c8dee2aaSAndroid Build Coastguard Worker    x.xyz = x.xyz;
27*c8dee2aaSAndroid Build Coastguard Worker    x = x;
28*c8dee2aaSAndroid Build Coastguard Worker    s.i = s.i;
29*c8dee2aaSAndroid Build Coastguard Worker    s.j = s.j;
30*c8dee2aaSAndroid Build Coastguard Worker    a[0] = a[0];
31*c8dee2aaSAndroid Build Coastguard Worker    a[1] = a[1];
32*c8dee2aaSAndroid Build Coastguard Worker
33*c8dee2aaSAndroid Build Coastguard Worker    return half4(x.w, s.i / s.j, a[0] - a[1], a[0] * a[1]);
34*c8dee2aaSAndroid Build Coastguard Worker}
35