#version 310 es
precision mediump float;

struct Constants {
  uint zero;
};

layout (binding = 0) uniform Constants_1 {
  uint zero;
} constants;

struct Result {
  uint value;
};

layout (binding = 1) buffer Result_1 {
  uint value;
} result;

struct TestData {
  int data[3];
};

layout (binding = 0) buffer TestData_1 {
  int data[3];
} s;

int runTest() {
  return atomicOr(s.data[(0u + uint(constants.zero))], 0);
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol() {
  result.value = uint(runTest());
  return;
}
void main() {
  tint_symbol();
}


