#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& ssbo) {
  float2x2 const x_15 = arr_to_mat2x2_stride_16(ssbo.m);
  ssbo.m = mat2x2_stride_16_to_arr(x_15);
  return;
}

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

