blob: 6a0272f70d1d7efda25ef3af4d8a48eb836cabc5 [file] [log] [blame]
SKIP: FAILED
../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: SimParams = struct @align(4) {
deltaT:f32 @offset(0)
rule1Distance:f32 @offset(4)
rule2Distance:f32 @offset(8)
rule3Distance:f32 @offset(12)
rule1Scale:f32 @offset(16)
rule2Scale:f32 @offset(20)
rule3Scale:f32 @offset(24)
}
Particle = struct @align(8) {
pos:vec2<f32> @offset(0)
vel:vec2<f32> @offset(8)
}
Particles = struct @align(8) {
particles:array<Particle, 5> @offset(0)
}
$B1: { # root
%params:ptr<uniform, SimParams, read> = var @binding_point(0, 0)
%particlesA:ptr<storage, Particles, read_write> = var @binding_point(0, 1)
%particlesB:ptr<storage, Particles, read_write> = var @binding_point(0, 2)
}
%vert_main = @vertex func(%a_particlePos:vec2<f32> [@location(0)], %a_particleVel:vec2<f32> [@location(1)], %a_pos:vec2<f32> [@location(2)]):vec4<f32> [@position] {
$B2: {
%8:f32 = access %a_particleVel, 0u
%9:f32 = access %a_particleVel, 1u
%10:f32 = atan2 %8, %9
%11:f32 = negation %10
%angle:ptr<function, f32, read_write> = var, %11
%13:f32 = access %a_pos, 0u
%14:f32 = load %angle
%15:f32 = cos %14
%16:f32 = mul %13, %15
%17:f32 = let %16
%18:f32 = access %a_pos, 1u
%19:f32 = load %angle
%20:f32 = sin %19
%21:f32 = mul %18, %20
%22:f32 = sub %17, %21
%23:f32 = let %22
%24:f32 = access %a_pos, 0u
%25:f32 = load %angle
%26:f32 = sin %25
%27:f32 = mul %24, %26
%28:f32 = let %27
%29:f32 = access %a_pos, 1u
%30:f32 = load %angle
%31:f32 = cos %30
%32:f32 = mul %29, %31
%33:f32 = add %28, %32
%34:vec2<f32> = construct %23, %33
%pos:ptr<function, vec2<f32>, read_write> = var, %34
%36:vec2<f32> = load %pos
%37:vec2<f32> = add %36, %a_particlePos
%38:vec4<f32> = construct %37, 0.0f, 1.0f
ret %38
}
}
%frag_main = @fragment func():vec4<f32> [@location(0)] {
$B3: {
ret vec4<f32>(1.0f)
}
}
%comp_main = @compute @workgroup_size(1, 1, 1) func(%gl_GlobalInvocationID:vec3<u32> [@global_invocation_id]):void {
$B4: {
%42:u32 = access %gl_GlobalInvocationID, 0u
%index:ptr<function, u32, read_write> = var, %42
%44:u32 = load %index
%45:bool = gte %44, 5u
if %45 [t: $B5] { # if_1
$B5: { # true
ret
}
}
%46:u32 = load %index
%47:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %46, 0u
%48:vec2<f32> = load %47
%vPos:ptr<function, vec2<f32>, read_write> = var, %48
%50:u32 = load %index
%51:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %50, 1u
%52:vec2<f32> = load %51
%vVel:ptr<function, vec2<f32>, read_write> = var, %52
%cMass:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
%cVel:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
%colVel:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
%cMassCount:ptr<function, i32, read_write> = var, 0i
%cVelCount:ptr<function, i32, read_write> = var, 0i
%pos_1:ptr<function, vec2<f32>, read_write> = var # %pos_1: 'pos'
%vel:ptr<function, vec2<f32>, read_write> = var
loop [i: $B6, b: $B7, c: $B8] { # loop_1
$B6: { # initializer
%i:ptr<function, u32, read_write> = var, 0u
next_iteration # -> $B7
}
$B7: { # body
%62:u32 = load %i
%63:bool = lt %62, 5u
if %63 [t: $B9, f: $B10] { # if_2
$B9: { # true
exit_if # if_2
}
$B10: { # false
exit_loop # loop_1
}
}
%64:u32 = load %i
%65:u32 = load %index
%66:bool = eq %64, %65
if %66 [t: $B11] { # if_3
$B11: { # true
continue # -> $B8
}
}
%67:u32 = load %i
%68:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %67, 0u
%69:vec2<f32> = load %68
%70:vec2<f32> = swizzle %69, xy
store %pos_1, %70
%71:u32 = load %i
%72:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %71, 1u
%73:vec2<f32> = load %72
%74:vec2<f32> = swizzle %73, xy
store %vel, %74
%75:vec2<f32> = load %pos_1
%76:vec2<f32> = load %vPos
%77:f32 = distance %75, %76
%78:ptr<uniform, f32, read> = access %params, 1u
%79:f32 = load %78
%80:bool = lt %77, %79
if %80 [t: $B12] { # if_4
$B12: { # true
%81:vec2<f32> = load %cMass
%82:vec2<f32> = load %pos_1
%83:vec2<f32> = add %81, %82
store %cMass, %83
%84:i32 = load %cMassCount
%85:i32 = add %84, 1i
store %cMassCount, %85
exit_if # if_4
}
}
%86:vec2<f32> = load %pos_1
%87:vec2<f32> = load %vPos
%88:f32 = distance %86, %87
%89:ptr<uniform, f32, read> = access %params, 2u
%90:f32 = load %89
%91:bool = lt %88, %90
if %91 [t: $B13] { # if_5
$B13: { # true
%92:vec2<f32> = load %colVel
%93:vec2<f32> = load %pos_1
%94:vec2<f32> = load %vPos
%95:vec2<f32> = sub %93, %94
%96:vec2<f32> = sub %92, %95
store %colVel, %96
exit_if # if_5
}
}
%97:vec2<f32> = load %pos_1
%98:vec2<f32> = load %vPos
%99:f32 = distance %97, %98
%100:ptr<uniform, f32, read> = access %params, 3u
%101:f32 = load %100
%102:bool = lt %99, %101
if %102 [t: $B14] { # if_6
$B14: { # true
%103:vec2<f32> = load %cVel
%104:vec2<f32> = load %vel
%105:vec2<f32> = add %103, %104
store %cVel, %105
%106:i32 = load %cVelCount
%107:i32 = add %106, 1i
store %cVelCount, %107
exit_if # if_6
}
}
continue # -> $B8
}
$B8: { # continuing
%108:u32 = load %i
%109:u32 = add %108, 1u
store %i, %109
next_iteration # -> $B7
}
}
%110:i32 = load %cMassCount
%111:bool = gt %110, 0i
if %111 [t: $B15] { # if_7
$B15: { # true
%112:vec2<f32> = load %cMass
%113:vec2<f32> = let %112
%114:i32 = load %cMassCount
%115:f32 = convert %114
%116:f32 = let %115
%117:i32 = load %cMassCount
%118:f32 = convert %117
%119:vec2<f32> = construct %116, %118
%120:vec2<f32> = div %113, %119
%121:vec2<f32> = load %vPos
%122:vec2<f32> = sub %120, %121
store %cMass, %122
exit_if # if_7
}
}
%123:i32 = load %cVelCount
%124:bool = gt %123, 0i
if %124 [t: $B16] { # if_8
$B16: { # true
%125:vec2<f32> = load %cVel
%126:vec2<f32> = let %125
%127:i32 = load %cVelCount
%128:f32 = convert %127
%129:f32 = let %128
%130:i32 = load %cVelCount
%131:f32 = convert %130
%132:vec2<f32> = construct %129, %131
%133:vec2<f32> = div %126, %132
store %cVel, %133
exit_if # if_8
}
}
%134:vec2<f32> = load %vVel
%135:vec2<f32> = load %cMass
%136:ptr<uniform, f32, read> = access %params, 4u
%137:f32 = load %136
%138:vec2<f32> = mul %135, %137
%139:vec2<f32> = add %134, %138
%140:vec2<f32> = load %colVel
%141:ptr<uniform, f32, read> = access %params, 5u
%142:f32 = load %141
%143:vec2<f32> = mul %140, %142
%144:vec2<f32> = add %139, %143
%145:vec2<f32> = load %cVel
%146:ptr<uniform, f32, read> = access %params, 6u
%147:f32 = load %146
%148:vec2<f32> = mul %145, %147
%149:vec2<f32> = add %144, %148
store %vVel, %149
%150:vec2<f32> = load %vVel
%151:vec2<f32> = normalize %150
%152:vec2<f32> = let %151
%153:vec2<f32> = load %vVel
%154:f32 = length %153
%155:f32 = clamp %154, 0.0f, 0.10000000149011611938f
%156:vec2<f32> = mul %152, %155
store %vVel, %156
%157:vec2<f32> = load %vPos
%158:vec2<f32> = load %vVel
%159:ptr<uniform, f32, read> = access %params, 0u
%160:f32 = load %159
%161:vec2<f32> = mul %158, %160
%162:vec2<f32> = add %157, %161
store %vPos, %162
%163:f32 = load_vector_element %vPos, 0u
%164:bool = lt %163, -1.0f
if %164 [t: $B17] { # if_9
$B17: { # true
store_vector_element %vPos, 0u, 1.0f
exit_if # if_9
}
}
%165:f32 = load_vector_element %vPos, 0u
%166:bool = gt %165, 1.0f
if %166 [t: $B18] { # if_10
$B18: { # true
store_vector_element %vPos, 0u, -1.0f
exit_if # if_10
}
}
%167:f32 = load_vector_element %vPos, 1u
%168:bool = lt %167, -1.0f
if %168 [t: $B19] { # if_11
$B19: { # true
store_vector_element %vPos, 1u, 1.0f
exit_if # if_11
}
}
%169:f32 = load_vector_element %vPos, 1u
%170:bool = gt %169, 1.0f
if %170 [t: $B20] { # if_12
$B20: { # true
store_vector_element %vPos, 1u, -1.0f
exit_if # if_12
}
}
%171:u32 = load %index
%172:ptr<storage, vec2<f32>, read_write> = access %particlesB, 0u, %171, 0u
%173:vec2<f32> = load %vPos
store %172, %173
%174:u32 = load %index
%175:ptr<storage, vec2<f32>, read_write> = access %particlesB, 0u, %174, 1u
%176:vec2<f32> = load %vVel
store %175, %176
ret
}
}
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. *
********************************************************************