HLSL: force FXC to never unroll loops
Emit the "[loop]" attribute on "for" and "while" so that FXC does not attempt to unroll them. This is to work around an FXC bug where it fails to unroll loops with gradient operations. FXC ostensibly unrolls such loops because gradient operations require uniform control flow, and loops that have varying iterations may possibly not be uniform. Tint will eventually validate that control flow is indeed uniform, so forcing FXC to avoid unrolling in these cases should be fine. Bug: tint:1112 Change-Id: I10077f8b62fbbb230a0003f3864c75a8fe0e1d18 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/69880 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
parent
1704fe53f5
commit
11d09f2fe7
|
@ -115,6 +115,13 @@ std::ostream& operator<<(std::ostream& s, const RegisterAndSpace& rs) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* LoopAttribute() {
|
||||||
|
// Force loops not to be unrolled to work around FXC compilation issues when
|
||||||
|
// it attempts and fails to unroll loops when it contains gradient operations.
|
||||||
|
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-while
|
||||||
|
return "[loop] ";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
SanitizedResult Sanitize(const Program* in,
|
SanitizedResult Sanitize(const Program* in,
|
||||||
|
@ -2804,7 +2811,7 @@ bool GeneratorImpl::EmitLoop(const ast::LoopStatement* stmt) {
|
||||||
};
|
};
|
||||||
|
|
||||||
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
||||||
line() << "while (true) {";
|
line() << LoopAttribute() << "while (true) {";
|
||||||
{
|
{
|
||||||
ScopedIndent si(this);
|
ScopedIndent si(this);
|
||||||
if (!EmitStatements(stmt->body->statements)) {
|
if (!EmitStatements(stmt->body->statements)) {
|
||||||
|
@ -2874,7 +2881,7 @@ bool GeneratorImpl::EmitForLoop(const ast::ForLoopStatement* stmt) {
|
||||||
};
|
};
|
||||||
|
|
||||||
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
||||||
line() << "while (true) {";
|
line() << LoopAttribute() << "while (true) {";
|
||||||
increment_indent();
|
increment_indent();
|
||||||
TINT_DEFER({
|
TINT_DEFER({
|
||||||
decrement_indent();
|
decrement_indent();
|
||||||
|
@ -2897,7 +2904,7 @@ bool GeneratorImpl::EmitForLoop(const ast::ForLoopStatement* stmt) {
|
||||||
// For-loop can be generated.
|
// For-loop can be generated.
|
||||||
{
|
{
|
||||||
auto out = line();
|
auto out = line();
|
||||||
out << "for";
|
out << LoopAttribute() << "for";
|
||||||
{
|
{
|
||||||
ScopedParen sp(out);
|
ScopedParen sp(out);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ TEST_F(HlslGeneratorImplTest_Continue, Emit_Continue) {
|
||||||
gen.increment_indent();
|
gen.increment_indent();
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(loop)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(loop)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
)");
|
)");
|
||||||
|
|
|
@ -34,7 +34,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_Loop) {
|
||||||
gen.increment_indent();
|
gen.increment_indent();
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||||
discard;
|
discard;
|
||||||
}
|
}
|
||||||
)");
|
)");
|
||||||
|
@ -54,7 +54,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithContinuing) {
|
||||||
gen.increment_indent();
|
gen.increment_indent();
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||||
discard;
|
discard;
|
||||||
{
|
{
|
||||||
a_statement();
|
a_statement();
|
||||||
|
@ -88,8 +88,8 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopNestedWithContinuing) {
|
||||||
gen.increment_indent();
|
gen.increment_indent();
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
discard;
|
discard;
|
||||||
{
|
{
|
||||||
a_statement();
|
a_statement();
|
||||||
|
@ -142,7 +142,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithVarUsedInContinuing) {
|
||||||
gen.increment_indent();
|
gen.increment_indent();
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||||
float lhs = 2.400000095f;
|
float lhs = 2.400000095f;
|
||||||
float other = 0.0f;
|
float other = 0.0f;
|
||||||
{
|
{
|
||||||
|
@ -169,7 +169,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoop) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
for(; ; ) {
|
[loop] for(; ; ) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -193,7 +193,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleInit) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
for(int i = 0; ; ) {
|
[loop] for(int i = 0; ; ) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtInit) {
|
||||||
tint_tmp = false;
|
tint_tmp = false;
|
||||||
}
|
}
|
||||||
bool b = (tint_tmp);
|
bool b = (tint_tmp);
|
||||||
for(; ; ) {
|
[loop] for(; ; ) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleCond) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
for(; true; ) {
|
[loop] for(; true; ) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtCond) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
bool tint_tmp = true;
|
bool tint_tmp = true;
|
||||||
if (tint_tmp) {
|
if (tint_tmp) {
|
||||||
tint_tmp = false;
|
tint_tmp = false;
|
||||||
|
@ -302,7 +302,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleCont) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
for(; ; i = (i + 1)) {
|
[loop] for(; ; i = (i + 1)) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,7 +329,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtCont) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
a_statement();
|
a_statement();
|
||||||
bool tint_tmp = true;
|
bool tint_tmp = true;
|
||||||
if (tint_tmp) {
|
if (tint_tmp) {
|
||||||
|
@ -358,7 +358,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleInitCondCont) {
|
||||||
|
|
||||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||||
EXPECT_EQ(gen.result(), R"( {
|
EXPECT_EQ(gen.result(), R"( {
|
||||||
for(int i = 0; true; i = (i + 1)) {
|
[loop] for(int i = 0; true; i = (i + 1)) {
|
||||||
a_statement();
|
a_statement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -394,7 +394,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtInitCondCont) {
|
||||||
tint_tmp = false;
|
tint_tmp = false;
|
||||||
}
|
}
|
||||||
bool i = (tint_tmp);
|
bool i = (tint_tmp);
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
bool tint_tmp_1 = true;
|
bool tint_tmp_1 = true;
|
||||||
if (tint_tmp_1) {
|
if (tint_tmp_1) {
|
||||||
tint_tmp_1 = false;
|
tint_tmp_1 = false;
|
||||||
|
|
|
@ -32,7 +32,7 @@ typedef tint_padded_array_element tint_symbol_1_ret[4];
|
||||||
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
||||||
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||||
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
||||||
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ typedef tint_padded_array_element tint_symbol_3_ret[4];
|
||||||
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ typedef tint_padded_array_element tint_symbol_1_ret[4];
|
||||||
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
||||||
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||||
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
||||||
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ typedef tint_padded_array_element tint_symbol_3_ret[4];
|
||||||
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ S ret_struct_arr() {
|
||||||
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
|
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
|
||||||
tint_padded_array_element array[4] = value;
|
tint_padded_array_element array[4] = value;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||||
buffer.Store((offset + (i * 16u)), asuint(array[i].el));
|
buffer.Store((offset + (i * 16u)), asuint(array[i].el));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ typedef tint_padded_array_element tint_symbol_3_ret[4];
|
||||||
tint_symbol_3_ret tint_symbol_3(uint4 buffer[4], uint offset) {
|
tint_symbol_3_ret tint_symbol_3(uint4 buffer[4], uint offset) {
|
||||||
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
const uint scalar_offset = ((offset + (i_1 * 16u))) / 4;
|
const uint scalar_offset = ((offset + (i_1 * 16u))) / 4;
|
||||||
arr_1[i_1].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
arr_1[i_1].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ typedef tint_padded_array_element tint_symbol_5_ret[4];
|
||||||
tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) {
|
tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) {
|
[loop] for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) {
|
||||||
arr_2[i_2].el = asint(buffer.Load((offset + (i_2 * 16u))));
|
arr_2[i_2].el = asint(buffer.Load((offset + (i_2 * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) {
|
||||||
void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) {
|
void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) {
|
||||||
int array_3[2] = value;
|
int array_3[2] = value;
|
||||||
{
|
{
|
||||||
for(uint i_3 = 0u; (i_3 < 2u); i_3 = (i_3 + 1u)) {
|
[loop] for(uint i_3 = 0u; (i_3 < 2u); i_3 = (i_3 + 1u)) {
|
||||||
buffer.Store((offset + (i_3 * 4u)), asuint(array_3[i_3]));
|
buffer.Store((offset + (i_3 * 4u)), asuint(array_3[i_3]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) {
|
||||||
void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
|
void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
|
||||||
int array_2[3][2] = value;
|
int array_2[3][2] = value;
|
||||||
{
|
{
|
||||||
for(uint i_4 = 0u; (i_4 < 3u); i_4 = (i_4 + 1u)) {
|
[loop] for(uint i_4 = 0u; (i_4 < 3u); i_4 = (i_4 + 1u)) {
|
||||||
tint_symbol_9(buffer, (offset + (i_4 * 8u)), array_2[i_4]);
|
tint_symbol_9(buffer, (offset + (i_4 * 8u)), array_2[i_4]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
|
||||||
void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
|
void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
|
||||||
int array_1[4][3][2] = value;
|
int array_1[4][3][2] = value;
|
||||||
{
|
{
|
||||||
for(uint i_5 = 0u; (i_5 < 4u); i_5 = (i_5 + 1u)) {
|
[loop] for(uint i_5 = 0u; (i_5 < 4u); i_5 = (i_5 + 1u)) {
|
||||||
tint_symbol_8(buffer, (offset + (i_5 * 24u)), array_1[i_5]);
|
tint_symbol_8(buffer, (offset + (i_5 * 24u)), array_1[i_5]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ typedef tint_padded_array_element tint_symbol_1_ret[4];
|
||||||
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
|
||||||
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_1[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||||
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
const uint scalar_offset = ((offset + (i * 16u))) / 4;
|
||||||
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
arr_1[i].el = asint(buffer[scalar_offset / 4][scalar_offset % 4]);
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ typedef tint_padded_array_element tint_symbol_3_ret[4];
|
||||||
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr_2[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
arr_2[i_1].el = asint(buffer.Load((offset + (i_1 * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ typedef int4 tint_symbol_11_ret[4];
|
||||||
tint_symbol_11_ret tint_symbol_11(ByteAddressBuffer buffer, uint offset) {
|
tint_symbol_11_ret tint_symbol_11(ByteAddressBuffer buffer, uint offset) {
|
||||||
int4 arr_1[4] = (int4[4])0;
|
int4 arr_1[4] = (int4[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr_1[i_1] = asint(buffer.Load4((offset + (i_1 * 16u))));
|
arr_1[i_1] = asint(buffer.Load4((offset + (i_1 * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, float3x2 value) {
|
||||||
void tint_symbol_11(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
|
void tint_symbol_11(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
|
||||||
int4 array[4] = value;
|
int4 array[4] = value;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
buffer.Store4((offset + (i_1 * 16u)), asuint(array[i_1]));
|
buffer.Store4((offset + (i_1 * 16u)), asuint(array[i_1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ typedef tint_padded_array_element tint_symbol_10_ret[4];
|
||||||
tint_symbol_10_ret tint_symbol_10(ByteAddressBuffer buffer, uint offset) {
|
tint_symbol_10_ret tint_symbol_10(ByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr[i_1].el = tint_symbol_9(buffer, (offset + (i_1 * 16u)));
|
arr[i_1].el = tint_symbol_9(buffer, (offset + (i_1 * 16u)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, Inner value) {
|
||||||
void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
|
void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
|
||||||
tint_padded_array_element array[4] = value;
|
tint_padded_array_element array[4] = value;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
tint_symbol_9(buffer, (offset + (i_1 * 16u)), array[i_1].el);
|
tint_symbol_9(buffer, (offset + (i_1 * 16u)), array[i_1].el);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ typedef int4 tint_symbol_12_ret[4];
|
||||||
tint_symbol_12_ret tint_symbol_12(uint4 buffer[96], uint offset) {
|
tint_symbol_12_ret tint_symbol_12(uint4 buffer[96], uint offset) {
|
||||||
int4 arr_1[4] = (int4[4])0;
|
int4 arr_1[4] = (int4[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
const uint scalar_offset_5 = ((offset + (i_1 * 16u))) / 4;
|
const uint scalar_offset_5 = ((offset + (i_1 * 16u))) / 4;
|
||||||
arr_1[i_1] = asint(buffer[scalar_offset_5 / 4]);
|
arr_1[i_1] = asint(buffer[scalar_offset_5 / 4]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ typedef tint_padded_array_element tint_symbol_11_ret[4];
|
||||||
tint_symbol_11_ret tint_symbol_11(uint4 buffer[13], uint offset) {
|
tint_symbol_11_ret tint_symbol_11(uint4 buffer[13], uint offset) {
|
||||||
tint_padded_array_element arr[4] = (tint_padded_array_element[4])0;
|
tint_padded_array_element arr[4] = (tint_padded_array_element[4])0;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
|
||||||
arr[i_1].el = tint_symbol_10(buffer, (offset + (i_1 * 16u)));
|
arr[i_1].el = tint_symbol_10(buffer, (offset + (i_1 * 16u)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct tint_symbol_2 {
|
||||||
|
|
||||||
void f_inner(uint local_invocation_index) {
|
void f_inner(uint local_invocation_index) {
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
||||||
const uint i = idx;
|
const uint i = idx;
|
||||||
s.data[i] = 0;
|
s.data[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct tint_symbol_2 {
|
||||||
|
|
||||||
void f_inner(uint local_invocation_index) {
|
void f_inner(uint local_invocation_index) {
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
||||||
const uint i = idx;
|
const uint i = idx;
|
||||||
s.data[i] = 0;
|
s.data[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ static bool2 v2b = bool2(false, false);
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
set_float2(v2f, i, 1.0f);
|
set_float2(v2f, i, 1.0f);
|
||||||
set_int3(v3i, i, 1);
|
set_int3(v3i, i, 1);
|
||||||
set_uint4(v4u, i, 1u);
|
set_uint4(v4u, i, 1u);
|
||||||
|
@ -33,7 +33,7 @@ void foo() {
|
||||||
[numthreads(1, 1, 1)]
|
[numthreads(1, 1, 1)]
|
||||||
void main() {
|
void main() {
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
foo();
|
foo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ void foo() {
|
||||||
[numthreads(1, 1, 1)]
|
[numthreads(1, 1, 1)]
|
||||||
void main() {
|
void main() {
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
foo();
|
foo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ void main() {
|
||||||
bool3 v3b = bool3(false, false, false);
|
bool3 v3b = bool3(false, false, false);
|
||||||
bool4 v4b = bool4(false, false, false, false);
|
bool4 v4b = bool4(false, false, false, false);
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
set_float2(v2f, i, 1.0f);
|
set_float2(v2f, i, 1.0f);
|
||||||
set_float3(v3f, i, 1.0f);
|
set_float3(v3f, i, 1.0f);
|
||||||
set_float4(v4f, i, 1.0f);
|
set_float4(v4f, i, 1.0f);
|
||||||
|
|
|
@ -25,7 +25,7 @@ void main() {
|
||||||
bool2 v2b = bool2(false, false);
|
bool2 v2b = bool2(false, false);
|
||||||
bool2 v2b_2 = bool2(false, false);
|
bool2 v2b_2 = bool2(false, false);
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
set_float2(v2f, i, 1.0f);
|
set_float2(v2f, i, 1.0f);
|
||||||
set_int3(v3i, i, 1);
|
set_int3(v3i, i, 1);
|
||||||
set_uint4(v4u, i, 1u);
|
set_uint4(v4u, i, 1u);
|
||||||
|
|
|
@ -61,7 +61,7 @@ void main() {
|
||||||
bool3 v3b = bool3(false, false, false);
|
bool3 v3b = bool3(false, false, false);
|
||||||
bool4 v4b = bool4(false, false, false, false);
|
bool4 v4b = bool4(false, false, false, false);
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||||
set_float2(v2f, i, 1.0f);
|
set_float2(v2f, i, 1.0f);
|
||||||
set_int2(v2i, i, 1);
|
set_int2(v2i, i, 1);
|
||||||
set_uint2(v2u, i, 1u);
|
set_uint2(v2u, i, 1u);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
void main() {
|
void main() {
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
if (false) {
|
if (false) {
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -22,7 +22,7 @@ struct tint_symbol_2 {
|
||||||
|
|
||||||
int main_inner(int3 x) {
|
int main_inner(int3 x) {
|
||||||
int y = x.x;
|
int y = x.x;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
const int r = f(y);
|
const int r = f(y);
|
||||||
if ((r == 0)) {
|
if ((r == 0)) {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -52,9 +52,9 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
const int TILE_SIZE = 16;
|
const int TILE_SIZE = 16;
|
||||||
const int TILE_COUNT_X = 2;
|
const int TILE_COUNT_X = 2;
|
||||||
{
|
{
|
||||||
for(int y_1 = 0; (y_1 < 2); y_1 = (y_1 + 1)) {
|
[loop] for(int y_1 = 0; (y_1 < 2); y_1 = (y_1 + 1)) {
|
||||||
{
|
{
|
||||||
for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = (x_1 + 1)) {
|
[loop] for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = (x_1 + 1)) {
|
||||||
int2 tilePixel0Idx = int2((x_1 * TILE_SIZE), (y_1 * TILE_SIZE));
|
int2 tilePixel0Idx = int2((x_1 * TILE_SIZE), (y_1 * TILE_SIZE));
|
||||||
float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / asfloat(uniforms[10]).xy) - float2((1.0f).xx));
|
float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / asfloat(uniforms[10]).xy) - float2((1.0f).xx));
|
||||||
float2 ceilCoord = (((2.0f * float2((tilePixel0Idx + int2((TILE_SIZE).xx)))) / asfloat(uniforms[10]).xy) - float2((1.0f).xx));
|
float2 ceilCoord = (((2.0f * float2((tilePixel0Idx + int2((TILE_SIZE).xx)))) / asfloat(uniforms[10]).xy) - float2((1.0f).xx));
|
||||||
|
@ -66,7 +66,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
frustumPlanes[3] = float4(0.0f, -1.0f, (viewCeilCoord.y / viewNear), 0.0f);
|
frustumPlanes[3] = float4(0.0f, -1.0f, (viewCeilCoord.y / viewNear), 0.0f);
|
||||||
float dp = 0.0f;
|
float dp = 0.0f;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 6u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 6u); i = (i + 1u)) {
|
||||||
float4 p = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
float4 p = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
if ((frustumPlanes[i].x > 0.0f)) {
|
if ((frustumPlanes[i].x > 0.0f)) {
|
||||||
p.x = boxMax.x;
|
p.x = boxMax.x;
|
||||||
|
|
|
@ -3,7 +3,7 @@ RWByteAddressBuffer b : register(u0, space0);
|
||||||
[numthreads(1, 1, 1)]
|
[numthreads(1, 1, 1)]
|
||||||
void main() {
|
void main() {
|
||||||
uint i = 0u;
|
uint i = 0u;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
if ((i >= b.Load(0u))) {
|
if ((i >= b.Load(0u))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
||||||
uint4 dstColorBits = uint4(dstColor);
|
uint4 dstColorBits = uint4(dstColor);
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < uniforms[0].w); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < uniforms[0].w); i = (i + 1u)) {
|
||||||
set_uint4(srcColorBits, i, ConvertToFp16FloatValue(srcColor[i]));
|
set_uint4(srcColorBits, i, ConvertToFp16FloatValue(srcColor[i]));
|
||||||
bool tint_tmp_1 = success;
|
bool tint_tmp_1 = success;
|
||||||
if (tint_tmp_1) {
|
if (tint_tmp_1) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ void main_inner(uint3 global_id) {
|
||||||
const uint dimOutter = uniforms[1].y;
|
const uint dimOutter = uniforms[1].y;
|
||||||
uint result = 0u;
|
uint result = 0u;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < dimInner); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < dimInner); i = (i + 1u)) {
|
||||||
const uint a = (i + (resultCell.x * dimInner));
|
const uint a = (i + (resultCell.x * dimInner));
|
||||||
const uint b = (resultCell.y + (i * dimOutter));
|
const uint b = (resultCell.y + (i * dimOutter));
|
||||||
result = (result + (firstMatrix.Load((4u * a)) * secondMatrix.Load((4u * b))));
|
result = (result + (firstMatrix.Load((4u * a)) * secondMatrix.Load((4u * b))));
|
||||||
|
|
|
@ -153,7 +153,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
|
||||||
const QuicksortObject tint_symbol_11 = {tint_symbol_10};
|
const QuicksortObject tint_symbol_11 = {tint_symbol_10};
|
||||||
obj = tint_symbol_11;
|
obj = tint_symbol_11;
|
||||||
obj = x_960;
|
obj = x_960;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
const int x_961 = pivot;
|
const int x_961 = pivot;
|
||||||
pivot = 0;
|
pivot = 0;
|
||||||
pivot = x_961;
|
pivot = x_961;
|
||||||
|
@ -453,7 +453,7 @@ void quicksort_() {
|
||||||
p = 0;
|
p = 0;
|
||||||
p = x_1027;
|
p = x_1027;
|
||||||
stack[x_100_save] = x_99;
|
stack[x_100_save] = x_99;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
const float3 x_566 = float3(x_563.x, x_563.x, x_563.x);
|
const float3 x_566 = float3(x_563.x, x_563.x, x_563.x);
|
||||||
const int x_1028 = h_1;
|
const int x_1028 = h_1;
|
||||||
h_1 = 0;
|
h_1 = 0;
|
||||||
|
|
|
@ -14,7 +14,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
flatIndex = (flatIndex * 1u);
|
flatIndex = (flatIndex * 1u);
|
||||||
float4 texel = myTexture.Load(int4(int3(int2(GlobalInvocationID.xy), 0), 0));
|
float4 texel = myTexture.Load(int4(int3(int2(GlobalInvocationID.xy), 0), 0));
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 1u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 1u); i = (i + 1u)) {
|
||||||
result.Store((4u * (flatIndex + i)), asuint(texel.r));
|
result.Store((4u * (flatIndex + i)), asuint(texel.r));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ typedef int tint_symbol_ret[6];
|
||||||
tint_symbol_ret tint_symbol(ByteAddressBuffer buffer, uint offset) {
|
tint_symbol_ret tint_symbol(ByteAddressBuffer buffer, uint offset) {
|
||||||
int arr[6] = (int[6])0;
|
int arr[6] = (int[6])0;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 6u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 6u); i = (i + 1u)) {
|
||||||
arr[i] = asint(buffer.Load((offset + (i * 4u))));
|
arr[i] = asint(buffer.Load((offset + (i * 4u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ struct tint_symbol_1 {
|
||||||
|
|
||||||
void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) {
|
||||||
const uint i = (idx / 64u);
|
const uint i = (idx / 64u);
|
||||||
const uint i_1 = (idx % 64u);
|
const uint i_1 = (idx % 64u);
|
||||||
mm_Asub[i][i_1] = 0.0f;
|
mm_Asub[i][i_1] = 0.0f;
|
||||||
|
@ -73,7 +73,7 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
float ACached = 0.0f;
|
float ACached = 0.0f;
|
||||||
float BCached[4] = (float[4])0;
|
float BCached[4] = (float[4])0;
|
||||||
{
|
{
|
||||||
for(uint index = 0u; (index < (RowPerThread * ColPerThread)); index = (index + 1u)) {
|
[loop] for(uint index = 0u; (index < (RowPerThread * ColPerThread)); index = (index + 1u)) {
|
||||||
acc[index] = 0.0f;
|
acc[index] = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,11 +82,11 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
const uint RowPerThreadB = (TileInner / 16u);
|
const uint RowPerThreadB = (TileInner / 16u);
|
||||||
const uint tileRowB = (local_id.y * RowPerThreadB);
|
const uint tileRowB = (local_id.y * RowPerThreadB);
|
||||||
{
|
{
|
||||||
for(uint t = 0u; (t < numTiles); t = (t + 1u)) {
|
[loop] for(uint t = 0u; (t < numTiles); t = (t + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
[loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
|
[loop] for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
|
||||||
const uint inputRow = (tileRow + innerRow);
|
const uint inputRow = (tileRow + innerRow);
|
||||||
const uint inputCol = (tileColA + innerCol);
|
const uint inputCol = (tileColA + innerCol);
|
||||||
mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
|
mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
|
||||||
|
@ -95,9 +95,9 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
|
[loop] for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
[loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
||||||
const uint inputRow = (tileRowB + innerRow);
|
const uint inputRow = (tileRowB + innerRow);
|
||||||
const uint inputCol = (tileCol + innerCol);
|
const uint inputCol = (tileCol + innerCol);
|
||||||
mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
|
mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
|
||||||
|
@ -107,17 +107,17 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
}
|
}
|
||||||
GroupMemoryBarrierWithGroupSync();
|
GroupMemoryBarrierWithGroupSync();
|
||||||
{
|
{
|
||||||
for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
|
[loop] for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
|
[loop] for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
|
||||||
BCached[inner] = mm_Bsub[k][(tileCol + inner)];
|
BCached[inner] = mm_Bsub[k][(tileCol + inner)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
[loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
||||||
ACached = mm_Asub[(tileRow + innerRow)][k];
|
ACached = mm_Asub[(tileRow + innerRow)][k];
|
||||||
{
|
{
|
||||||
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
[loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
||||||
const uint index = ((innerRow * ColPerThread) + innerCol);
|
const uint index = ((innerRow * ColPerThread) + innerCol);
|
||||||
acc[index] = (acc[index] + (ACached * BCached[innerCol]));
|
acc[index] = (acc[index] + (ACached * BCached[innerCol]));
|
||||||
}
|
}
|
||||||
|
@ -130,9 +130,9 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
[loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
[loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
|
||||||
const uint index = ((innerRow * ColPerThread) + innerCol);
|
const uint index = ((innerRow * ColPerThread) + innerCol);
|
||||||
mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
|
mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ struct tint_symbol_1 {
|
||||||
|
|
||||||
void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocation_index) {
|
void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocation_index) {
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 1024u); idx = (idx + 64u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 1024u); idx = (idx + 64u)) {
|
||||||
const uint i_1 = (idx / 256u);
|
const uint i_1 = (idx / 256u);
|
||||||
const uint i_2 = (idx % 256u);
|
const uint i_2 = (idx % 256u);
|
||||||
tile[i_1][i_2] = float3(0.0f, 0.0f, 0.0f);
|
tile[i_1][i_2] = float3(0.0f, 0.0f, 0.0f);
|
||||||
|
@ -31,9 +31,9 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
const int2 dims = tint_tmp.xy;
|
const int2 dims = tint_tmp.xy;
|
||||||
const int2 baseIndex = (int2(((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)))) - int2(int(filterOffset), 0));
|
const int2 baseIndex = (int2(((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)))) - int2(int(filterOffset), 0));
|
||||||
{
|
{
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
[loop] for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
[loop] for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 loadIndex = (baseIndex + int2(int(c), int(r)));
|
int2 loadIndex = (baseIndex + int2(int(c), int(r)));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
|
@ -45,9 +45,9 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
}
|
}
|
||||||
GroupMemoryBarrierWithGroupSync();
|
GroupMemoryBarrierWithGroupSync();
|
||||||
{
|
{
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
[loop] for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
[loop] for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 writeIndex = (baseIndex + int2(int(c), int(r)));
|
int2 writeIndex = (baseIndex + int2(int(c), int(r)));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
|
@ -64,7 +64,7 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
if ((tint_tmp_1)) {
|
if ((tint_tmp_1)) {
|
||||||
float3 acc = float3(0.0f, 0.0f, 0.0f);
|
float3 acc = float3(0.0f, 0.0f, 0.0f);
|
||||||
{
|
{
|
||||||
for(uint f = 0u; (f < params[0].x); f = (f + 1u)) {
|
[loop] for(uint f = 0u; (f < params[0].x); f = (f + 1u)) {
|
||||||
uint i = ((center + f) - filterOffset);
|
uint i = ((center + f) - filterOffset);
|
||||||
acc = (acc + ((1.0f / float(params[0].x)) * tile[r][i]));
|
acc = (acc + ((1.0f / float(params[0].x)) * tile[r][i]));
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,10 +186,10 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
numTiles = (((x_152 - 1) / 64) + 1);
|
numTiles = (((x_152 - 1) / 64) + 1);
|
||||||
innerRow = 0;
|
innerRow = 0;
|
||||||
{
|
{
|
||||||
for(; (innerRow < 1); innerRow = (innerRow + 1)) {
|
[loop] for(; (innerRow < 1); innerRow = (innerRow + 1)) {
|
||||||
innerCol = 0;
|
innerCol = 0;
|
||||||
{
|
{
|
||||||
for(; (innerCol < 1); innerCol = (innerCol + 1)) {
|
[loop] for(; (innerCol < 1); innerCol = (innerCol + 1)) {
|
||||||
acc[innerRow][innerCol] = 0.0f;
|
acc[innerRow][innerCol] = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,13 +201,13 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
tileRowB = (asint(x_192) * 1);
|
tileRowB = (asint(x_192) * 1);
|
||||||
t = 0;
|
t = 0;
|
||||||
{
|
{
|
||||||
for(; (t < numTiles); t = (t + 1)) {
|
[loop] for(; (t < numTiles); t = (t + 1)) {
|
||||||
innerRow_1 = 0;
|
innerRow_1 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerRow_1 < 1); innerRow_1 = (innerRow_1 + 1)) {
|
[loop] for(; (innerRow_1 < 1); innerRow_1 = (innerRow_1 + 1)) {
|
||||||
innerCol_1 = 0;
|
innerCol_1 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerCol_1 < 64); innerCol_1 = (innerCol_1 + 1)) {
|
[loop] for(; (innerCol_1 < 64); innerCol_1 = (innerCol_1 + 1)) {
|
||||||
inputRow = (tileRow + innerRow_1);
|
inputRow = (tileRow + innerRow_1);
|
||||||
inputCol = (tileColA + innerCol_1);
|
inputCol = (tileColA + innerCol_1);
|
||||||
const int x_233 = inputRow;
|
const int x_233 = inputRow;
|
||||||
|
@ -224,10 +224,10 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
}
|
}
|
||||||
innerRow_2 = 0;
|
innerRow_2 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerRow_2 < 1); innerRow_2 = (innerRow_2 + 1)) {
|
[loop] for(; (innerRow_2 < 1); innerRow_2 = (innerRow_2 + 1)) {
|
||||||
innerCol_2 = 0;
|
innerCol_2 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerCol_2 < 1); innerCol_2 = (innerCol_2 + 1)) {
|
[loop] for(; (innerCol_2 < 1); innerCol_2 = (innerCol_2 + 1)) {
|
||||||
inputRow_1 = (tileRowB + innerRow_2);
|
inputRow_1 = (tileRowB + innerRow_2);
|
||||||
inputCol_1 = (tileCol + innerCol_2);
|
inputCol_1 = (tileCol + innerCol_2);
|
||||||
const int x_278 = inputRow_1;
|
const int x_278 = inputRow_1;
|
||||||
|
@ -245,10 +245,10 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
GroupMemoryBarrierWithGroupSync();
|
GroupMemoryBarrierWithGroupSync();
|
||||||
k = 0;
|
k = 0;
|
||||||
{
|
{
|
||||||
for(; (k < 64); k = (k + 1)) {
|
[loop] for(; (k < 64); k = (k + 1)) {
|
||||||
inner = 0;
|
inner = 0;
|
||||||
{
|
{
|
||||||
for(; (inner < 1); inner = (inner + 1)) {
|
[loop] for(; (inner < 1); inner = (inner + 1)) {
|
||||||
const int x_314 = inner;
|
const int x_314 = inner;
|
||||||
const float x_320 = mm_Bsub[k][(tileCol + inner)];
|
const float x_320 = mm_Bsub[k][(tileCol + inner)];
|
||||||
BCached[x_314] = x_320;
|
BCached[x_314] = x_320;
|
||||||
|
@ -256,12 +256,12 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
}
|
}
|
||||||
innerRow_3 = 0;
|
innerRow_3 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerRow_3 < 1); innerRow_3 = (innerRow_3 + 1)) {
|
[loop] for(; (innerRow_3 < 1); innerRow_3 = (innerRow_3 + 1)) {
|
||||||
const float x_338 = mm_Asub[(tileRow + innerRow_3)][k];
|
const float x_338 = mm_Asub[(tileRow + innerRow_3)][k];
|
||||||
ACached = x_338;
|
ACached = x_338;
|
||||||
innerCol_3 = 0;
|
innerCol_3 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerCol_3 < 1); innerCol_3 = (innerCol_3 + 1)) {
|
[loop] for(; (innerCol_3 < 1); innerCol_3 = (innerCol_3 + 1)) {
|
||||||
const int x_347 = innerRow_3;
|
const int x_347 = innerRow_3;
|
||||||
const int x_348 = innerCol_3;
|
const int x_348 = innerCol_3;
|
||||||
const float x_349 = ACached;
|
const float x_349 = ACached;
|
||||||
|
@ -279,9 +279,9 @@ void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimB
|
||||||
}
|
}
|
||||||
innerRow_4 = 0;
|
innerRow_4 = 0;
|
||||||
{
|
{
|
||||||
for(; (innerRow_4 < 1); innerRow_4 = (innerRow_4 + 1)) {
|
[loop] for(; (innerRow_4 < 1); innerRow_4 = (innerRow_4 + 1)) {
|
||||||
innerCol_4 = 0;
|
innerCol_4 = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
bool x_393 = false;
|
bool x_393 = false;
|
||||||
bool x_394_phi = false;
|
bool x_394_phi = false;
|
||||||
if ((innerCol_4 < 1)) {
|
if ((innerCol_4 < 1)) {
|
||||||
|
@ -352,7 +352,7 @@ void main_inner(uint3 gl_LocalInvocationID_param, uint3 gl_GlobalInvocationID_pa
|
||||||
mm_Bsub[i_1][i_2] = 0.0f;
|
mm_Bsub[i_1][i_2] = 0.0f;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 64u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 64u)) {
|
||||||
const uint i = (idx / 64u);
|
const uint i = (idx / 64u);
|
||||||
const uint i_1 = (idx % 64u);
|
const uint i_1 = (idx % 64u);
|
||||||
mm_Asub[i][i_1] = 0.0f;
|
mm_Asub[i][i_1] = 0.0f;
|
||||||
|
|
|
@ -62,7 +62,7 @@ void main_1() {
|
||||||
stageUnits = (float2(1.0f, 1.0f) / x_111);
|
stageUnits = (float2(1.0f, 1.0f) / x_111);
|
||||||
i = 0;
|
i = 0;
|
||||||
{
|
{
|
||||||
for(; (i < 2); i = (i + 1)) {
|
[loop] for(; (i < 2); i = (i + 1)) {
|
||||||
switch(i) {
|
switch(i) {
|
||||||
case 1: {
|
case 1: {
|
||||||
const float2 x_150 = tileID;
|
const float2 x_150 = tileID;
|
||||||
|
@ -93,7 +93,7 @@ void main_1() {
|
||||||
mt = ((x_181 * x_184) % 1.0f);
|
mt = ((x_181 * x_184) % 1.0f);
|
||||||
f = 0.0f;
|
f = 0.0f;
|
||||||
{
|
{
|
||||||
for(; (f < 8.0f); f = (f + 1.0f)) {
|
[loop] for(; (f < 8.0f); f = (f + 1.0f)) {
|
||||||
const float x_197 = animationData.y;
|
const float x_197 = animationData.y;
|
||||||
if ((x_197 > mt)) {
|
if ((x_197 > mt)) {
|
||||||
const float x_203 = animationData.x;
|
const float x_203 = animationData.x;
|
||||||
|
|
|
@ -244,7 +244,7 @@ void main_1() {
|
||||||
currSampledHeight = 1.0f;
|
currSampledHeight = 1.0f;
|
||||||
i = 0;
|
i = 0;
|
||||||
{
|
{
|
||||||
for(; (i < 15); i = (i + 1)) {
|
[loop] for(; (i < 15); i = (i + 1)) {
|
||||||
const float4 x_397 = TextureSamplerTexture.Sample(TextureSamplerSampler, (v_uv + vCurrOffset));
|
const float4 x_397 = TextureSamplerTexture.Sample(TextureSamplerSampler, (v_uv + vCurrOffset));
|
||||||
currSampledHeight = x_397.w;
|
currSampledHeight = x_397.w;
|
||||||
if ((currSampledHeight > currRayHeight)) {
|
if ((currSampledHeight > currRayHeight)) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
||||||
void f() {
|
void f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
for(; ; ) {
|
[loop] for(; ; ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ typedef tint_padded_array_element tint_symbol_ret[2];
|
||||||
tint_symbol_ret tint_symbol(RWByteAddressBuffer buffer, uint offset) {
|
tint_symbol_ret tint_symbol(RWByteAddressBuffer buffer, uint offset) {
|
||||||
tint_padded_array_element arr_1[2] = (tint_padded_array_element[2])0;
|
tint_padded_array_element arr_1[2] = (tint_padded_array_element[2])0;
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 2u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 2u); i = (i + 1u)) {
|
||||||
arr_1[i].el = asfloat(buffer.Load2((offset + (i * 16u))));
|
arr_1[i].el = asfloat(buffer.Load2((offset + (i * 16u))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ tint_symbol_ret tint_symbol(RWByteAddressBuffer buffer, uint offset) {
|
||||||
void tint_symbol_2(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[2]) {
|
void tint_symbol_2(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[2]) {
|
||||||
tint_padded_array_element array[2] = value;
|
tint_padded_array_element array[2] = value;
|
||||||
{
|
{
|
||||||
for(uint i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
|
[loop] for(uint i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
|
||||||
buffer.Store2((offset + (i_1 * 16u)), asuint(array[i_1].el));
|
buffer.Store2((offset + (i_1 * 16u)), asuint(array[i_1].el));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
||||||
|
|
||||||
int f() {
|
int f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
i = (i + 1);
|
i = (i + 1);
|
||||||
if ((i > 4)) {
|
if ((i > 4)) {
|
||||||
return i;
|
return i;
|
||||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
||||||
|
|
||||||
int f() {
|
int f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
if ((i > 4)) {
|
if ((i > 4)) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,12 @@ void unused_entry_point() {
|
||||||
int f() {
|
int f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
i = (i + 1);
|
i = (i + 1);
|
||||||
if ((i > 4)) {
|
if ((i > 4)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
j = (j + 1);
|
j = (j + 1);
|
||||||
if ((j > 4)) {
|
if ((j > 4)) {
|
||||||
return 2;
|
return 2;
|
||||||
|
|
|
@ -6,11 +6,11 @@ void unused_entry_point() {
|
||||||
int f() {
|
int f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
if ((i > 4)) {
|
if ((i > 4)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
if ((j > 4)) {
|
if ((j > 4)) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ void comp_main_inner(uint3 gl_GlobalInvocationID) {
|
||||||
float2 pos = float2(0.0f, 0.0f);
|
float2 pos = float2(0.0f, 0.0f);
|
||||||
float2 vel = float2(0.0f, 0.0f);
|
float2 vel = float2(0.0f, 0.0f);
|
||||||
{
|
{
|
||||||
for(uint i = 0u; (i < 5u); i = (i + 1u)) {
|
[loop] for(uint i = 0u; (i < 5u); i = (i + 1u)) {
|
||||||
if ((i == index)) {
|
if ((i == index)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ void some_loop_body() {
|
||||||
|
|
||||||
void f() {
|
void f() {
|
||||||
{
|
{
|
||||||
for(int i = 0; (i < 5); i = (i + 1)) {
|
[loop] for(int i = 0; (i < 5); i = (i + 1)) {
|
||||||
some_loop_body();
|
some_loop_body();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ void f() {
|
||||||
int j = 0;
|
int j = 0;
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (true) {
|
[loop] while (true) {
|
||||||
bool tint_tmp = (i < 5);
|
bool tint_tmp = (i < 5);
|
||||||
if (tint_tmp) {
|
if (tint_tmp) {
|
||||||
tint_tmp = (j < 10);
|
tint_tmp = (j < 10);
|
||||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
||||||
void f() {
|
void f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
for(; (i < 4); ) {
|
[loop] for(; (i < 4); ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
||||||
void f() {
|
void f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
for(; ; i = (i + 1)) {
|
[loop] for(; ; i = (i + 1)) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
||||||
|
|
||||||
void f() {
|
void f() {
|
||||||
{
|
{
|
||||||
for(; ; ) {
|
[loop] for(; ; ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
||||||
|
|
||||||
void f() {
|
void f() {
|
||||||
{
|
{
|
||||||
for(int i = 0; ; ) {
|
[loop] for(int i = 0; ; ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
||||||
|
|
||||||
void f() {
|
void f() {
|
||||||
{
|
{
|
||||||
for(int must_not_collide = 0; ; ) {
|
[loop] for(int must_not_collide = 0; ; ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int must_not_collide = 0;
|
int must_not_collide = 0;
|
||||||
|
|
|
@ -6,7 +6,7 @@ struct tint_symbol_1 {
|
||||||
|
|
||||||
void main_inner(uint local_invocation_index) {
|
void main_inner(uint local_invocation_index) {
|
||||||
{
|
{
|
||||||
for(uint idx = local_invocation_index; (idx < 3u); idx = (idx + 1u)) {
|
[loop] for(uint idx = local_invocation_index; (idx < 3u); idx = (idx + 1u)) {
|
||||||
const uint i = idx;
|
const uint i = idx;
|
||||||
v[i] = 0;
|
v[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue