#include <metal_stdlib>

using namespace metal;

#define TINT_ISOLATE_UB(VOLATILE_NAME) \
  volatile bool VOLATILE_NAME = true; \
  if (VOLATILE_NAME)

kernel void tint_symbol() {
  float2 v2f = 0.0f;
  float3 v3f = 0.0f;
  float4 v4f = 0.0f;
  int2 v2i = 0;
  int3 v3i = 0;
  int4 v4i = 0;
  uint2 v2u = 0u;
  uint3 v3u = 0u;
  uint4 v4u = 0u;
  bool2 v2b = false;
  bool3 v3b = false;
  bool4 v4b = false;
  TINT_ISOLATE_UB(tint_volatile_true) for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    v2f[i] = 1.0f;
    v3f[i] = 1.0f;
    v4f[i] = 1.0f;
    v2i[i] = 1;
    v3i[i] = 1;
    v4i[i] = 1;
    v2u[i] = 1u;
    v3u[i] = 1u;
    v4u[i] = 1u;
    v2b[i] = true;
    v3b[i] = true;
    v4b[i] = true;
  }
  return;
}

