SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
  scalar_i32:i32 @offset(0)
  scalar_f32:f32 @offset(16)
}

S = struct @align(16) {
  scalar_f32:f32 @offset(0)
  scalar_i32:i32 @offset(4)
  scalar_u32:u32 @offset(8)
  vec2_f32:vec2<f32> @offset(16)
  vec2_i32:vec2<i32> @offset(24)
  vec2_u32:vec2<u32> @offset(32)
  vec3_f32:vec3<f32> @offset(48)
  vec3_i32:vec3<i32> @offset(64)
  vec3_u32:vec3<u32> @offset(80)
  vec4_f32:vec4<f32> @offset(96)
  vec4_i32:vec4<i32> @offset(112)
  vec4_u32:vec4<u32> @offset(128)
  mat2x2_f32:mat2x2<f32> @offset(144)
  mat2x3_f32:mat2x3<f32> @offset(160)
  mat2x4_f32:mat2x4<f32> @offset(192)
  mat3x2_f32:mat3x2<f32> @offset(224)
  mat3x3_f32:mat3x3<f32> @offset(256)
  mat3x4_f32:mat3x4<f32> @offset(304)
  mat4x2_f32:mat4x2<f32> @offset(352)
  mat4x3_f32:mat4x3<f32> @offset(384)
  mat4x4_f32:mat4x4<f32> @offset(448)
  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
  struct_inner:Inner @offset(544)
  array_struct_inner:array<Inner, 4> @offset(576)
}

$B1: {  # root
  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
  %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
}

