| diagnostic(off, derivative_uniformity); |
| diagnostic(off, chromium.unreachable_code); |
| struct ssbo { |
| ssboAtomic: atomic<u32>, |
| ssboAtomicArray: array<atomic<u32>, 2>, |
| ssboStructWithAtomicMember: S, |
| ssboStructWithAtomicMemberArray: array<_skArrayElement_S, 2>, |
| ssboNestedStructWithAtomicMember: NestedS, |
| }; |
| @group(0) @binding(0) var<storage, read_write> _storage0 : ssbo; |
| struct S { |
| structMemberAtomic: atomic<u32>, |
| structMemberAtomicArray: array<atomic<u32>, 2>, |
| }; |
| struct NestedS { |
| nestedStructWithAtomicMember: S, |
| }; |
| var<workgroup> wgAtomic: atomic<u32>; |
| var<workgroup> wgAtomicArray: array<atomic<u32>, 2>; |
| var<workgroup> wgNestedStructWithAtomicMember: NestedS; |
| fn _skslMain() { |
| { |
| let _skTemp1 = atomicLoad(&wgAtomic); |
| let _skTemp2 = atomicAdd(&wgAtomicArray[1], _skTemp1); |
| let _skTemp3 = atomicLoad(&wgAtomicArray[1]); |
| let _skTemp4 = atomicAdd(&wgAtomicArray[0], _skTemp3); |
| let _skTemp5 = atomicAdd(&wgNestedStructWithAtomicMember.nestedStructWithAtomicMember.structMemberAtomic, 1u); |
| } |
| } |
| @compute @workgroup_size(64, 1, 1) fn main() { |
| _skslMain(); |
| } |
| struct _skArrayElement_S { |
| @size(16) e : S |
| }; |