#version 460 core
#extension GL_ARM_tensors : enable
#extension GL_EXT_shader_explicit_arithmetic_types : enable

layout(set = 0, binding = 0) uniform tensorARM<int32_t, 4> tu;
layout(set = 0, binding = 1) uniform tensorARM<int32_t, 2> td;

layout(set = 0, binding = 2, std430) buffer buff {
  uint out_data[];
};

void unusedTensorParam(tensorARM) {
  return;
}

uint getDim0Size(tensorARM t) {
  return tensorSizeARM(t, 0);
}

uint partiallySpecialized(tensorARM<int> t) {
  return tensorSizeARM(t, 1);
}

void main() {
  unusedTensorParam(tu);
  unusedTensorParam(td);
  out_data[0] = getDim0Size(tu);
  out_data[0] += getDim0Size(td);
  out_data[0] += partiallySpecialized(tu);
}
