#include <metal_stdlib>

using namespace metal;

template<typename T, int N, int M>
inline auto operator*(matrix<T, N, M> lhs, packed_vec<T, N> rhs) {
  return lhs * vec<T, N>(rhs);
}

template<typename T, int N, int M>
inline auto operator*(packed_vec<T, M> lhs, matrix<T, N, M> rhs) {
  return vec<T, M>(lhs) * rhs;
}

struct S {
  /* 0x0000 */ float3x2 tint_symbol;
  /* 0x0018 */ int8_t tint_pad[8];
  /* 0x0020 */ packed_float3 vector;
  /* 0x002c */ int8_t tint_pad_1[4];
};

fragment void tint_symbol_1(constant S& data [[buffer(0)]]) {
  float2 const x = (data.tint_symbol * data.vector);
  return;
}

