#include <metal_stdlib>

using namespace metal;
struct tint_padded_array_element {
  /* 0x0000 */ float2 el;
  /* 0x0008 */ int8_t tint_pad[8];
};
struct tint_array_wrapper {
  /* 0x0000 */ tint_padded_array_element arr[2];
};
struct SSBO {
  /* 0x0000 */ tint_array_wrapper m;
};

float2x2 arr_to_mat2x2_stride_16(tint_array_wrapper arr) {
  return float2x2(arr.arr[0u].el, arr.arr[1u].el);
}

tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 mat) {
  tint_array_wrapper const tint_symbol = {.arr={{.el=mat[0u]}, {.el=mat[1u]}}};
  return tint_symbol;
}

void f_1(device SSBO* const tint_symbol_1) {
  float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_1)).m);
  (*(tint_symbol_1)).m = mat2x2_stride_16_to_arr(x_15);
  return;
}

kernel void f(device SSBO* tint_symbol_2 [[buffer(0)]]) {
  f_1(tint_symbol_2);
  return;
}

