blob: 6c8a36ec4287f01b1de4d8a91ebda3cf7c94bd4a [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_63:ptr<function, i32, read_write> = var
%x_103:ptr<function, i32, read_write> = var
%x_112:ptr<function, i32, read_write> = var
%x_190:ptr<function, f32, read_write> = var
%x_262:ptr<function, f32, read_write> = var
%x_263:ptr<function, f32, read_write> = var
%14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
%15:f32 = load_vector_element %14, 0u
%16:i32 = call %tint_f32_to_i32, %15
store %x_63, %16
loop [b: $B3, c: $B4] { # loop_1
$B3: { # body
%x_100:ptr<function, i32, read_write> = var
%x_98:ptr<function, i32, read_write> = var
%x_96:ptr<function, i32, read_write> = var
%x_94:ptr<function, i32, read_write> = var
%x_92:ptr<function, i32, read_write> = var
%x_90:ptr<function, i32, read_write> = var
%x_88:ptr<function, i32, read_write> = var
%x_86:ptr<function, i32, read_write> = var
%x_84:ptr<function, i32, read_write> = var
%x_82:ptr<function, i32, read_write> = var
%x_64:ptr<function, i32, read_write> = var
%29:array<i32, 10> = load %data
%x_68:array<i32, 10> = let %29
store %data, array<i32, 10>(0i)
store %data, %x_68
%31:i32 = load %x_63
%32:i32 = add %31, 1i
store %x_64, %32
%33:i32 = load %x_63
switch %33 [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
%34:i32 = load %x_63
%35:ptr<function, i32, read_write> = access %data, %34
store %35, -5i
%36:i32 = load %x_63
%37:i32 = add %36, 1i
store %x_100, %37
%38:i32 = load %x_100
store %x_64, %38
exit_switch # switch_1
}
$B6: { # case
%39:i32 = load %x_63
%40:ptr<function, i32, read_write> = access %data, %39
store %40, -4i
%41:i32 = load %x_63
%42:i32 = add %41, 1i
store %x_98, %42
%43:i32 = load %x_98
store %x_64, %43
exit_switch # switch_1
}
$B7: { # case
%44:i32 = load %x_63
%45:ptr<function, i32, read_write> = access %data, %44
store %45, -3i
%46:i32 = load %x_63
%47:i32 = add %46, 1i
store %x_96, %47
%48:i32 = load %x_96
store %x_64, %48
exit_switch # switch_1
}
$B8: { # case
%49:i32 = load %x_63
%50:ptr<function, i32, read_write> = access %data, %49
store %50, -2i
%51:i32 = load %x_63
%52:i32 = add %51, 1i
store %x_94, %52
%53:i32 = load %x_94
store %x_64, %53
exit_switch # switch_1
}
$B9: { # case
%54:i32 = load %x_63
%55:ptr<function, i32, read_write> = access %data, %54
store %55, -1i
%56:i32 = load %x_63
%57:i32 = add %56, 1i
store %x_92, %57
%58:i32 = load %x_92
store %x_64, %58
exit_switch # switch_1
}
$B10: { # case
%59:i32 = load %x_63
%60:ptr<function, i32, read_write> = access %data, %59
store %60, 0i
%61:i32 = load %x_63
%62:i32 = add %61, 1i
store %x_90, %62
%63:i32 = load %x_90
store %x_64, %63
exit_switch # switch_1
}
$B11: { # case
%64:i32 = load %x_63
%65:ptr<function, i32, read_write> = access %data, %64
store %65, 1i
%66:i32 = load %x_63
%67:i32 = add %66, 1i
store %x_88, %67
%68:i32 = load %x_88
store %x_64, %68
exit_switch # switch_1
}
$B12: { # case
%69:i32 = load %x_63
%70:ptr<function, i32, read_write> = access %data, %69
store %70, 2i
%71:i32 = load %x_63
%72:i32 = add %71, 1i
store %x_86, %72
%73:i32 = load %x_86
store %x_64, %73
exit_switch # switch_1
}
$B13: { # case
%74:i32 = load %x_63
%75:ptr<function, i32, read_write> = access %data, %74
store %75, 3i
%76:i32 = load %x_63
%77:i32 = add %76, 1i
store %x_84, %77
%78:i32 = load %x_84
store %x_64, %78
exit_switch # switch_1
}
$B14: { # case
%79:i32 = load %x_63
%80:ptr<function, i32, read_write> = access %data, %79
store %80, 4i
%81:i32 = load %x_63
%82:i32 = add %81, 1i
store %x_82, %82
%83:i32 = load %x_82
store %x_64, %83
exit_switch # switch_1
}
$B15: { # case
exit_switch # switch_1
}
}
continue # -> $B4
}
$B4: { # continuing
%84:i32 = load %x_64
store %x_63, %84
%85:i32 = load %x_64
%86:bool = lt %85, 10i
%87:bool = eq %86, false
break_if %87 # -> [t: exit_loop loop_1, f: $B3]
}
}
store %x_103, 0i
loop [b: $B16, c: $B17] { # loop_2
$B16: { # body
%x_104:ptr<function, i32, read_write> = var
%89:i32 = load %x_103
%90:bool = lt %89, 10i
if %90 [t: $B18, f: $B19] { # if_1
$B18: { # true
exit_if # if_1
}
$B19: { # false
exit_loop # loop_2
}
}
continue # -> $B17
}
$B17: { # continuing
%91:i32 = load %x_103
%92:ptr<function, i32, read_write> = access %temp, %91
%93:i32 = load %x_103
%94:ptr<function, i32, read_write> = access %data, %93
%95:i32 = load %94
store %92, %95
%96:i32 = load %x_103
%97:i32 = add %96, 1i
store %x_104, %97
%98:i32 = load %x_104
store %x_103, %98
next_iteration # -> $B16
}
}
store %x_112, 1i
loop [b: $B20, c: $B21] { # loop_3
$B20: { # body
%x_119:ptr<function, i32, read_write> = var
%x_113:ptr<function, i32, read_write> = var
%101:i32 = load %x_112
%102:bool = lte %101, 9i
if %102 [t: $B22, f: $B23] { # if_2
$B22: { # true
exit_if # if_2
}
$B23: { # false
exit_loop # loop_3
}
}
store %x_119, 0i
loop [b: $B24, c: $B25] { # loop_4
$B24: { # body
%x_131:ptr<function, i32, read_write> = var
%x_134:ptr<function, i32, read_write> = var
%x_136:ptr<function, i32, read_write> = var
%x_158:ptr<function, i32, read_write> = var
%x_161:ptr<function, i32, read_write> = var
%x_171:ptr<function, i32, read_write> = var
%109:i32 = load %x_119
%110:bool = lt %109, 9i
if %110 [t: $B26, f: $B27] { # if_3
$B26: { # true
exit_if # if_3
}
$B27: { # false
exit_loop # loop_4
}
}
%111:i32 = load %x_119
%112:i32 = load %x_112
%113:i32 = add %111, %112
%x_125:i32 = let %113
%115:i32 = sub %x_125, 1i
%x_126:i32 = let %115
%117:i32 = load %x_119
%118:i32 = load %x_112
%119:i32 = mul 2i, %118
%120:i32 = add %117, %119
%x_120:i32 = let %120
%122:i32 = sub %x_120, 1i
%123:i32 = min %122, 9i
%x_129:i32 = let %123
%125:i32 = load %x_119
store %x_131, %125
store %x_134, %x_125
%126:i32 = load %x_119
store %x_136, %126
loop [b: $B28, c: $B29] { # loop_5
$B28: { # body
%x_151:ptr<function, i32, read_write> = var
%x_154:ptr<function, i32, read_write> = var
%x_135:ptr<function, i32, read_write> = var
%x_137:ptr<function, i32, read_write> = var
%131:i32 = load %x_136
%132:bool = lte %131, %x_126
%133:i32 = load %x_134
%134:bool = lte %133, %x_129
%135:bool = and %132, %134
if %135 [t: $B30, f: $B31] { # if_4
$B30: { # true
exit_if # if_4
}
$B31: { # false
exit_loop # loop_5
}
}
%136:i32 = load %x_136
%x_143_save:i32 = let %136
%138:i32 = load %x_134
%x_145_save:i32 = let %138
%140:i32 = load %x_131
%141:i32 = add %140, 1i
%x_132:i32 = let %141
%143:i32 = load %x_136
%144:ptr<function, i32, read_write> = access %data, %143
%145:i32 = load %144
%146:i32 = load %x_134
%147:ptr<function, i32, read_write> = access %data, %146
%148:i32 = load %147
%149:bool = lt %145, %148
if %149 [t: $B32, f: $B33] { # if_5
$B32: { # true
%150:i32 = load %x_136
%151:i32 = add %150, 1i
store %x_151, %151
%152:i32 = load %x_131
%153:ptr<function, i32, read_write> = access %temp, %152
%154:ptr<function, i32, read_write> = access %data, %x_143_save
%155:i32 = load %154
store %153, %155
%156:i32 = load %x_134
store %x_135, %156
%157:i32 = load %x_151
store %x_137, %157
exit_if # if_5
}
$B33: { # false
%158:i32 = load %x_134
%159:i32 = add %158, 1i
store %x_154, %159
%160:i32 = load %x_131
%161:ptr<function, i32, read_write> = access %temp, %160
%162:ptr<function, i32, read_write> = access %data, %x_145_save
%163:i32 = load %162
store %161, %163
%164:i32 = load %x_154
store %x_135, %164
%165:i32 = load %x_136
store %x_137, %165
exit_if # if_5
}
}
continue # -> $B29
}
$B29: { # continuing
store %x_131, %x_132
%166:i32 = load %x_135
store %x_134, %166
%167:i32 = load %x_137
store %x_136, %167
next_iteration # -> $B28
}
}
%168:i32 = load %x_131
store %x_158, %168
%169:i32 = load %x_136
store %x_161, %169
loop [b: $B34, c: $B35] { # loop_6
$B34: { # body
%x_159:ptr<function, i32, read_write> = var
%x_162:ptr<function, i32, read_write> = var
%172:i32 = load %x_161
%173:bool = lt %172, 10i
%174:i32 = load %x_161
%175:bool = lte %174, %x_126
%176:bool = and %173, %175
if %176 [t: $B36, f: $B37] { # if_6
$B36: { # true
exit_if # if_6
}
$B37: { # false
exit_loop # loop_6
}
}
continue # -> $B35
}
$B35: { # continuing
%177:i32 = load %x_158
%178:i32 = add %177, 1i
store %x_159, %178
%179:i32 = load %x_161
%180:i32 = add %179, 1i
store %x_162, %180
%181:i32 = load %x_158
%182:ptr<function, i32, read_write> = access %temp, %181
%183:i32 = load %x_161
%184:ptr<function, i32, read_write> = access %data, %183
%185:i32 = load %184
store %182, %185
%186:i32 = load %x_159
store %x_158, %186
%187:i32 = load %x_162
store %x_161, %187
next_iteration # -> $B34
}
}
%188:i32 = load %x_119
store %x_171, %188
loop [b: $B38, c: $B39] { # loop_7
$B38: { # body
%x_172:ptr<function, i32, read_write> = var
%190:i32 = load %x_171
%191:bool = lte %190, %x_129
if %191 [t: $B40, f: $B41] { # if_7
$B40: { # true
exit_if # if_7
}
$B41: { # false
exit_loop # loop_7
}
}
continue # -> $B39
}
$B39: { # continuing
%192:i32 = load %x_171
%193:ptr<function, i32, read_write> = access %data, %192
%194:i32 = load %x_171
%195:ptr<function, i32, read_write> = access %temp, %194
%196:i32 = load %195
store %193, %196
%197:i32 = load %x_171
%198:i32 = add %197, 1i
store %x_172, %198
%199:i32 = load %x_172
store %x_171, %199
next_iteration # -> $B38
}
}
continue # -> $B25
}
$B25: { # continuing
store %x_119, %x_120
next_iteration # -> $B24
}
}
continue # -> $B21
}
$B21: { # continuing
%200:i32 = load %x_112
%201:i32 = mul 2i, %200
store %x_113, %201
%202:i32 = load %x_113
store %x_112, %202
next_iteration # -> $B20
}
}
%x_181:ptr<function, i32, read_write> = var
%x_199:ptr<function, f32, read_write> = var
%x_261:ptr<function, f32, read_write> = var
%206:f32 = load_vector_element %gl_FragCoord, 1u
%207:i32 = call %tint_f32_to_i32, %206
store %x_181, %207
%208:i32 = load %x_181
%209:bool = lt %208, 30i
if %209 [t: $B42, f: $B43] { # if_8
$B42: { # true
%210:ptr<function, i32, read_write> = access %data, 0i
%211:i32 = load %210
%212:f32 = convert %211
%213:f32 = mul %212, 0.10000000149011611938f
%214:f32 = add 0.5f, %213
store %x_190, %214
%215:f32 = load %x_190
store %x_263, %215
exit_if # if_8
}
$B43: { # false
%x_208:ptr<function, f32, read_write> = var
%x_260:ptr<function, f32, read_write> = var
%218:i32 = load %x_181
%219:bool = lt %218, 60i
if %219 [t: $B44, f: $B45] { # if_9
$B44: { # true
%220:ptr<function, i32, read_write> = access %data, 1i
%221:i32 = load %220
%222:f32 = convert %221
%223:f32 = mul %222, 0.10000000149011611938f
%224:f32 = add 0.5f, %223
store %x_199, %224
%225:f32 = load %x_199
store %x_262, %225
exit_if # if_9
}
$B45: { # false
%x_217:ptr<function, f32, read_write> = var
%x_259:ptr<function, f32, read_write> = var
%228:i32 = load %x_181
%229:bool = lt %228, 90i
if %229 [t: $B46, f: $B47] { # if_10
$B46: { # true
%230:ptr<function, i32, read_write> = access %data, 2i
%231:i32 = load %230
%232:f32 = convert %231
%233:f32 = mul %232, 0.10000000149011611938f
%234:f32 = add 0.5f, %233
store %x_208, %234
%235:f32 = load %x_208
store %x_261, %235
exit_if # if_10
}
$B47: { # false
%236:i32 = load %x_181
%237:bool = lt %236, 120i
if %237 [t: $B48, f: $B49] { # if_11
$B48: { # true
%238:ptr<function, i32, read_write> = access %data, 3i
%239:i32 = load %238
%240:f32 = convert %239
%241:f32 = mul %240, 0.10000000149011611938f
%242:f32 = add 0.5f, %241
store %x_217, %242
%243:f32 = load %x_217
store %x_260, %243
exit_if # if_11
}
$B49: { # false
%x_230:ptr<function, f32, read_write> = var
%x_258:ptr<function, f32, read_write> = var
%246:i32 = load %x_181
%247:bool = lt %246, 150i
if %247 [t: $B50, f: $B51] { # if_12
$B50: { # true
store %continue_execution, false
exit_if # if_12
}
$B51: { # false
%x_239:ptr<function, f32, read_write> = var
%x_257:ptr<function, f32, read_write> = var
%250:i32 = load %x_181
%251:bool = lt %250, 180i
if %251 [t: $B52, f: $B53] { # if_13
$B52: { # true
%252:ptr<function, i32, read_write> = access %data, 5i
%253:i32 = load %252
%254:f32 = convert %253
%255:f32 = mul %254, 0.10000000149011611938f
%256:f32 = add 0.5f, %255
store %x_230, %256
%257:f32 = load %x_230
store %x_259, %257
exit_if # if_13
}
$B53: { # false
%x_248:ptr<function, f32, read_write> = var
%x_256:ptr<function, f32, read_write> = var
%260:i32 = load %x_181
%261:bool = lt %260, 210i
if %261 [t: $B54, f: $B55] { # if_14
$B54: { # true
%262:ptr<function, i32, read_write> = access %data, 6i
%263:i32 = load %262
%264:f32 = convert %263
%265:f32 = mul %264, 0.10000000149011611938f
%266:f32 = add 0.5f, %265
store %x_239, %266
%267:f32 = load %x_239
store %x_258, %267
exit_if # if_14
}
$B55: { # false
%268:i32 = load %x_181
%269:bool = lt %268, 240i
if %269 [t: $B56, f: $B57] { # if_15
$B56: { # true
%270:ptr<function, i32, read_write> = access %data, 7i
%271:i32 = load %270
%272:f32 = convert %271
%273:f32 = mul %272, 0.10000000149011611938f
%274:f32 = add 0.5f, %273
store %x_248, %274
%275:f32 = load %x_248
store %x_257, %275
exit_if # if_15
}
$B57: { # false
%276:i32 = load %x_181
%277:bool = lt %276, 270i
if %277 [t: $B58, f: $B59] { # if_16
$B58: { # true
exit_if # if_16
}
$B59: { # false
store %continue_execution, false
exit_if # if_16
}
}
%278:ptr<function, i32, read_write> = access %data, 8i
%279:i32 = load %278
%280:f32 = convert %279
%281:f32 = mul %280, 0.10000000149011611938f
%282:f32 = add 0.5f, %281
store %x_256, %282
%283:f32 = load %x_256
store %x_257, %283
exit_if # if_15
}
}
%284:f32 = load %x_257
store %x_258, %284
exit_if # if_14
}
}
%285:f32 = load %x_258
store %x_259, %285
exit_if # if_13
}
}
exit_if # if_12
}
}
%286:f32 = load %x_259
store %x_260, %286
exit_if # if_11
}
}
%287:f32 = load %x_260
store %x_261, %287
exit_if # if_10
}
}
%288:f32 = load %x_261
store %x_262, %288
exit_if # if_9
}
}
%289:f32 = load %x_262
store %x_263, %289
exit_if # if_8
}
}
%290:f32 = load %x_263
%291:f32 = load %x_263
%292:f32 = load %x_263
%293:vec4<f32> = construct %290, %291, %292, 1.0f
store %x_GLF_color, %293
ret
}
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
$B60: {
store %gl_FragCoord, %gl_FragCoord_param
%296:void = call %main_1
%297:vec4<f32> = load %x_GLF_color
%298:main_out = construct %297
%299:bool = load %continue_execution
%300:bool = eq %299, false
if %300 [t: $B61] { # if_17
$B61: { # true
terminate_invocation
}
}
ret %298
}
}
%tint_f32_to_i32 = func(%value:f32):i32 {
$B62: {
%302:i32 = convert %value
%303:bool = gte %value, -2147483648.0f
%304:i32 = select -2147483648i, %302, %303
%305:bool = lte %value, 2147483520.0f
%306:i32 = select 2147483647i, %304, %305
ret %306
}
}
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. *
********************************************************************