blob: 55888a571d05f502b7ba1b3c4a6682634586092e [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_102:ptr<function, i32, read_write> = var
%x_111:ptr<function, i32, read_write> = var
%x_189:ptr<function, f32, read_write> = var
%x_261:ptr<function, f32, read_write> = var
%x_262: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_99:ptr<function, i32, read_write> = var
%x_97:ptr<function, i32, read_write> = var
%x_95:ptr<function, i32, read_write> = var
%x_93:ptr<function, i32, read_write> = var
%x_91:ptr<function, i32, read_write> = var
%x_89:ptr<function, i32, read_write> = var
%x_87:ptr<function, i32, read_write> = var
%x_85:ptr<function, i32, read_write> = var
%x_83:ptr<function, i32, read_write> = var
%x_81:ptr<function, i32, read_write> = var
%x_64:ptr<function, i32, read_write> = var
%29:i32 = load %x_63
%30:i32 = add %29, 1i
store %x_64, %30
%31:i32 = load %x_63
switch %31 [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
%32:i32 = load %x_63
%33:ptr<function, i32, read_write> = access %data, %32
store %33, -5i
%34:i32 = load %x_63
%35:i32 = add %34, 1i
store %x_99, %35
%36:i32 = load %x_99
store %x_64, %36
exit_switch # switch_1
}
$B6: { # case
%37:i32 = load %x_63
%38:ptr<function, i32, read_write> = access %data, %37
store %38, -4i
%39:i32 = load %x_63
%40:i32 = add %39, 1i
store %x_97, %40
%41:i32 = load %x_97
store %x_64, %41
exit_switch # switch_1
}
$B7: { # case
%42:i32 = load %x_63
%43:ptr<function, i32, read_write> = access %data, %42
store %43, -3i
%44:i32 = load %x_63
%45:i32 = add %44, 1i
store %x_95, %45
%46:i32 = load %x_95
store %x_64, %46
exit_switch # switch_1
}
$B8: { # case
%47:i32 = load %x_63
%48:ptr<function, i32, read_write> = access %data, %47
store %48, -2i
%49:i32 = load %x_63
%50:i32 = add %49, 1i
store %x_93, %50
%51:i32 = load %x_93
store %x_64, %51
exit_switch # switch_1
}
$B9: { # case
%52:i32 = load %x_63
%53:ptr<function, i32, read_write> = access %data, %52
store %53, -1i
%54:i32 = load %x_63
%55:i32 = add %54, 1i
store %x_91, %55
%56:i32 = load %x_91
store %x_64, %56
exit_switch # switch_1
}
$B10: { # case
%57:i32 = load %x_63
%58:ptr<function, i32, read_write> = access %data, %57
store %58, 0i
%59:i32 = load %x_63
%60:i32 = add %59, 1i
store %x_89, %60
%61:i32 = load %x_89
store %x_64, %61
exit_switch # switch_1
}
$B11: { # case
%62:i32 = load %x_63
%63:ptr<function, i32, read_write> = access %data, %62
store %63, 1i
%64:i32 = load %x_63
%65:i32 = add %64, 1i
store %x_87, %65
%66:i32 = load %x_87
store %x_64, %66
exit_switch # switch_1
}
$B12: { # case
%67:i32 = load %x_63
%68:ptr<function, i32, read_write> = access %data, %67
store %68, 2i
%69:i32 = load %x_63
%70:i32 = add %69, 1i
store %x_85, %70
%71:i32 = load %x_85
store %x_64, %71
exit_switch # switch_1
}
$B13: { # case
%72:i32 = load %x_63
%73:ptr<function, i32, read_write> = access %data, %72
store %73, 3i
%74:i32 = load %x_63
%75:i32 = add %74, 1i
store %x_83, %75
%76:i32 = load %x_83
store %x_64, %76
exit_switch # switch_1
}
$B14: { # case
%77:i32 = load %x_63
%78:ptr<function, i32, read_write> = access %data, %77
store %78, 4i
%79:i32 = load %x_63
%80:i32 = add %79, 1i
store %x_81, %80
%81:i32 = load %x_81
store %x_64, %81
exit_switch # switch_1
}
$B15: { # case
exit_switch # switch_1
}
}
continue # -> $B4
}
$B4: { # continuing
%82:i32 = load %x_64
store %x_63, %82
%83:i32 = load %x_64
%84:bool = lt %83, 10i
%85:bool = eq %84, false
break_if %85 # -> [t: exit_loop loop_1, f: $B3]
}
}
store %x_102, 0i
loop [b: $B16, c: $B17] { # loop_2
$B16: { # body
%x_103:ptr<function, i32, read_write> = var
%87:i32 = load %x_102
%88:bool = lt %87, 10i
if %88 [t: $B18, f: $B19] { # if_1
$B18: { # true
exit_if # if_1
}
$B19: { # false
exit_loop # loop_2
}
}
continue # -> $B17
}
$B17: { # continuing
%89:i32 = load %x_102
%90:ptr<function, i32, read_write> = access %temp, %89
%91:i32 = load %x_102
%92:ptr<function, i32, read_write> = access %data, %91
%93:i32 = load %92
store %90, %93
%94:i32 = load %x_102
%95:i32 = add %94, 1i
store %x_103, %95
%96:i32 = load %x_103
store %x_102, %96
next_iteration # -> $B16
}
}
store %x_111, 1i
loop [b: $B20, c: $B21] { # loop_3
$B20: { # body
%x_118:ptr<function, i32, read_write> = var
%x_112:ptr<function, i32, read_write> = var
%99:i32 = load %x_111
%100:bool = lte %99, 9i
if %100 [t: $B22, f: $B23] { # if_2
$B22: { # true
exit_if # if_2
}
$B23: { # false
exit_loop # loop_3
}
}
store %x_118, 0i
loop [b: $B24, c: $B25] { # loop_4
$B24: { # body
%x_130:ptr<function, i32, read_write> = var
%x_133:ptr<function, i32, read_write> = var
%x_135:ptr<function, i32, read_write> = var
%x_157:ptr<function, i32, read_write> = var
%x_160:ptr<function, i32, read_write> = var
%x_170:ptr<function, i32, read_write> = var
%107:i32 = load %x_118
%108:bool = lt %107, 9i
if %108 [t: $B26, f: $B27] { # if_3
$B26: { # true
exit_if # if_3
}
$B27: { # false
exit_loop # loop_4
}
}
%109:i32 = load %x_118
%110:i32 = load %x_111
%111:i32 = add %109, %110
%x_124:i32 = let %111
%113:i32 = sub %x_124, 1i
%x_125:i32 = let %113
%115:i32 = load %x_118
%116:i32 = load %x_111
%117:i32 = mul 2i, %116
%118:i32 = add %115, %117
%x_119:i32 = let %118
%120:i32 = sub %x_119, 1i
%121:i32 = min %120, 9i
%x_128:i32 = let %121
%123:i32 = load %x_118
store %x_130, %123
store %x_133, %x_124
%124:i32 = load %x_118
store %x_135, %124
loop [b: $B28, c: $B29] { # loop_5
$B28: { # body
%x_150:ptr<function, i32, read_write> = var
%x_153:ptr<function, i32, read_write> = var
%x_134:ptr<function, i32, read_write> = var
%x_136:ptr<function, i32, read_write> = var
%129:i32 = load %x_135
%130:bool = lte %129, %x_125
%131:i32 = load %x_133
%132:bool = lte %131, %x_128
%133:bool = and %130, %132
if %133 [t: $B30, f: $B31] { # if_4
$B30: { # true
exit_if # if_4
}
$B31: { # false
exit_loop # loop_5
}
}
%134:i32 = load %x_135
%x_142_save:i32 = let %134
%136:i32 = load %x_133
%x_144_save:i32 = let %136
%138:i32 = load %x_130
%139:i32 = add %138, 1i
%x_131:i32 = let %139
%141:i32 = load %x_135
%142:ptr<function, i32, read_write> = access %data, %141
%143:i32 = load %142
%144:i32 = load %x_133
%145:ptr<function, i32, read_write> = access %data, %144
%146:i32 = load %145
%147:bool = lt %143, %146
if %147 [t: $B32, f: $B33] { # if_5
$B32: { # true
%148:i32 = load %x_135
%149:i32 = add %148, 1i
store %x_150, %149
%150:i32 = load %x_130
%151:ptr<function, i32, read_write> = access %temp, %150
%152:ptr<function, i32, read_write> = access %data, %x_142_save
%153:i32 = load %152
store %151, %153
%154:i32 = load %x_133
store %x_134, %154
%155:i32 = load %x_150
store %x_136, %155
exit_if # if_5
}
$B33: { # false
%156:i32 = load %x_133
%157:i32 = add %156, 1i
store %x_153, %157
%158:i32 = load %x_130
%159:ptr<function, i32, read_write> = access %temp, %158
%160:ptr<function, i32, read_write> = access %data, %x_144_save
%161:i32 = load %160
store %159, %161
%162:i32 = load %x_153
store %x_134, %162
%163:i32 = load %x_135
store %x_136, %163
exit_if # if_5
}
}
continue # -> $B29
}
$B29: { # continuing
store %x_130, %x_131
%164:i32 = load %x_134
store %x_133, %164
%165:i32 = load %x_136
store %x_135, %165
next_iteration # -> $B28
}
}
%166:i32 = load %x_130
store %x_157, %166
%167:i32 = load %x_135
store %x_160, %167
loop [b: $B34, c: $B35] { # loop_6
$B34: { # body
%x_158:ptr<function, i32, read_write> = var
%x_161:ptr<function, i32, read_write> = var
%170:i32 = load %x_160
%171:bool = lt %170, 10i
%172:i32 = load %x_160
%173:bool = lte %172, %x_125
%174:bool = and %171, %173
if %174 [t: $B36, f: $B37] { # if_6
$B36: { # true
exit_if # if_6
}
$B37: { # false
exit_loop # loop_6
}
}
continue # -> $B35
}
$B35: { # continuing
%175:i32 = load %x_157
%176:i32 = add %175, 1i
store %x_158, %176
%177:i32 = load %x_160
%178:i32 = add %177, 1i
store %x_161, %178
%179:i32 = load %x_157
%180:ptr<function, i32, read_write> = access %temp, %179
%181:i32 = load %x_160
%182:ptr<function, i32, read_write> = access %data, %181
%183:i32 = load %182
store %180, %183
%184:i32 = load %x_158
store %x_157, %184
%185:i32 = load %x_161
store %x_160, %185
next_iteration # -> $B34
}
}
%186:i32 = load %x_118
store %x_170, %186
loop [b: $B38, c: $B39] { # loop_7
$B38: { # body
%x_171:ptr<function, i32, read_write> = var
%188:i32 = load %x_170
%189:bool = lte %188, %x_128
if %189 [t: $B40, f: $B41] { # if_7
$B40: { # true
exit_if # if_7
}
$B41: { # false
exit_loop # loop_7
}
}
continue # -> $B39
}
$B39: { # continuing
%190:i32 = load %x_170
%191:ptr<function, i32, read_write> = access %data, %190
%192:i32 = load %x_170
%193:ptr<function, i32, read_write> = access %temp, %192
%194:i32 = load %193
store %191, %194
%195:i32 = load %x_170
%196:i32 = add %195, 1i
store %x_171, %196
%197:i32 = load %x_171
store %x_170, %197
next_iteration # -> $B38
}
}
continue # -> $B25
}
$B25: { # continuing
store %x_118, %x_119
next_iteration # -> $B24
}
}
continue # -> $B21
}
$B21: { # continuing
%198:i32 = load %x_111
%199:i32 = mul 2i, %198
store %x_112, %199
%200:i32 = load %x_112
store %x_111, %200
next_iteration # -> $B20
}
}
%x_180:ptr<function, i32, read_write> = var
%x_198:ptr<function, f32, read_write> = var
%x_260:ptr<function, f32, read_write> = var
%204:f32 = load_vector_element %gl_FragCoord, 1u
%205:i32 = call %tint_f32_to_i32, %204
store %x_180, %205
%206:i32 = load %x_180
%207:bool = lt %206, 30i
if %207 [t: $B42, f: $B43] { # if_8
$B42: { # true
%208:ptr<function, i32, read_write> = access %data, 0i
%209:i32 = load %208
%210:f32 = convert %209
%211:f32 = mul %210, 0.10000000149011611938f
%212:f32 = add 0.5f, %211
store %x_189, %212
%213:f32 = load %x_189
store %x_262, %213
exit_if # if_8
}
$B43: { # false
%x_207:ptr<function, f32, read_write> = var
%x_259:ptr<function, f32, read_write> = var
%216:i32 = load %x_180
%217:bool = lt %216, 60i
if %217 [t: $B44, f: $B45] { # if_9
$B44: { # true
%218:ptr<function, i32, read_write> = access %data, 1i
%219:i32 = load %218
%220:f32 = convert %219
%221:f32 = mul %220, 0.10000000149011611938f
%222:f32 = add 0.5f, %221
store %x_198, %222
%223:f32 = load %x_198
store %x_261, %223
exit_if # if_9
}
$B45: { # false
%x_216:ptr<function, f32, read_write> = var
%x_258:ptr<function, f32, read_write> = var
%226:i32 = load %x_180
%227:bool = lt %226, 90i
if %227 [t: $B46, f: $B47] { # if_10
$B46: { # true
%228:ptr<function, i32, read_write> = access %data, 2i
%229:i32 = load %228
%230:f32 = convert %229
%231:f32 = mul %230, 0.10000000149011611938f
%232:f32 = add 0.5f, %231
store %x_207, %232
%233:f32 = load %x_207
store %x_260, %233
exit_if # if_10
}
$B47: { # false
%234:i32 = load %x_180
%235:bool = lt %234, 120i
if %235 [t: $B48, f: $B49] { # if_11
$B48: { # true
%236:ptr<function, i32, read_write> = access %data, 3i
%237:i32 = load %236
%238:f32 = convert %237
%239:f32 = mul %238, 0.10000000149011611938f
%240:f32 = add 0.5f, %239
store %x_216, %240
%241:f32 = load %x_216
store %x_259, %241
exit_if # if_11
}
$B49: { # false
%x_229:ptr<function, f32, read_write> = var
%x_257:ptr<function, f32, read_write> = var
%244:i32 = load %x_180
%245:bool = lt %244, 150i
if %245 [t: $B50, f: $B51] { # if_12
$B50: { # true
store %continue_execution, false
exit_if # if_12
}
$B51: { # false
%x_238:ptr<function, f32, read_write> = var
%x_256:ptr<function, f32, read_write> = var
%248:i32 = load %x_180
%249:bool = lt %248, 180i
if %249 [t: $B52, f: $B53] { # if_13
$B52: { # true
%250:ptr<function, i32, read_write> = access %data, 5i
%251:i32 = load %250
%252:f32 = convert %251
%253:f32 = mul %252, 0.10000000149011611938f
%254:f32 = add 0.5f, %253
store %x_229, %254
%255:f32 = load %x_229
store %x_258, %255
exit_if # if_13
}
$B53: { # false
%x_247:ptr<function, f32, read_write> = var
%x_255:ptr<function, f32, read_write> = var
%258:i32 = load %x_180
%259:bool = lt %258, 210i
if %259 [t: $B54, f: $B55] { # if_14
$B54: { # true
%260:ptr<function, i32, read_write> = access %data, 6i
%261:i32 = load %260
%262:f32 = convert %261
%263:f32 = mul %262, 0.10000000149011611938f
%264:f32 = add 0.5f, %263
store %x_238, %264
%265:f32 = load %x_238
store %x_257, %265
exit_if # if_14
}
$B55: { # false
%266:i32 = load %x_180
%267:bool = lt %266, 240i
if %267 [t: $B56, f: $B57] { # if_15
$B56: { # true
%268:ptr<function, i32, read_write> = access %data, 7i
%269:i32 = load %268
%270:f32 = convert %269
%271:f32 = mul %270, 0.10000000149011611938f
%272:f32 = add 0.5f, %271
store %x_247, %272
%273:f32 = load %x_247
store %x_256, %273
exit_if # if_15
}
$B57: { # false
%274:i32 = load %x_180
%275:bool = lt %274, 270i
if %275 [t: $B58, f: $B59] { # if_16
$B58: { # true
exit_if # if_16
}
$B59: { # false
store %continue_execution, false
exit_if # if_16
}
}
%276:ptr<function, i32, read_write> = access %data, 8i
%277:i32 = load %276
%278:f32 = convert %277
%279:f32 = mul %278, 0.10000000149011611938f
%280:f32 = add 0.5f, %279
store %x_255, %280
%281:f32 = load %x_255
store %x_256, %281
exit_if # if_15
}
}
%282:f32 = load %x_256
store %x_257, %282
exit_if # if_14
}
}
%283:f32 = load %x_257
store %x_258, %283
exit_if # if_13
}
}
exit_if # if_12
}
}
%284:f32 = load %x_258
store %x_259, %284
exit_if # if_11
}
}
%285:f32 = load %x_259
store %x_260, %285
exit_if # if_10
}
}
%286:f32 = load %x_260
store %x_261, %286
exit_if # if_9
}
}
%287:f32 = load %x_261
store %x_262, %287
exit_if # if_8
}
}
%288:f32 = load %x_262
%289:f32 = load %x_262
%290:f32 = load %x_262
%291:vec4<f32> = construct %288, %289, %290, 1.0f
store %x_GLF_color, %291
ret
}
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
$B60: {
store %gl_FragCoord, %gl_FragCoord_param
%294:void = call %main_1
%295:vec4<f32> = load %x_GLF_color
%296:main_out = construct %295
%297:bool = load %continue_execution
%298:bool = eq %297, false
if %298 [t: $B61] { # if_17
$B61: { # true
terminate_invocation
}
}
ret %296
}
}
%tint_f32_to_i32 = func(%value:f32):i32 {
$B62: {
%300:i32 = convert %value
%301:bool = gte %value, -2147483648.0f
%302:i32 = select -2147483648i, %300, %301
%303:bool = lte %value, 2147483520.0f
%304:i32 = select 2147483647i, %302, %303
ret %304
}
}
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. *
********************************************************************