xref: /aosp_15_r20/external/skia/resources/sksl/errors/InvalidAtomicOperations.compute (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerworkgroup atomicUint wgCounterA;
2*c8dee2aaSAndroid Build Coastguard Workerworkgroup atomicUint wgCounterB;
3*c8dee2aaSAndroid Build Coastguard Worker
4*c8dee2aaSAndroid Build Coastguard Workerstruct S {
5*c8dee2aaSAndroid Build Coastguard Worker    atomicUint memberAtomic;
6*c8dee2aaSAndroid Build Coastguard Worker};
7*c8dee2aaSAndroid Build Coastguard Workerworkgroup S wgStructWithAtomicMember;
8*c8dee2aaSAndroid Build Coastguard Workerworkgroup atomicUint wgAtomicArray[2];
9*c8dee2aaSAndroid Build Coastguard Workerworkgroup atomicUint wgAtomicArray2[2];
10*c8dee2aaSAndroid Build Coastguard Workerworkgroup S wgStructWithAtomicMemberArray[2];
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerstruct NestedS {
13*c8dee2aaSAndroid Build Coastguard Worker    S nestedStructWithAtomicMember;
14*c8dee2aaSAndroid Build Coastguard Worker};
15*c8dee2aaSAndroid Build Coastguard Workerworkgroup NestedS wgNestedStructWithAtomicMember;
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Workervoid main() {
18*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = 1;
19*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = atomicUint(1);
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard Worker    +wgCounterA;
22*c8dee2aaSAndroid Build Coastguard Worker    -wgCounterA;
23*c8dee2aaSAndroid Build Coastguard Worker    !wgCounterA;
24*c8dee2aaSAndroid Build Coastguard Worker    ~wgCounterA;
25*c8dee2aaSAndroid Build Coastguard Worker
26*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA++;
27*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA--;
28*c8dee2aaSAndroid Build Coastguard Worker    ++wgCounterA;
29*c8dee2aaSAndroid Build Coastguard Worker    --wgCounterA;
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = -wgCounterA;
32*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = +wgCounterA;
33*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterB;
34*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA += wgCounterB;
35*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA -= wgCounterB;
36*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA *= wgCounterB;
37*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA /= wgCounterB;
38*c8dee2aaSAndroid Build Coastguard Worker
39*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA + 1;
40*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA - 1;
41*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA * 1;
42*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA / 1;
43*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA + wgCounterB;
44*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA - wgCounterB;
45*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA * wgCounterB;
46*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA = wgCounterA / wgCounterB;
47*c8dee2aaSAndroid Build Coastguard Worker
48*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA == wgCounterB;
49*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA != wgCounterB;
50*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA < wgCounterB;
51*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA <= wgCounterB;
52*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA > wgCounterB;
53*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA >= wgCounterB;
54*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA && wgCounterB;
55*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA || wgCounterB;
56*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA & wgCounterB;
57*c8dee2aaSAndroid Build Coastguard Worker    wgCounterA | wgCounterB;
58*c8dee2aaSAndroid Build Coastguard Worker
59*c8dee2aaSAndroid Build Coastguard Worker    uint a = wgCounterA;
60*c8dee2aaSAndroid Build Coastguard Worker    wgStructWithAtomicMember = S(1);
61*c8dee2aaSAndroid Build Coastguard Worker    wgStructWithAtomicMember = S(atomicUint(1));
62*c8dee2aaSAndroid Build Coastguard Worker    wgStructWithAtomicMember = S(wgCounterA);
63*c8dee2aaSAndroid Build Coastguard Worker
64*c8dee2aaSAndroid Build Coastguard Worker    wgAtomicArray[0] = wgCounterA;
65*c8dee2aaSAndroid Build Coastguard Worker    wgAtomicArray[1] = wgCounterB;
66*c8dee2aaSAndroid Build Coastguard Worker    wgAtomicArray = wgAtomicArray2;
67*c8dee2aaSAndroid Build Coastguard Worker    wgAtomicArray = atomicUint[2](wgCounterA, wgCounterB);
68*c8dee2aaSAndroid Build Coastguard Worker
69*c8dee2aaSAndroid Build Coastguard Worker    wgStructWithAtomicMemberArray[0] = wgStructWithAtomicMember;
70*c8dee2aaSAndroid Build Coastguard Worker    wgStructWithAtomicMemberArray = S[2](wgStructWithAtomicMember,
71*c8dee2aaSAndroid Build Coastguard Worker                                         wgStructWithAtomicMember);
72*c8dee2aaSAndroid Build Coastguard Worker    wgNestedStructWithAtomicMember = NestedS(wgStructWithAtomicMember);
73*c8dee2aaSAndroid Build Coastguard Worker}
74*c8dee2aaSAndroid Build Coastguard Worker
75*c8dee2aaSAndroid Build Coastguard Worker/*%%*
76*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '=' cannot operate on 'atomicUint', 'int'
77*c8dee2aaSAndroid Build Coastguard Workercannot construct 'atomicUint'
78*c8dee2aaSAndroid Build Coastguard Worker'+' cannot operate on 'atomicUint'
79*c8dee2aaSAndroid Build Coastguard Worker'-' cannot operate on 'atomicUint'
80*c8dee2aaSAndroid Build Coastguard Worker'!' cannot operate on 'atomicUint'
81*c8dee2aaSAndroid Build Coastguard Worker'~' cannot operate on 'atomicUint'
82*c8dee2aaSAndroid Build Coastguard Worker'++' cannot operate on 'atomicUint'
83*c8dee2aaSAndroid Build Coastguard Worker'--' cannot operate on 'atomicUint'
84*c8dee2aaSAndroid Build Coastguard Worker'++' cannot operate on 'atomicUint'
85*c8dee2aaSAndroid Build Coastguard Worker'--' cannot operate on 'atomicUint'
86*c8dee2aaSAndroid Build Coastguard Worker'-' cannot operate on 'atomicUint'
87*c8dee2aaSAndroid Build Coastguard Worker'+' cannot operate on 'atomicUint'
88*c8dee2aaSAndroid Build Coastguard Workerassignments to opaque type 'atomicUint' are not permitted
89*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '+=' cannot operate on 'atomicUint', 'atomicUint'
90*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '-=' cannot operate on 'atomicUint', 'atomicUint'
91*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '*=' cannot operate on 'atomicUint', 'atomicUint'
92*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '/=' cannot operate on 'atomicUint', 'atomicUint'
93*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '+' cannot operate on 'atomicUint', 'int'
94*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '-' cannot operate on 'atomicUint', 'int'
95*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '*' cannot operate on 'atomicUint', 'int'
96*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '/' cannot operate on 'atomicUint', 'int'
97*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '+' cannot operate on 'atomicUint', 'atomicUint'
98*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '-' cannot operate on 'atomicUint', 'atomicUint'
99*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '*' cannot operate on 'atomicUint', 'atomicUint'
100*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '/' cannot operate on 'atomicUint', 'atomicUint'
101*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '==' cannot operate on 'atomicUint', 'atomicUint'
102*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '!=' cannot operate on 'atomicUint', 'atomicUint'
103*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '<' cannot operate on 'atomicUint', 'atomicUint'
104*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '<=' cannot operate on 'atomicUint', 'atomicUint'
105*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '>' cannot operate on 'atomicUint', 'atomicUint'
106*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '>=' cannot operate on 'atomicUint', 'atomicUint'
107*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '&&' cannot operate on 'atomicUint', 'atomicUint'
108*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '||' cannot operate on 'atomicUint', 'atomicUint'
109*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '&' cannot operate on 'atomicUint', 'atomicUint'
110*c8dee2aaSAndroid Build Coastguard Workertype mismatch: '|' cannot operate on 'atomicUint', 'atomicUint'
111*c8dee2aaSAndroid Build Coastguard Workerexpected 'uint', but found 'atomicUint'
112*c8dee2aaSAndroid Build Coastguard Workerconstruction of struct type 'S' with atomic member is not allowed
113*c8dee2aaSAndroid Build Coastguard Workercannot construct 'atomicUint'
114*c8dee2aaSAndroid Build Coastguard Workerconstruction of struct type 'S' with atomic member is not allowed
115*c8dee2aaSAndroid Build Coastguard Workerconstruction of struct type 'S' with atomic member is not allowed
116*c8dee2aaSAndroid Build Coastguard Workerassignments to opaque type 'atomicUint' are not permitted
117*c8dee2aaSAndroid Build Coastguard Workerassignments to opaque type 'atomicUint' are not permitted
118*c8dee2aaSAndroid Build Coastguard Workerassignments to opaque type 'atomicUint[2]' are not permitted
119*c8dee2aaSAndroid Build Coastguard Workerconstruction of array type 'atomicUint[2]' with atomic member is not allowed
120*c8dee2aaSAndroid Build Coastguard Workerassignments to opaque type 'S' are not permitted
121*c8dee2aaSAndroid Build Coastguard Workerconstruction of array type 'S[2]' with atomic member is not allowed
122*c8dee2aaSAndroid Build Coastguard Workerconstruction of struct type 'NestedS' with atomic member is not allowed
123*c8dee2aaSAndroid Build Coastguard Worker*%%*/
124