SKIP: FAILED

vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl:1:15 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
type RTArr = @stride(4) array<u32>;
              ^^^^^^

#version 310 es
precision mediump float;

struct S {
  uint field0[];
};

uvec3 x_3 = uvec3(0u, 0u, 0u);
layout(binding = 0) buffer S_1 {
  uint field0[];
} x_6;
layout(binding = 1) buffer S_2 {
  uint field0[];
} x_7;
layout(binding = 2) buffer S_3 {
  uint field0[];
} x_8;
layout(binding = 3) buffer S_4 {
  uint field0[];
} x_9;

void main_1() {
  uint x_23 = x_3.x;
  uint x_25 = x_6.field0[x_23];
  uint x_27 = x_7.field0[x_23];
  uint x_29 = x_8.field0[x_23];
  x_9.field0[x_23] = uint(clamp(int(x_25), int(x_27), int(x_29)));
  return;
}

struct tint_symbol_2 {
  uvec3 x_3_param;
};

void tint_symbol_inner(uvec3 x_3_param) {
  x_3 = x_3_param;
  main_1();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol(tint_symbol_2 tint_symbol_1) {
  tint_symbol_inner(tint_symbol_1.x_3_param);
  return;
}
void main() {
  tint_symbol_2 inputs;
  inputs.x_3_param = gl_GlobalInvocationID;
  tint_symbol(inputs);
}


Error parsing GLSL shader:
ERROR: 0:5: '' : array size required 
ERROR: 0:6: '' : compilation terminated 
ERROR: 2 compilation errors.  No code generated.



