| workgroup atomicUint wgCounterA; |
| workgroup atomicUint wgCounterB; |
| |
| struct S { |
| atomicUint memberAtomic; |
| }; |
| workgroup S wgStructWithAtomicMember; |
| workgroup atomicUint wgAtomicArray[2]; |
| workgroup atomicUint wgAtomicArray2[2]; |
| workgroup S wgStructWithAtomicMemberArray[2]; |
| |
| struct NestedS { |
| S nestedStructWithAtomicMember; |
| }; |
| workgroup NestedS wgNestedStructWithAtomicMember; |
| |
| void main() { |
| wgCounterA = 1; |
| wgCounterA = atomicUint(1); |
| |
| +wgCounterA; |
| -wgCounterA; |
| !wgCounterA; |
| ~wgCounterA; |
| |
| wgCounterA++; |
| wgCounterA--; |
| ++wgCounterA; |
| --wgCounterA; |
| |
| wgCounterA = -wgCounterA; |
| wgCounterA = +wgCounterA; |
| wgCounterA = wgCounterB; |
| wgCounterA += wgCounterB; |
| wgCounterA -= wgCounterB; |
| wgCounterA *= wgCounterB; |
| wgCounterA /= wgCounterB; |
| |
| wgCounterA = wgCounterA + 1; |
| wgCounterA = wgCounterA - 1; |
| wgCounterA = wgCounterA * 1; |
| wgCounterA = wgCounterA / 1; |
| wgCounterA = wgCounterA + wgCounterB; |
| wgCounterA = wgCounterA - wgCounterB; |
| wgCounterA = wgCounterA * wgCounterB; |
| wgCounterA = wgCounterA / wgCounterB; |
| |
| wgCounterA == wgCounterB; |
| wgCounterA != wgCounterB; |
| wgCounterA < wgCounterB; |
| wgCounterA <= wgCounterB; |
| wgCounterA > wgCounterB; |
| wgCounterA >= wgCounterB; |
| wgCounterA && wgCounterB; |
| wgCounterA || wgCounterB; |
| wgCounterA & wgCounterB; |
| wgCounterA | wgCounterB; |
| |
| uint a = wgCounterA; |
| wgStructWithAtomicMember = S(1); |
| wgStructWithAtomicMember = S(atomicUint(1)); |
| wgStructWithAtomicMember = S(wgCounterA); |
| |
| wgAtomicArray[0] = wgCounterA; |
| wgAtomicArray[1] = wgCounterB; |
| wgAtomicArray = wgAtomicArray2; |
| wgAtomicArray = atomicUint[2](wgCounterA, wgCounterB); |
| |
| wgStructWithAtomicMemberArray[0] = wgStructWithAtomicMember; |
| wgStructWithAtomicMemberArray = S[2](wgStructWithAtomicMember, |
| wgStructWithAtomicMember); |
| wgNestedStructWithAtomicMember = NestedS(wgStructWithAtomicMember); |
| } |
| |
| /*%%* |
| type mismatch: '=' cannot operate on 'atomicUint', 'int' |
| cannot construct 'atomicUint' |
| '+' cannot operate on 'atomicUint' |
| '-' cannot operate on 'atomicUint' |
| '!' cannot operate on 'atomicUint' |
| '~' cannot operate on 'atomicUint' |
| '++' cannot operate on 'atomicUint' |
| '--' cannot operate on 'atomicUint' |
| '++' cannot operate on 'atomicUint' |
| '--' cannot operate on 'atomicUint' |
| '-' cannot operate on 'atomicUint' |
| '+' cannot operate on 'atomicUint' |
| assignments to opaque type 'atomicUint' are not permitted |
| type mismatch: '+=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '-=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '*=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '/=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '+' cannot operate on 'atomicUint', 'int' |
| type mismatch: '-' cannot operate on 'atomicUint', 'int' |
| type mismatch: '*' cannot operate on 'atomicUint', 'int' |
| type mismatch: '/' cannot operate on 'atomicUint', 'int' |
| type mismatch: '+' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '-' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '*' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '/' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '==' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '!=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '<' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '<=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '>' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '>=' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '&&' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '||' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '&' cannot operate on 'atomicUint', 'atomicUint' |
| type mismatch: '|' cannot operate on 'atomicUint', 'atomicUint' |
| expected 'uint', but found 'atomicUint' |
| construction of struct type 'S' with atomic member is not allowed |
| cannot construct 'atomicUint' |
| construction of struct type 'S' with atomic member is not allowed |
| construction of struct type 'S' with atomic member is not allowed |
| assignments to opaque type 'atomicUint' are not permitted |
| assignments to opaque type 'atomicUint' are not permitted |
| assignments to opaque type 'atomicUint[2]' are not permitted |
| construction of array type 'atomicUint[2]' with atomic member is not allowed |
| assignments to opaque type 'S' are not permitted |
| construction of array type 'S[2]' with atomic member is not allowed |
| construction of struct type 'NestedS' with atomic member is not allowed |
| *%%*/ |