warning: use of deprecated intrinsic
#include <metal_stdlib>

using namespace metal;
void main_1(texture1d<float, access::read> tint_symbol_1) {
  float float_var = 0.0f;
  int const i1 = 1;
  int2 const vi12 = int2(1, 2);
  int3 const vi123 = int3(1, 2, 3);
  int4 const vi1234 = int4(1, 2, 3, 4);
  uint const u1 = 1u;
  uint2 const vu12 = uint2(1u, 2u);
  uint3 const vu123 = uint3(1u, 2u, 3u);
  uint4 const vu1234 = uint4(1u, 2u, 3u, 4u);
  float const f1 = 1.0f;
  float2 const vf12 = float2(1.0f, 2.0f);
  float3 const vf123 = float3(1.0f, 2.0f, 3.0f);
  float4 const vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
  float4 const x_71 = tint_symbol_1.read(uint(int(u1)));
  uint const x_1000 = 0u;
  return;
}

fragment void tint_symbol(texture1d<float, access::read> tint_symbol_2 [[texture(0)]]) {
  main_1(tint_symbol_2);
  return;
}

