dawn-cmake/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-cop.../1.spvasm.expected.fxc.hlsl

391 lines
9.7 KiB
HLSL
Raw Normal View History

SKIP: FAILED
static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
cbuffer cbuffer_x_7 : register(b0) {
uint4 x_7[1];
};
static int map[256] = (int[256])0;
static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
int tint_mod(int lhs, int rhs) {
const int rhs_or_one = (((rhs == 0) | ((lhs == -2147483648) & (rhs == -1))) ? 1 : rhs);
if (any(((uint((lhs | rhs_or_one)) & 2147483648u) != 0u))) {
return (lhs - ((lhs / rhs_or_one) * rhs_or_one));
} else {
return (lhs % rhs_or_one);
}
}
void main_1() {
float2 pos = float2(0.0f, 0.0f);
int2 ipos = int2(0, 0);
int i = 0;
int2 p = int2(0, 0);
bool canwalk = false;
int v = 0;
int directions = 0;
int j = 0;
int d = 0;
const float4 x_59 = gl_FragCoord;
const float2 x_62 = asfloat(x_7[0].xy);
pos = (float2(x_59.x, x_59.y) / x_62);
const float x_65 = pos.x;
const float x_69 = pos.y;
ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
i = 0;
while (true) {
const int x_77 = i;
if ((x_77 < 256)) {
} else {
break;
}
const int x_80 = i;
map[x_80] = 0;
{
const int x_82 = i;
i = (x_82 + 1);
}
}
p = (0).xx;
canwalk = true;
v = 0;
tint/hlsl: remove [loop] attribute on all loops I added the forcing of the "loop" attribute to all loops to address FXC failing on uniformity errors related to gradients in loops. Since then, Tint now implements UA and it recently became an error, so we no longer need this hack. As a result, FXC is now better able to cope with loops that it determines executes 0 times. Most e2e tests are affected because so many use loops, but 27 tests that were previously failing are now passing with this change: tint/bug/tint/1538.wgsl.expected.fxc.hlsl tint/bug/tint/1604.wgsl.expected.fxc.hlsl tint/bug/tint/1605.wgsl.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.fxc.hlsl tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.fxc.hlsl tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.fxc.hlsl Bug: tint:1522 Bug: tint:1538 Bug: tint:1604 Bug: tint:1605 Change-Id: I530b846b6b8df122ab351ff7b85d3e1c9ac11526 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/104121 Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
2022-09-29 16:53:58 +00:00
while (true) {
bool x_104 = false;
bool x_105 = false;
bool x_124 = false;
bool x_125 = false;
bool x_144 = false;
bool x_145 = false;
bool x_164 = false;
bool x_165 = false;
const int x_88 = v;
v = (x_88 + 1);
directions = 0;
const int x_91 = p.x;
const bool x_92 = (x_91 > 0);
x_105 = x_92;
if (x_92) {
const int x_96 = p.x;
const int x_99 = p.y;
const int x_103 = map[((x_96 - 2) + (x_99 * 16))];
x_104 = (x_103 == 0);
x_105 = x_104;
}
if (x_105) {
const int x_108 = directions;
directions = (x_108 + 1);
}
const int x_111 = p.y;
const bool x_112 = (x_111 > 0);
x_125 = x_112;
if (x_112) {
const int x_116 = p.x;
const int x_118 = p.y;
const int x_123 = map[(x_116 + ((x_118 - 2) * 16))];
x_124 = (x_123 == 0);
x_125 = x_124;
}
if (x_125) {
const int x_128 = directions;
directions = (x_128 + 1);
}
const int x_131 = p.x;
const bool x_132 = (x_131 < 14);
x_145 = x_132;
if (x_132) {
const int x_136 = p.x;
const int x_139 = p.y;
const int x_143 = map[((x_136 + 2) + (x_139 * 16))];
x_144 = (x_143 == 0);
x_145 = x_144;
}
if (x_145) {
const int x_148 = directions;
directions = (x_148 + 1);
}
const int x_151 = p.y;
const bool x_152 = (x_151 < 14);
x_165 = x_152;
if (x_152) {
const int x_156 = p.x;
const int x_158 = p.y;
const int x_163 = map[(x_156 + ((x_158 + 2) * 16))];
x_164 = (x_163 == 0);
x_165 = x_164;
}
if (x_165) {
const int x_168 = directions;
directions = (x_168 + 1);
}
bool x_229 = false;
bool x_230 = false;
bool x_242 = false;
bool x_243 = false;
bool x_281 = false;
bool x_282 = false;
int x_288 = 0;
int x_289 = 0;
int x_290 = 0;
int x_295 = 0;
int x_296 = 0;
int x_297 = 0;
int x_303[256] = (int[256])0;
int x_304[256] = (int[256])0;
int x_305[256] = (int[256])0;
int x_315 = 0;
int x_316 = 0;
int x_317 = 0;
bool x_359 = false;
bool x_360 = false;
bool x_372 = false;
bool x_373 = false;
bool x_411 = false;
bool x_412 = false;
bool x_424 = false;
bool x_425 = false;
const int x_170 = directions;
if ((x_170 == 0)) {
canwalk = false;
i = 0;
while (true) {
const int x_179 = i;
if ((x_179 < 8)) {
} else {
break;
}
j = 0;
while (true) {
const int x_186 = j;
if ((x_186 < 8)) {
} else {
break;
}
const int x_189 = j;
const int x_191 = i;
const int x_196 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
if ((x_196 == 0)) {
const int x_200 = j;
p.x = (x_200 * 2);
const int x_203 = i;
p.y = (x_203 * 2);
canwalk = true;
}
{
const int x_206 = j;
j = (x_206 + 1);
}
}
{
const int x_208 = i;
i = (x_208 + 1);
}
}
const int x_211 = p.x;
const int x_213 = p.y;
map[(x_211 + (x_213 * 16))] = 1;
} else {
const int x_217 = v;
const int x_218 = directions;
d = tint_mod(x_217, x_218);
const int x_220 = directions;
const int x_221 = v;
v = (x_221 + x_220);
const int x_223 = d;
const bool x_224 = (x_223 >= 0);
x_230 = x_224;
if (x_224) {
const int x_228 = p.x;
x_229 = (x_228 > 0);
x_230 = x_229;
}
x_243 = x_230;
if (x_230) {
const int x_234 = p.x;
const int x_237 = p.y;
const int x_241 = map[((x_234 - 2) + (x_237 * 16))];
x_242 = (x_241 == 0);
x_243 = x_242;
}
if (x_243) {
const int x_246 = d;
d = (x_246 - 1);
const int x_249 = p.x;
const int x_251 = p.y;
map[(x_249 + (x_251 * 16))] = 1;
const int x_256 = p.x;
const int x_259 = p.y;
map[((x_256 - 1) + (x_259 * 16))] = 1;
const int x_264 = p.x;
const int x_267 = p.y;
map[((x_264 - 2) + (x_267 * 16))] = 1;
const int x_272 = p.x;
p.x = (x_272 - 2);
}
const int x_275 = d;
const bool x_276 = (x_275 >= 0);
x_282 = x_276;
if (x_276) {
const int x_280 = p.y;
x_281 = (x_280 > 0);
x_282 = x_281;
}
if (x_282) {
x_288 = p.x;
x_290 = x_288;
} else {
x_289 = 0;
x_290 = x_289;
}
if (x_282) {
x_295 = p.y;
x_297 = x_295;
} else {
x_296 = 0;
x_297 = x_296;
}
const int x_299 = ((x_297 - 2) * 16);
if (x_282) {
x_303 = map;
x_305 = x_303;
} else {
const int tint_symbol_3[256] = (int[256])0;
x_304 = tint_symbol_3;
x_305 = x_304;
}
if (x_282) {
const int tint_symbol_4[256] = (int[256])0;
map = tint_symbol_4;
}
if (x_282) {
map = x_305;
}
if (x_282) {
x_315 = map[(x_290 + x_299)];
x_317 = x_315;
} else {
x_316 = 0;
x_317 = x_316;
}
const bool x_318 = (x_317 == 0);
if ((x_282 ? x_318 : x_282)) {
const int x_323 = d;
d = (x_323 - 1);
const int x_326 = p.x;
const int x_328 = p.y;
map[(x_326 + (x_328 * 16))] = 1;
const int x_333 = p.x;
const int x_335 = p.y;
map[(x_333 + ((x_335 - 1) * 16))] = 1;
const int x_341 = p.x;
const int x_343 = p.y;
const int x_345[256] = map;
const int tint_symbol_5[256] = (int[256])0;
map = tint_symbol_5;
map = x_345;
map[(x_341 + ((x_343 - 2) * 16))] = 1;
const int x_350 = p.y;
p.y = (x_350 - 2);
}
const int x_353 = d;
const bool x_354 = (x_353 >= 0);
x_360 = x_354;
if (x_354) {
const int x_358 = p.x;
x_359 = (x_358 < 14);
x_360 = x_359;
}
x_373 = x_360;
if (x_360) {
const int x_364 = p.x;
const int x_367 = p.y;
const int x_371 = map[((x_364 + 2) + (x_367 * 16))];
x_372 = (x_371 == 0);
x_373 = x_372;
}
if (x_373) {
const int x_376 = d;
d = (x_376 - 1);
const int x_379 = p.x;
const int x_381 = p.y;
map[(x_379 + (x_381 * 16))] = 1;
const int x_386 = p.x;
const int x_389 = p.y;
map[((x_386 + 1) + (x_389 * 16))] = 1;
const int x_394 = p.x;
const int x_397 = p.y;
map[((x_394 + 2) + (x_397 * 16))] = 1;
const int x_402 = p.x;
p.x = (x_402 + 2);
}
const int x_405 = d;
const bool x_406 = (x_405 >= 0);
x_412 = x_406;
if (x_406) {
const int x_410 = p.y;
x_411 = (x_410 < 14);
x_412 = x_411;
}
x_425 = x_412;
if (x_412) {
const int x_416 = p.x;
const int x_418 = p.y;
const int x_423 = map[(x_416 + ((x_418 + 2) * 16))];
x_424 = (x_423 == 0);
x_425 = x_424;
}
if (x_425) {
const int x_428 = d;
d = (x_428 - 1);
const int x_431 = p.x;
const int x_433 = p.y;
map[(x_431 + (x_433 * 16))] = 1;
const int x_438 = p.x;
const int x_440 = p.y;
map[(x_438 + ((x_440 + 1) * 16))] = 1;
const int x_446 = p.x;
const int x_448 = p.y;
map[(x_446 + ((x_448 + 2) * 16))] = 1;
const int x_454 = p.y;
p.y = (x_454 + 2);
}
}
const int x_458 = ipos.y;
const int x_461 = ipos.x;
const int x_464 = map[((x_458 * 16) + x_461)];
if ((x_464 == 1)) {
x_GLF_color = (1.0f).xxxx;
return;
}
{
const bool x_468 = canwalk;
if (!(x_468)) { break; }
}
}
x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
return;
}
struct main_out {
float4 x_GLF_color_1;
};
struct tint_symbol_1 {
float4 gl_FragCoord_param : SV_Position;
};
struct tint_symbol_2 {
float4 x_GLF_color_1 : SV_Target0;
};
main_out main_inner(float4 gl_FragCoord_param) {
gl_FragCoord = gl_FragCoord_param;
main_1();
const main_out tint_symbol_6 = {x_GLF_color};
return tint_symbol_6;
}
tint_symbol_2 main(tint_symbol_1 tint_symbol) {
const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
tint_symbol_2 wrapper_result = (tint_symbol_2)0;
wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
return wrapper_result;
}