blob: ae93504a08948e3e6574adf7f7b1c6ff1124243c [file] [log] [blame]
SKIP: FAILED
../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
injectionSwitch:vec2<f32> @offset(0)
}
main_out = struct @align(16) {
x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}
$B1: { # root
%x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
%gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
%x_GLF_color:ptr<private, vec4<f32>, read_write> = var
%continue_execution:ptr<private, bool, read_write> = var, true
}
%main_1 = func():void {
$B2: {
%temp:ptr<function, array<i32, 10>, read_write> = var
%data:ptr<function, array<i32, 10>, read_write> = var
%x_180:ptr<function, f32, read_write> = var
%x_279:ptr<function, f32, read_write> = var
%x_65_phi:ptr<function, i32, read_write> = var
%x_93_phi:ptr<function, i32, read_write> = var
%x_102_phi:ptr<function, i32, read_write> = var
%x_280_phi:ptr<function, f32, read_write> = var
%14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
%15:f32 = load_vector_element %14, 0u
%x_62:f32 = let %15
%17:i32 = call %tint_f32_to_i32, %x_62
%x_63:i32 = let %17
store %x_65_phi, %x_63
loop [b: $B3, c: $B4] { # loop_1
$B3: { # body
%20:i32 = load %x_65_phi
%x_65:i32 = let %20
switch %x_65 [c: (9i, $B5), c: (8i, $B6), c: (7i, $B7), c: (6i, $B8), c: (5i, $B9), c: (4i, $B10), c: (3i, $B11), c: (2i, $B12), c: (1i, $B13), c: (0i, $B14), c: (default, $B15)] { # switch_1
$B5: { # case
%22:ptr<function, i32, read_write> = access %data, %x_65
store %22, -5i
exit_switch # switch_1
}
$B6: { # case
%23:ptr<function, i32, read_write> = access %data, %x_65
store %23, -4i
exit_switch # switch_1
}
$B7: { # case
%24:ptr<function, i32, read_write> = access %data, %x_65
store %24, -3i
exit_switch # switch_1
}
$B8: { # case
%25:ptr<function, i32, read_write> = access %data, %x_65
store %25, -2i
exit_switch # switch_1
}
$B9: { # case
%26:ptr<function, i32, read_write> = access %data, %x_65
store %26, -1i
exit_switch # switch_1
}
$B10: { # case
%27:ptr<function, i32, read_write> = access %data, %x_65
store %27, 0i
exit_switch # switch_1
}
$B11: { # case
%28:ptr<function, i32, read_write> = access %data, %x_65
store %28, 1i
exit_switch # switch_1
}
$B12: { # case
%29:ptr<function, i32, read_write> = access %data, %x_65
store %29, 2i
exit_switch # switch_1
}
$B13: { # case
%30:ptr<function, i32, read_write> = access %data, %x_65
store %30, 3i
exit_switch # switch_1
}
$B14: { # case
%31:ptr<function, i32, read_write> = access %data, %x_65
store %31, 4i
exit_switch # switch_1
}
$B15: { # case
exit_switch # switch_1
}
}
%32:i32 = add %x_65, 1i
%x_66:i32 = let %32
continue # -> $B4
}
$B4: { # continuing
store %x_65_phi, %x_66
%34:bool = lt %x_66, 10i
%35:bool = eq %34, false
break_if %35 # -> [t: exit_loop loop_1, f: $B3]
}
}
store %x_93_phi, 0i
loop [b: $B16, c: $B17] { # loop_2
$B16: { # body
%x_94:ptr<function, i32, read_write> = var
%37:i32 = load %x_93_phi
%x_93:i32 = let %37
%39:bool = lt %x_93, 10i
if %39 [t: $B18, f: $B19] { # if_1
$B18: { # true
exit_if # if_1
}
$B19: { # false
exit_loop # loop_2
}
}
continue # -> $B17
}
$B17: { # continuing
%40:ptr<function, i32, read_write> = access %data, %x_93
%41:i32 = load %40
%x_99:i32 = let %41
%43:ptr<function, i32, read_write> = access %temp, %x_93
store %43, %x_99
%44:i32 = add %x_93, 1i
store %x_94, %44
%45:i32 = load %x_94
store %x_93_phi, %45
next_iteration # -> $B16
}
}
store %x_102_phi, 1i
loop [b: $B20, c: $B21] { # loop_3
$B20: { # body
%x_103:ptr<function, i32, read_write> = var
%x_109_phi:ptr<function, i32, read_write> = var
%48:i32 = load %x_102_phi
%x_102:i32 = let %48
%50:bool = lte %x_102, 9i
if %50 [t: $B22, f: $B23] { # if_2
$B22: { # true
exit_if # if_2
}
$B23: { # false
exit_loop # loop_3
}
}
store %x_109_phi, 0i
loop [b: $B24, c: $B25] { # loop_4
$B24: { # body
%x_121:ptr<function, i32, read_write> = var
%x_126:ptr<function, i32, read_write> = var
%x_121_phi:ptr<function, i32, read_write> = var
%x_124_phi:ptr<function, i32, read_write> = var
%x_126_phi:ptr<function, i32, read_write> = var
%x_148_phi:ptr<function, i32, read_write> = var
%x_151_phi:ptr<function, i32, read_write> = var
%x_161_phi:ptr<function, i32, read_write> = var
%59:i32 = load %x_109_phi
%x_109:i32 = let %59
%61:bool = lt %x_109, 9i
if %61 [t: $B26, f: $B27] { # if_3
$B26: { # true
exit_if # if_3
}
$B27: { # false
exit_loop # loop_4
}
}
%62:i32 = add %x_109, %x_102
%x_115:i32 = let %62
%64:i32 = sub %x_115, 1i
%x_116:i32 = let %64
%66:i32 = mul 2i, %x_102
%67:i32 = add %x_109, %66
%x_110:i32 = let %67
%69:i32 = sub %x_110, 1i
%70:i32 = min %69, 9i
%x_119:i32 = let %70
store %x_121_phi, %x_109
store %x_124_phi, %x_115
store %x_126_phi, %x_109
loop [b: $B28, c: $B29] { # loop_5
$B28: { # body
%x_141:ptr<function, i32, read_write> = var
%x_144:ptr<function, i32, read_write> = var
%x_125_phi:ptr<function, i32, read_write> = var
%x_127_phi:ptr<function, i32, read_write> = var
%76:i32 = load %x_121_phi
store %x_121, %76
%77:i32 = load %x_124_phi
%x_124:i32 = let %77
%79:i32 = load %x_126_phi
store %x_126, %79
%80:i32 = load %x_126
%81:bool = lte %80, %x_116
%82:bool = lte %x_124, %x_119
%83:bool = and %81, %82
if %83 [t: $B30, f: $B31] { # if_4
$B30: { # true
exit_if # if_4
}
$B31: { # false
exit_loop # loop_5
}
}
%84:i32 = load %x_126
%x_133_save:i32 = let %84
%86:ptr<function, i32, read_write> = access %data, %x_133_save
%87:i32 = load %86
%x_134:i32 = let %87
%x_135_save:i32 = let %x_124
%90:ptr<function, i32, read_write> = access %data, %x_135_save
%91:i32 = load %90
%x_136:i32 = let %91
%93:i32 = load %x_121
%94:i32 = add %93, 1i
%95:i32 = bitcast %94
%x_122:i32 = let %95
%97:bool = lt %x_134, %x_136
if %97 [t: $B32, f: $B33] { # if_5
$B32: { # true
%98:i32 = load %x_126
%99:i32 = add %98, 1i
%100:i32 = bitcast %99
store %x_141, %100
%101:ptr<function, i32, read_write> = access %data, %x_133_save
%102:i32 = load %101
%x_142:i32 = let %102
%104:i32 = load %x_121
%105:ptr<function, i32, read_write> = access %temp, %104
store %105, %x_142
store %x_125_phi, %x_124
%106:i32 = load %x_141
store %x_127_phi, %106
exit_if # if_5
}
$B33: { # false
%107:i32 = add %x_124, 1i
store %x_144, %107
%108:ptr<function, i32, read_write> = access %data, %x_135_save
%109:i32 = load %108
%x_145:i32 = let %109
%111:i32 = load %x_121
%112:ptr<function, i32, read_write> = access %temp, %111
store %112, %x_145
%113:i32 = load %x_144
store %x_125_phi, %113
%114:i32 = load %x_126
store %x_127_phi, %114
exit_if # if_5
}
}
%115:i32 = load %x_125_phi
%x_125:i32 = let %115
%117:i32 = load %x_127_phi
%x_127:i32 = let %117
continue # -> $B29
}
$B29: { # continuing
store %x_121_phi, %x_122
store %x_124_phi, %x_125
store %x_126_phi, %x_127
next_iteration # -> $B28
}
}
%119:i32 = load %x_121
store %x_148_phi, %119
%120:i32 = load %x_126
store %x_151_phi, %120
loop [b: $B34, c: $B35] { # loop_6
$B34: { # body
%x_149:ptr<function, i32, read_write> = var
%x_152:ptr<function, i32, read_write> = var
%123:i32 = load %x_148_phi
%x_148:i32 = let %123
%125:i32 = load %x_151_phi
%x_151:i32 = let %125
%127:bool = lt %x_151, 10i
%128:bool = lte %x_151, %x_116
%129:bool = and %127, %128
if %129 [t: $B36, f: $B37] { # if_6
$B36: { # true
exit_if # if_6
}
$B37: { # false
exit_loop # loop_6
}
}
continue # -> $B35
}
$B35: { # continuing
%130:i32 = add %x_148, 1i
store %x_149, %130
%131:i32 = add %x_151, 1i
store %x_152, %131
%132:ptr<function, i32, read_write> = access %data, %x_151
%133:i32 = load %132
%x_158:i32 = let %133
%135:ptr<function, i32, read_write> = access %temp, %x_148
store %135, %x_158
%136:i32 = load %x_149
store %x_148_phi, %136
%137:i32 = load %x_152
store %x_151_phi, %137
next_iteration # -> $B34
}
}
store %x_161_phi, %x_109
loop [b: $B38, c: $B39] { # loop_7
$B38: { # body
%x_162:ptr<function, i32, read_write> = var
%139:i32 = load %x_161_phi
%x_161:i32 = let %139
%141:bool = lte %x_161, %x_119
if %141 [t: $B40, f: $B41] { # if_7
$B40: { # true
exit_if # if_7
}
$B41: { # false
exit_loop # loop_7
}
}
continue # -> $B39
}
$B39: { # continuing
%142:ptr<function, i32, read_write> = access %temp, %x_161
%143:i32 = load %142
%x_167:i32 = let %143
%145:ptr<function, i32, read_write> = access %data, %x_161
store %145, %x_167
%146:i32 = add %x_161, 1i
store %x_162, %146
%147:i32 = load %x_162
store %x_161_phi, %147
next_iteration # -> $B38
}
}
continue # -> $B25
}
$B25: { # continuing
store %x_109_phi, %x_110
next_iteration # -> $B24
}
}
continue # -> $B21
}
$B21: { # continuing
%148:i32 = mul 2i, %x_102
store %x_103, %148
%149:i32 = load %x_103
store %x_102_phi, %149
next_iteration # -> $B20
}
}
%x_171:ptr<function, i32, read_write> = var
%x_189:ptr<function, f32, read_write> = var
%x_278:ptr<function, f32, read_write> = var
%x_279_phi:ptr<function, f32, read_write> = var
%154:f32 = load_vector_element %gl_FragCoord, 1u
%x_170:f32 = let %154
%156:i32 = call %tint_f32_to_i32, %x_170
store %x_171, %156
%157:i32 = load %x_171
%158:bool = lt %157, 30i
if %158 [t: $B42, f: $B43] { # if_8
$B42: { # true
%159:ptr<function, i32, read_write> = access %data, 0i
%160:i32 = load %159
%x_177:i32 = let %160
%162:f32 = convert %x_177
%163:f32 = mul %162, 0.10000000149011611938f
%164:f32 = add 0.5f, %163
store %x_180, %164
%165:f32 = load %x_180
store %x_280_phi, %165
exit_if # if_8
}
$B43: { # false
%x_198:ptr<function, f32, read_write> = var
%x_277:ptr<function, f32, read_write> = var
%x_278_phi:ptr<function, f32, read_write> = var
%169:i32 = load %x_171
%170:bool = lt %169, 60i
if %170 [t: $B44, f: $B45] { # if_9
$B44: { # true
%171:ptr<function, i32, read_write> = access %data, 1i
%172:i32 = load %171
%x_186:i32 = let %172
%174:f32 = convert %x_186
%175:f32 = mul %174, 0.10000000149011611938f
%176:f32 = add 0.5f, %175
store %x_189, %176
%177:f32 = load %x_189
store %x_279_phi, %177
exit_if # if_9
}
$B45: { # false
%x_207:ptr<function, f32, read_write> = var
%x_249:ptr<function, f32, read_write> = var
%x_277_phi:ptr<function, f32, read_write> = var
%181:i32 = load %x_171
%182:bool = lt %181, 90i
if %182 [t: $B46, f: $B47] { # if_10
$B46: { # true
%183:ptr<function, i32, read_write> = access %data, 2i
%184:i32 = load %183
%x_195:i32 = let %184
%186:f32 = convert %x_195
%187:f32 = mul %186, 0.10000000149011611938f
%188:f32 = add 0.5f, %187
store %x_198, %188
%189:f32 = load %x_198
store %x_278_phi, %189
exit_if # if_10
}
$B47: { # false
%190:i32 = load %x_171
%191:bool = lt %190, 120i
if %191 [t: $B48, f: $B49] { # if_11
$B48: { # true
%192:ptr<function, i32, read_write> = access %data, 3i
%193:i32 = load %192
%x_204:i32 = let %193
%195:f32 = convert %x_204
%196:f32 = mul %195, 0.10000000149011611938f
%197:f32 = add 0.5f, %196
store %x_207, %197
%198:f32 = load %x_207
store %x_277_phi, %198
exit_if # if_11
}
$B49: { # false
%x_220:ptr<function, f32, read_write> = var
%x_248:ptr<function, f32, read_write> = var
%x_249_phi:ptr<function, f32, read_write> = var
%x_256_phi:ptr<function, vec2<f32>, read_write> = var
%x_259_phi:ptr<function, i32, read_write> = var
%204:i32 = load %x_171
%205:bool = lt %204, 150i
if %205 [t: $B50, f: $B51] { # if_12
$B50: { # true
store %continue_execution, false
exit_if # if_12
}
$B51: { # false
%x_229:ptr<function, f32, read_write> = var
%x_247:ptr<function, f32, read_write> = var
%x_248_phi:ptr<function, f32, read_write> = var
%209:i32 = load %x_171
%210:bool = lt %209, 180i
if %210 [t: $B52, f: $B53] { # if_13
$B52: { # true
%211:ptr<function, i32, read_write> = access %data, 5i
%212:i32 = load %211
%x_217:i32 = let %212
%214:f32 = convert %x_217
%215:f32 = mul %214, 0.10000000149011611938f
%216:f32 = add 0.5f, %215
store %x_220, %216
%217:f32 = load %x_220
store %x_249_phi, %217
exit_if # if_13
}
$B53: { # false
%x_238:ptr<function, f32, read_write> = var
%x_246:ptr<function, f32, read_write> = var
%x_247_phi:ptr<function, f32, read_write> = var
%221:i32 = load %x_171
%222:bool = lt %221, 210i
if %222 [t: $B54, f: $B55] { # if_14
$B54: { # true
%223:ptr<function, i32, read_write> = access %data, 6i
%224:i32 = load %223
%x_226:i32 = let %224
%226:f32 = convert %x_226
%227:f32 = mul %226, 0.10000000149011611938f
%228:f32 = add 0.5f, %227
store %x_229, %228
%229:f32 = load %x_229
store %x_248_phi, %229
exit_if # if_14
}
$B55: { # false
%230:i32 = load %x_171
%231:bool = lt %230, 240i
if %231 [t: $B56, f: $B57] { # if_15
$B56: { # true
%232:ptr<function, i32, read_write> = access %data, 7i
%233:i32 = load %232
%x_235:i32 = let %233
%235:f32 = convert %x_235
%236:f32 = mul %235, 0.10000000149011611938f
%237:f32 = add 0.5f, %236
store %x_238, %237
%238:f32 = load %x_238
store %x_247_phi, %238
exit_if # if_15
}
$B57: { # false
%239:i32 = load %x_171
%240:bool = lt %239, 270i
if %240 [t: $B58, f: $B59] { # if_16
$B58: { # true
exit_if # if_16
}
$B59: { # false
store %continue_execution, false
exit_if # if_16
}
}
%241:ptr<function, i32, read_write> = access %data, 8i
%242:i32 = load %241
%x_243:i32 = let %242
%244:f32 = convert %x_243
%245:f32 = mul %244, 0.10000000149011611938f
%246:f32 = add 0.5f, %245
store %x_246, %246
%247:f32 = load %x_246
store %x_247_phi, %247
exit_if # if_15
}
}
%248:f32 = load %x_247_phi
store %x_247, %248
%249:f32 = load %x_247
store %x_248_phi, %249
exit_if # if_14
}
}
%250:f32 = load %x_248_phi
store %x_248, %250
%251:f32 = load %x_248
store %x_249_phi, %251
exit_if # if_13
}
}
%252:f32 = load %x_249_phi
store %x_249, %252
%253:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
%254:f32 = load_vector_element %253, 1u
%x_251:f32 = let %254
%256:bool = gt %x_62, %x_251
%x_252:bool = let %256
if %x_252 [t: $B60] { # if_17
$B60: { # true
store %x_GLF_color, vec4<f32>(1.0f)
exit_if # if_17
}
}
store %x_256_phi, vec2<f32>(1.0f)
store %x_259_phi, 0i
loop [b: $B61, c: $B62] { # loop_8
$B61: { # body
%x_272:ptr<function, vec2<f32>, read_write> = var
%x_260:ptr<function, i32, read_write> = var
%x_273_phi:ptr<function, vec2<f32>, read_write> = var
%261:vec2<f32> = load %x_256_phi
%x_256:vec2<f32> = let %261
%263:i32 = load %x_259_phi
%x_259:i32 = let %263
%265:bool = lte %x_259, 32i
if %265 [t: $B63, f: $B64] { # if_18
$B63: { # true
exit_if # if_18
}
$B64: { # false
exit_loop # loop_8
}
}
store %x_273_phi, %x_256
%266:f32 = access %x_256, 0u
%267:bool = lt %266, 0.0f
if %267 [t: $B65] { # if_19
$B65: { # true
if %x_252 [t: $B66] { # if_20
$B66: { # true
store %continue_execution, false
exit_if # if_20
}
}
store %x_272, %x_256
%268:f32 = access %x_256, 1u
%269:f32 = add %268, 1.0f
store_vector_element %x_272, 1u, %269
%270:vec2<f32> = load %x_272
store %x_273_phi, %270
exit_if # if_19
}
}
%271:vec2<f32> = load %x_273_phi
%x_273:vec2<f32> = let %271
%x_257_1:ptr<function, vec2<f32>, read_write> = var, %x_273
%274:f32 = access %x_273, 0u
%275:f32 = access %x_273, 1u
%276:f32 = add %274, %275
store_vector_element %x_257_1, 0u, %276
%277:vec2<f32> = load %x_257_1
%x_257:vec2<f32> = let %277
continue # -> $B62
}
$B62: { # continuing
%279:i32 = add %x_259, 1i
store %x_260, %279
store %x_256_phi, %x_257
%280:i32 = load %x_260
store %x_259_phi, %280
next_iteration # -> $B61
}
}
exit_if # if_12
}
}
%281:f32 = load %x_249
store %x_277_phi, %281
exit_if # if_11
}
}
%282:f32 = load %x_277_phi
store %x_277, %282
%283:f32 = load %x_277
store %x_278_phi, %283
exit_if # if_10
}
}
%284:f32 = load %x_278_phi
store %x_278, %284
%285:f32 = load %x_278
store %x_279_phi, %285
exit_if # if_9
}
}
%286:f32 = load %x_279_phi
store %x_279, %286
%287:f32 = load %x_279
store %x_280_phi, %287
exit_if # if_8
}
}
%288:f32 = load %x_280_phi
%x_280:f32 = let %288
%290:vec4<f32> = construct %x_280, %x_280, %x_280, 1.0f
store %x_GLF_color, %290
ret
}
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
$B67: {
store %gl_FragCoord, %gl_FragCoord_param
%293:void = call %main_1
%294:vec4<f32> = load %x_GLF_color
%295:main_out = construct %294
%296:bool = load %continue_execution
%297:bool = eq %296, false
if %297 [t: $B68] { # if_21
$B68: { # true
terminate_invocation
}
}
ret %295
}
}
%tint_f32_to_i32 = func(%value:f32):i32 {
$B69: {
%299:i32 = convert %value
%300:bool = gte %value, -2147483648.0f
%301:i32 = select -2147483648i, %299, %300
%302:bool = lte %value, 2147483520.0f
%303:i32 = select 2147483647i, %301, %302
ret %303
}
}
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. *
********************************************************************