%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %4:ptr<uniform, f32, read> = access %ub, 0u
    %5:f32 = load %4
    %scalar_f32:f32 = let %5
    %7:ptr<uniform, i32, read> = access %ub, 1u
    %8:i32 = load %7
    %scalar_i32:i32 = let %8
    %10:ptr<uniform, u32, read> = access %ub, 2u
    %11:u32 = load %10
    %scalar_u32:u32 = let %11
    %13:ptr<uniform, vec2<f32>, read> = access %ub, 3u
    %14:vec2<f32> = load %13
    %vec2_f32:vec2<f32> = let %14
    %16:ptr<uniform, vec2<i32>, read> = access %ub, 4u
    %17:vec2<i32> = load %16
    %vec2_i32:vec2<i32> = let %17
    %19:ptr<uniform, vec2<u32>, read> = access %ub, 5u
    %20:vec2<u32> = load %19
    %vec2_u32:vec2<u32> = let %20
    %22:ptr<uniform, vec3<f32>, read> = access %ub, 6u
    %23:vec3<f32> = load %22
    %vec3_f32:vec3<f32> = let %23
    %25:ptr<uniform, vec3<i32>, read> = access %ub, 7u
    %26:vec3<i32> = load %25
    %vec3_i32:vec3<i32> = let %26
    %28:ptr<uniform, vec3<u32>, read> = access %ub, 8u
    %29:vec3<u32> = load %28
    %vec3_u32:vec3<u32> = let %29
    %31:ptr<uniform, vec4<f32>, read> = access %ub, 9u
    %32:vec4<f32> = load %31
    %vec4_f32:vec4<f32> = let %32
    %34:ptr<uniform, vec4<i32>, read> = access %ub, 10u
    %35:vec4<i32> = load %34
    %vec4_i32:vec4<i32> = let %35
    %37:ptr<uniform, vec4<u32>, read> = access %ub, 11u
    %38:vec4<u32> = load %37
    %vec4_u32:vec4<u32> = let %38
    %40:ptr<uniform, mat2x2<f32>, read> = access %ub, 12u
    %41:mat2x2<f32> = load %40
    %mat2x2_f32:mat2x2<f32> = let %41
    %43:ptr<uniform, mat2x3<f32>, read> = access %ub, 13u
    %44:mat2x3<f32> = load %43
    %mat2x3_f32:mat2x3<f32> = let %44
    %46:ptr<uniform, mat2x4<f32>, read> = access %ub, 14u
    %47:mat2x4<f32> = load %46
    %mat2x4_f32:mat2x4<f32> = let %47
    %49:ptr<uniform, mat3x2<f32>, read> = access %ub, 15u
    %50:mat3x2<f32> = load %49
    %mat3x2_f32:mat3x2<f32> = let %50
    %52:ptr<uniform, mat3x3<f32>, read> = access %ub, 16u
    %53:mat3x3<f32> = load %52
    %mat3x3_f32:mat3x3<f32> = let %53
    %55:ptr<uniform, mat3x4<f32>, read> = access %ub, 17u
    %56:mat3x4<f32> = load %55
    %mat3x4_f32:mat3x4<f32> = let %56
    %58:ptr<uniform, mat4x2<f32>, read> = access %ub, 18u
    %59:mat4x2<f32> = load %58
    %mat4x2_f32:mat4x2<f32> = let %59
    %61:ptr<uniform, mat4x3<f32>, read> = access %ub, 19u
    %62:mat4x3<f32> = load %61
    %mat4x3_f32:mat4x3<f32> = let %62
    %64:ptr<uniform, mat4x4<f32>, read> = access %ub, 20u
    %65:mat4x4<f32> = load %64
    %mat4x4_f32:mat4x4<f32> = let %65
    %67:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 21u
    %68:array<vec3<f32>, 2> = load %67
    %arr2_vec3_f32:array<vec3<f32>, 2> = let %68
    %70:ptr<uniform, Inner, read> = access %ub, 22u
    %71:Inner = load %70
    %struct_inner:Inner = let %71
    %73:ptr<uniform, array<Inner, 4>, read> = access %ub, 23u
    %74:array<Inner, 4> = load %73
    %array_struct_inner:array<Inner, 4> = let %74
    %76:i32 = call %tint_f32_to_i32, %scalar_f32
    %78:i32 = add %76, %scalar_i32
    %79:i32 = let %78
    %80:i32 = convert %scalar_u32
    %81:i32 = add %79, %80
    %82:i32 = let %81
    %83:f32 = access %vec2_f32, 0u
    %84:i32 = call %tint_f32_to_i32, %83
    %85:i32 = add %82, %84
    %86:i32 = access %vec2_i32, 0u
    %87:i32 = add %85, %86
    %88:i32 = let %87
    %89:u32 = access %vec2_u32, 0u
    %90:i32 = convert %89
    %91:i32 = add %88, %90
    %92:i32 = let %91
    %93:f32 = access %vec3_f32, 1u
    %94:i32 = call %tint_f32_to_i32, %93
    %95:i32 = add %92, %94
    %96:i32 = access %vec3_i32, 1u
    %97:i32 = add %95, %96
    %98:i32 = let %97
    %99:u32 = access %vec3_u32, 1u
    %100:i32 = convert %99
    %101:i32 = add %98, %100
    %102:i32 = let %101
    %103:f32 = access %vec4_f32, 2u
    %104:i32 = call %tint_f32_to_i32, %103
    %105:i32 = add %102, %104
    %106:i32 = access %vec4_i32, 2u
    %107:i32 = add %105, %106
    %108:i32 = let %107
    %109:u32 = access %vec4_u32, 2u
    %110:i32 = convert %109
    %111:i32 = add %108, %110
    %112:i32 = let %111
    %113:f32 = access %mat2x2_f32, 0i, 0u
    %114:i32 = call %tint_f32_to_i32, %113
    %115:i32 = add %112, %114
    %116:i32 = let %115
    %117:f32 = access %mat2x3_f32, 0i, 0u
    %118:i32 = call %tint_f32_to_i32, %117
    %119:i32 = add %116, %118
    %120:i32 = let %119
    %121:f32 = access %mat2x4_f32, 0i, 0u
    %122:i32 = call %tint_f32_to_i32, %121
    %123:i32 = add %120, %122
    %124:i32 = let %123
    %125:f32 = access %mat3x2_f32, 0i, 0u
    %126:i32 = call %tint_f32_to_i32, %125
    %127:i32 = add %124, %126
    %128:i32 = let %127
    %129:f32 = access %mat3x3_f32, 0i, 0u
    %130:i32 = call %tint_f32_to_i32, %129
    %131:i32 = add %128, %130
    %132:i32 = let %131
    %133:f32 = access %mat3x4_f32, 0i, 0u
    %134:i32 = call %tint_f32_to_i32, %133
    %135:i32 = add %132, %134
    %136:i32 = let %135
    %137:f32 = access %mat4x2_f32, 0i, 0u
    %138:i32 = call %tint_f32_to_i32, %137
    %139:i32 = add %136, %138
    %140:i32 = let %139
    %141:f32 = access %mat4x3_f32, 0i, 0u
    %142:i32 = call %tint_f32_to_i32, %141
    %143:i32 = add %140, %142
    %144:i32 = let %143
    %145:f32 = access %mat4x4_f32, 0i, 0u
    %146:i32 = call %tint_f32_to_i32, %145
    %147:i32 = add %144, %146
    %148:i32 = let %147
    %149:f32 = access %arr2_vec3_f32, 0i, 0u
    %150:i32 = call %tint_f32_to_i32, %149
    %151:i32 = add %148, %150
    %152:i32 = access %struct_inner, 0u
    %153:i32 = add %151, %152
    %154:i32 = access %array_struct_inner, 0i, 0u
    %155:i32 = add %153, %154
    store %s, %155
    ret
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B3: {
    %157:i32 = convert %value
    %158:bool = gte %value, -2147483648.0f
    %159:i32 = select -2147483648i, %157, %158
    %160:bool = lte %value, 2147483520.0f
    %161:i32 = select 2147483647i, %159, %160
    ret %161
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
