blob: ac518cd9f8badb21f83049de4453b49c34314662 [file] [log] [blame]
SKIP: FAILED
../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: QuicksortObject = struct @align(4) {
numbers:array<i32, 10> @offset(0)
}
buf0 = struct @align(8) {
resolution:vec2<f32> @offset(0)
}
main_out = struct @align(16) {
frag_color_1:vec4<f32> @offset(0), @location(0)
gl_Position:vec4<f32> @offset(16), @builtin(position)
}
$B1: { # root
%obj:ptr<private, QuicksortObject, read_write> = var
%x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
%x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
%x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
%frag_color:ptr<private, vec4<f32>, read_write> = var
%gl_Position:ptr<private, vec4<f32>, read_write> = var
}
%main_1 = func():void {
$B2: {
%x_90:ptr<function, i32, read_write> = var
%x_91:ptr<function, i32, read_write> = var
%x_92:ptr<function, i32, read_write> = var
%x_93:ptr<function, i32, read_write> = var
%x_94:ptr<function, i32, read_write> = var
%x_95:ptr<function, i32, read_write> = var
%x_96:ptr<function, i32, read_write> = var
%x_97:ptr<function, i32, read_write> = var
%x_98:ptr<function, i32, read_write> = var
%x_99:ptr<function, i32, read_write> = var
%x_100:ptr<function, i32, read_write> = var
%x_101:ptr<function, i32, read_write> = var
%x_102:ptr<function, i32, read_write> = var
%x_103:ptr<function, array<i32, 10>, read_write> = var
%x_104:ptr<function, i32, read_write> = var
%x_105:ptr<function, i32, read_write> = var
%x_106:ptr<function, i32, read_write> = var
%i_2:ptr<function, i32, read_write> = var
%uv:ptr<function, vec2<f32>, read_write> = var
%color:ptr<function, vec3<f32>, read_write> = var
%28:vec4<f32> = load %x_GLF_pos
%29:vec4<f32> = add %28, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
%30:vec4<f32> = mul %29, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
store %x_GLF_FragCoord, %30
store %i_2, 0i
loop [b: $B3, c: $B4] { # loop_1
$B3: { # body
%31:i32 = load %i_2
%32:bool = lt %31, 10i
if %32 [t: $B5, f: $B6] { # if_1
$B5: { # true
exit_if # if_1
}
$B6: { # false
exit_loop # loop_1
}
}
%33:i32 = load %i_2
%x_117:i32 = let %33
%35:ptr<private, i32, read_write> = access %obj, 0u, %x_117
%36:i32 = load %i_2
%37:i32 = sub 10i, %36
store %35, %37
%38:i32 = load %i_2
%x_121:i32 = let %38
%40:ptr<private, i32, read_write> = access %obj, 0u, %x_121
%41:i32 = load %i_2
%42:ptr<private, i32, read_write> = access %obj, 0u, %41
%43:i32 = load %42
%44:i32 = load %i_2
%45:ptr<private, i32, read_write> = access %obj, 0u, %44
%46:i32 = load %45
%47:i32 = mul %43, %46
store %40, %47
continue # -> $B4
}
$B4: { # continuing
%48:i32 = load %i_2
%49:i32 = add %48, 1i
store %i_2, %49
next_iteration # -> $B3
}
}
store %x_100, 0i
store %x_101, 9i
store %x_102, -1i
%50:i32 = load %x_102
%51:i32 = add %50, 1i
%x_133:i32 = let %51
store %x_102, %x_133
%53:ptr<function, i32, read_write> = access %x_103, %x_133
%54:i32 = load %x_100
store %53, %54
%55:i32 = load %x_102
%56:i32 = add %55, 1i
%x_137:i32 = let %56
store %x_102, %x_137
%58:ptr<function, i32, read_write> = access %x_103, %x_137
%59:i32 = load %x_101
store %58, %59
loop [b: $B7, c: $B8] { # loop_2
$B7: { # body
%60:i32 = load %x_102
%61:bool = gte %60, 0i
if %61 [t: $B9, f: $B10] { # if_2
$B9: { # true
exit_if # if_2
}
$B10: { # false
exit_loop # loop_2
}
}
%62:i32 = load %x_102
%x_147:i32 = let %62
%64:i32 = load %x_102
%65:i32 = sub %64, 1i
store %x_102, %65
%66:ptr<function, i32, read_write> = access %x_103, %x_147
%67:i32 = load %66
store %x_101, %67
%68:i32 = load %x_102
%x_151:i32 = let %68
%70:i32 = load %x_102
%71:i32 = sub %70, 1i
store %x_102, %71
%72:ptr<function, i32, read_write> = access %x_103, %x_151
%73:i32 = load %72
store %x_100, %73
%74:i32 = load %x_100
store %x_105, %74
%75:i32 = load %x_101
store %x_106, %75
%76:i32 = load %x_106
%77:ptr<private, i32, read_write> = access %obj, 0u, %76
%78:i32 = load %77
store %x_92, %78
%79:i32 = load %x_105
%80:i32 = sub %79, 1i
store %x_93, %80
%81:i32 = load %x_105
store %x_94, %81
loop [b: $B11, c: $B12] { # loop_3
$B11: { # body
%82:i32 = load %x_94
%83:i32 = load %x_106
%84:i32 = sub %83, 1i
%85:bool = lte %82, %84
if %85 [t: $B13, f: $B14] { # if_3
$B13: { # true
exit_if # if_3
}
$B14: { # false
exit_loop # loop_3
}
}
%86:i32 = load %x_94
%87:ptr<private, i32, read_write> = access %obj, 0u, %86
%88:i32 = load %87
%89:i32 = load %x_92
%90:bool = lte %88, %89
if %90 [t: $B15] { # if_4
$B15: { # true
%91:i32 = load %x_93
%92:i32 = add %91, 1i
store %x_93, %92
%93:i32 = load %x_93
store %x_95, %93
%94:i32 = load %x_94
store %x_96, %94
%95:i32 = load %x_95
%96:ptr<private, i32, read_write> = access %obj, 0u, %95
%97:i32 = load %96
store %x_91, %97
%98:i32 = load %x_95
%x_186:i32 = let %98
%100:ptr<private, i32, read_write> = access %obj, 0u, %x_186
%101:i32 = load %x_96
%102:ptr<private, i32, read_write> = access %obj, 0u, %101
%103:i32 = load %102
store %100, %103
%104:i32 = load %x_96
%x_191:i32 = let %104
%106:ptr<private, i32, read_write> = access %obj, 0u, %x_191
%107:i32 = load %x_91
store %106, %107
exit_if # if_4
}
}
continue # -> $B12
}
$B12: { # continuing
%108:i32 = load %x_94
%109:i32 = add %108, 1i
store %x_94, %109
next_iteration # -> $B11
}
}
%110:i32 = load %x_93
%111:i32 = add %110, 1i
store %x_97, %111
%112:i32 = load %x_106
store %x_98, %112
%113:i32 = load %x_97
%114:ptr<private, i32, read_write> = access %obj, 0u, %113
%115:i32 = load %114
store %x_90, %115
%116:i32 = load %x_97
%x_202:i32 = let %116
%118:ptr<private, i32, read_write> = access %obj, 0u, %x_202
%119:i32 = load %x_98
%120:ptr<private, i32, read_write> = access %obj, 0u, %119
%121:i32 = load %120
store %118, %121
%122:i32 = load %x_98
%x_207:i32 = let %122
%124:ptr<private, i32, read_write> = access %obj, 0u, %x_207
%125:i32 = load %x_90
store %124, %125
%126:i32 = load %x_93
%127:i32 = add %126, 1i
store %x_99, %127
%128:i32 = load %x_99
store %x_104, %128
%129:i32 = load %x_104
%130:i32 = sub %129, 1i
%131:i32 = load %x_100
%132:bool = gt %130, %131
if %132 [t: $B16] { # if_5
$B16: { # true
%133:i32 = load %x_102
%134:i32 = add %133, 1i
%x_220:i32 = let %134
store %x_102, %x_220
%136:ptr<function, i32, read_write> = access %x_103, %x_220
%137:i32 = load %x_100
store %136, %137
%138:i32 = load %x_102
%139:i32 = add %138, 1i
%x_224:i32 = let %139
store %x_102, %x_224
%141:ptr<function, i32, read_write> = access %x_103, %x_224
%142:i32 = load %x_104
%143:i32 = sub %142, 1i
store %141, %143
exit_if # if_5
}
}
%144:i32 = load %x_104
%145:i32 = add %144, 1i
%146:i32 = load %x_101
%147:bool = lt %145, %146
if %147 [t: $B17] { # if_6
$B17: { # true
%148:i32 = load %x_102
%149:i32 = add %148, 1i
%x_235:i32 = let %149
store %x_102, %x_235
%151:ptr<function, i32, read_write> = access %x_103, %x_235
%152:i32 = load %x_104
%153:i32 = add %152, 1i
store %151, %153
%154:i32 = load %x_102
%155:i32 = add %154, 1i
%x_240:i32 = let %155
store %x_102, %x_240
%157:ptr<function, i32, read_write> = access %x_103, %x_240
%158:i32 = load %x_101
store %157, %158
exit_if # if_6
}
}
continue # -> $B8
}
$B8: { # continuing
next_iteration # -> $B7
}
}
%159:vec4<f32> = load %x_GLF_FragCoord
%160:vec2<f32> = swizzle %159, xy
%161:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
%162:vec2<f32> = load %161
%163:vec2<f32> = div %160, %162
store %uv, %163
store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
%164:f32 = load_vector_element %color, 0u
%165:f32 = let %164
%166:ptr<private, i32, read_write> = access %obj, 0u, 0i
%167:i32 = load %166
%168:f32 = convert %167
%169:f32 = add %165, %168
store_vector_element %color, 0u, %169
%170:f32 = load_vector_element %uv, 0u
%171:bool = gt %170, 0.25f
if %171 [t: $B18] { # if_7
$B18: { # true
%172:f32 = load_vector_element %color, 0u
%173:f32 = let %172
%174:ptr<private, i32, read_write> = access %obj, 0u, 1i
%175:i32 = load %174
%176:f32 = convert %175
%177:f32 = add %173, %176
store_vector_element %color, 0u, %177
exit_if # if_7
}
}
%178:f32 = load_vector_element %uv, 0u
%179:bool = gt %178, 0.5f
if %179 [t: $B19] { # if_8
$B19: { # true
%180:f32 = load_vector_element %color, 1u
%181:f32 = let %180
%182:ptr<private, i32, read_write> = access %obj, 0u, 2i
%183:i32 = load %182
%184:f32 = convert %183
%185:f32 = add %181, %184
store_vector_element %color, 1u, %185
exit_if # if_8
}
}
%186:f32 = load_vector_element %uv, 0u
%187:bool = gt %186, 0.75f
if %187 [t: $B20] { # if_9
$B20: { # true
%188:f32 = load_vector_element %color, 2u
%189:f32 = let %188
%190:ptr<private, i32, read_write> = access %obj, 0u, 3i
%191:i32 = load %190
%192:f32 = convert %191
%193:f32 = add %189, %192
store_vector_element %color, 2u, %193
exit_if # if_9
}
}
%194:f32 = load_vector_element %color, 1u
%195:f32 = let %194
%196:ptr<private, i32, read_write> = access %obj, 0u, 4i
%197:i32 = load %196
%198:f32 = convert %197
%199:f32 = add %195, %198
store_vector_element %color, 1u, %199
%200:f32 = load_vector_element %uv, 1u
%201:bool = gt %200, 0.25f
if %201 [t: $B21] { # if_10
$B21: { # true
%202:f32 = load_vector_element %color, 0u
%203:f32 = let %202
%204:ptr<private, i32, read_write> = access %obj, 0u, 5i
%205:i32 = load %204
%206:f32 = convert %205
%207:f32 = add %203, %206
store_vector_element %color, 0u, %207
exit_if # if_10
}
}
%208:f32 = load_vector_element %uv, 1u
%209:bool = gt %208, 0.5f
if %209 [t: $B22] { # if_11
$B22: { # true
%210:f32 = load_vector_element %color, 1u
%211:f32 = let %210
%212:ptr<private, i32, read_write> = access %obj, 0u, 6i
%213:i32 = load %212
%214:f32 = convert %213
%215:f32 = add %211, %214
store_vector_element %color, 1u, %215
exit_if # if_11
}
}
%216:f32 = load_vector_element %uv, 1u
%217:bool = gt %216, 0.75f
if %217 [t: $B23] { # if_12
$B23: { # true
%218:f32 = load_vector_element %color, 2u
%219:f32 = let %218
%220:ptr<private, i32, read_write> = access %obj, 0u, 7i
%221:i32 = load %220
%222:f32 = convert %221
%223:f32 = add %219, %222
store_vector_element %color, 2u, %223
exit_if # if_12
}
}
%224:f32 = load_vector_element %color, 2u
%225:f32 = let %224
%226:ptr<private, i32, read_write> = access %obj, 0u, 8i
%227:i32 = load %226
%228:f32 = convert %227
%229:f32 = add %225, %228
store_vector_element %color, 2u, %229
%230:f32 = load_vector_element %uv, 0u
%231:f32 = load_vector_element %uv, 1u
%232:f32 = sub %230, %231
%233:f32 = abs %232
%234:bool = lt %233, 0.25f
if %234 [t: $B24] { # if_13
$B24: { # true
%235:f32 = load_vector_element %color, 0u
%236:f32 = let %235
%237:ptr<private, i32, read_write> = access %obj, 0u, 9i
%238:i32 = load %237
%239:f32 = convert %238
%240:f32 = add %236, %239
store_vector_element %color, 0u, %240
exit_if # if_13
}
}
%241:vec3<f32> = load %color
%242:vec3<f32> = normalize %241
%x_358:vec3<f32> = let %242
%244:f32 = access %x_358, 0u
%245:f32 = access %x_358, 1u
%246:f32 = access %x_358, 2u
%247:vec4<f32> = construct %244, %245, %246, 1.0f
store %frag_color, %247
%248:vec4<f32> = load %x_GLF_pos
store %gl_Position, %248
ret
}
}
%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out {
$B25: {
store %x_GLF_pos, %x_GLF_pos_param
%251:void = call %main_1
%252:vec4<f32> = load %frag_color
%253:vec4<f32> = load %gl_Position
%254:main_out = construct %252, %253
ret %254
}
}
%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void {
$B26: {
%temp:ptr<function, i32, read_write> = var
%259:i32 = load %i
%260:ptr<private, i32, read_write> = access %obj, 0u, %259
%261:i32 = load %260
store %temp, %261
%262:i32 = load %i
%x_369:i32 = let %262
%264:ptr<private, i32, read_write> = access %obj, 0u, %x_369
%265:i32 = load %j
%266:ptr<private, i32, read_write> = access %obj, 0u, %265
%267:i32 = load %266
store %264, %267
%268:i32 = load %j
%x_374:i32 = let %268
%270:ptr<private, i32, read_write> = access %obj, 0u, %x_374
%271:i32 = load %temp
store %270, %271
ret
}
}
%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 {
$B27: {
%pivot:ptr<function, i32, read_write> = var
%i_1:ptr<function, i32, read_write> = var
%j_1:ptr<function, i32, read_write> = var
%param:ptr<function, i32, read_write> = var
%param_1:ptr<function, i32, read_write> = var
%param_2:ptr<function, i32, read_write> = var
%param_3:ptr<function, i32, read_write> = var
%282:i32 = load %h
%283:ptr<private, i32, read_write> = access %obj, 0u, %282
%284:i32 = load %283
store %pivot, %284
%285:i32 = load %l
%286:i32 = sub %285, 1i
store %i_1, %286
%287:i32 = load %l
store %j_1, %287
loop [b: $B28, c: $B29] { # loop_4
$B28: { # body
%288:i32 = load %j_1
%289:i32 = load %h
%290:i32 = sub %289, 1i
%291:bool = lte %288, %290
if %291 [t: $B30, f: $B31] { # if_14
$B30: { # true
exit_if # if_14
}
$B31: { # false
exit_loop # loop_4
}
}
%292:i32 = load %j_1
%293:ptr<private, i32, read_write> = access %obj, 0u, %292
%294:i32 = load %293
%295:i32 = load %pivot
%296:bool = lte %294, %295
if %296 [t: $B32] { # if_15
$B32: { # true
%297:i32 = load %i_1
%298:i32 = add %297, 1i
store %i_1, %298
%299:i32 = load %i_1
store %param, %299
%300:i32 = load %j_1
store %param_1, %300
%301:void = call %swap_i1_i1_, %param, %param_1
exit_if # if_15
}
}
continue # -> $B29
}
$B29: { # continuing
%302:i32 = load %j_1
%303:i32 = add %302, 1i
store %j_1, %303
next_iteration # -> $B28
}
}
%304:i32 = load %i_1
%305:i32 = add %304, 1i
store %param_2, %305
%306:i32 = load %h
store %param_3, %306
%307:void = call %swap_i1_i1_, %param_2, %param_3
%308:i32 = load %i_1
%x_411:i32 = let %308
%310:i32 = add %x_411, 1i
ret %310
}
}
%quicksort_ = func():void {
$B33: {
%l_1:ptr<function, i32, read_write> = var
%h_1:ptr<function, i32, read_write> = var
%top:ptr<function, i32, read_write> = var
%stack:ptr<function, array<i32, 10>, read_write> = var
%p:ptr<function, i32, read_write> = var
%param_4:ptr<function, i32, read_write> = var
%param_5:ptr<function, i32, read_write> = var
store %l_1, 0i
store %h_1, 9i
store %top, -1i
%319:i32 = load %top
%320:i32 = add %319, 1i
%x_415:i32 = let %320
store %top, %x_415
%322:ptr<function, i32, read_write> = access %stack, %x_415
%323:i32 = load %l_1
store %322, %323
%324:i32 = load %top
%325:i32 = add %324, 1i
%x_419:i32 = let %325
store %top, %x_419
%327:ptr<function, i32, read_write> = access %stack, %x_419
%328:i32 = load %h_1
store %327, %328
loop [b: $B34, c: $B35] { # loop_5
$B34: { # body
%329:i32 = load %top
%330:bool = gte %329, 0i
if %330 [t: $B36, f: $B37] { # if_16
$B36: { # true
exit_if # if_16
}
$B37: { # false
exit_loop # loop_5
}
}
%331:i32 = load %top
%x_429:i32 = let %331
%333:i32 = load %top
%334:i32 = sub %333, 1i
store %top, %334
%335:ptr<function, i32, read_write> = access %stack, %x_429
%336:i32 = load %335
store %h_1, %336
%337:i32 = load %top
%x_433:i32 = let %337
%339:i32 = load %top
%340:i32 = sub %339, 1i
store %top, %340
%341:ptr<function, i32, read_write> = access %stack, %x_433
%342:i32 = load %341
store %l_1, %342
%343:i32 = load %l_1
store %param_4, %343
%344:i32 = load %h_1
store %param_5, %344
%345:i32 = call %performPartition_i1_i1_, %param_4, %param_5
%x_439:i32 = let %345
store %p, %x_439
%347:i32 = load %p
%348:i32 = sub %347, 1i
%349:i32 = load %l_1
%350:bool = gt %348, %349
if %350 [t: $B38] { # if_17
$B38: { # true
%351:i32 = load %top
%352:i32 = add %351, 1i
%x_447:i32 = let %352
store %top, %x_447
%354:ptr<function, i32, read_write> = access %stack, %x_447
%355:i32 = load %l_1
store %354, %355
%356:i32 = load %top
%357:i32 = add %356, 1i
%x_451:i32 = let %357
store %top, %x_451
%359:ptr<function, i32, read_write> = access %stack, %x_451
%360:i32 = load %p
%361:i32 = sub %360, 1i
store %359, %361
exit_if # if_17
}
}
%362:i32 = load %p
%363:i32 = add %362, 1i
%364:i32 = load %h_1
%365:bool = lt %363, %364
if %365 [t: $B39] { # if_18
$B39: { # true
%366:i32 = load %top
%367:i32 = add %366, 1i
%x_462:i32 = let %367
store %top, %x_462
%369:ptr<function, i32, read_write> = access %stack, %x_462
%370:i32 = load %p
%371:i32 = add %370, 1i
store %369, %371
%372:i32 = load %top
%373:i32 = add %372, 1i
%x_467:i32 = let %373
store %top, %x_467
%375:ptr<function, i32, read_write> = access %stack, %x_467
%376:i32 = load %h_1
store %375, %376
exit_if # if_18
}
}
continue # -> $B35
}
$B35: { # continuing
next_iteration # -> $B34
}
}
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. *
********************************************************************