Reland "HLSL: force FXC to never unroll loops"
Now that I've landed this change to Dawn to disable FXC optimizations: https://dawn-review.googlesource.com/c/dawn/+/70700,, we can reland this change. The Tint-into-Dawn roll was failing because FXC would miscompile certain loops into infinite loops when not unrolled. Also reland test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.hlsl Bug: tint:1112 Bug: dawn:1203 Change-Id: I641d68864b833e0fbe3b117d397b89ae96482536 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/71000 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
91785d277b
commit
e2528e9297
|
@ -116,6 +116,13 @@ std::ostream& operator<<(std::ostream& s, const RegisterAndSpace& rs) {
|
|||
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
|
||||
|
||||
SanitizedResult::SanitizedResult() = default;
|
||||
|
@ -2828,7 +2835,7 @@ bool GeneratorImpl::EmitLoop(const ast::LoopStatement* stmt) {
|
|||
};
|
||||
|
||||
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
||||
line() << "while (true) {";
|
||||
line() << LoopAttribute() << "while (true) {";
|
||||
{
|
||||
ScopedIndent si(this);
|
||||
if (!EmitStatements(stmt->body->statements)) {
|
||||
|
@ -2898,7 +2905,7 @@ bool GeneratorImpl::EmitForLoop(const ast::ForLoopStatement* stmt) {
|
|||
};
|
||||
|
||||
TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
|
||||
line() << "while (true) {";
|
||||
line() << LoopAttribute() << "while (true) {";
|
||||
increment_indent();
|
||||
TINT_DEFER({
|
||||
decrement_indent();
|
||||
|
@ -2921,7 +2928,7 @@ bool GeneratorImpl::EmitForLoop(const ast::ForLoopStatement* stmt) {
|
|||
// For-loop can be generated.
|
||||
{
|
||||
auto out = line();
|
||||
out << "for";
|
||||
out << LoopAttribute() << "for";
|
||||
{
|
||||
ScopedParen sp(out);
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ TEST_F(HlslGeneratorImplTest_Continue, Emit_Continue) {
|
|||
gen.increment_indent();
|
||||
|
||||
ASSERT_TRUE(gen.EmitStatement(loop)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
||||
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||
continue;
|
||||
}
|
||||
)");
|
||||
|
|
|
@ -34,7 +34,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_Loop) {
|
|||
gen.increment_indent();
|
||||
|
||||
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
||||
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||
discard;
|
||||
}
|
||||
)");
|
||||
|
@ -54,7 +54,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithContinuing) {
|
|||
gen.increment_indent();
|
||||
|
||||
ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
||||
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||
discard;
|
||||
{
|
||||
a_statement();
|
||||
|
@ -88,8 +88,8 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopNestedWithContinuing) {
|
|||
gen.increment_indent();
|
||||
|
||||
ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( while (true) {
|
||||
while (true) {
|
||||
EXPECT_EQ(gen.result(), R"( [loop] while (true) {
|
||||
[loop] while (true) {
|
||||
discard;
|
||||
{
|
||||
a_statement();
|
||||
|
@ -142,7 +142,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithVarUsedInContinuing) {
|
|||
gen.increment_indent();
|
||||
|
||||
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 other = 0.0f;
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoop) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
for(; ; ) {
|
||||
[loop] for(; ; ) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -193,7 +193,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleInit) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
for(int i = 0; ; ) {
|
||||
[loop] for(int i = 0; ; ) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtInit) {
|
|||
tint_tmp = false;
|
||||
}
|
||||
bool b = (tint_tmp);
|
||||
for(; ; ) {
|
||||
[loop] for(; ; ) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleCond) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
for(; true; ) {
|
||||
[loop] for(; true; ) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtCond) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
bool tint_tmp = true;
|
||||
if (tint_tmp) {
|
||||
tint_tmp = false;
|
||||
|
@ -302,7 +302,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleCont) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
for(; ; i = (i + 1)) {
|
||||
[loop] for(; ; i = (i + 1)) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -329,7 +329,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtCont) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
a_statement();
|
||||
bool tint_tmp = true;
|
||||
if (tint_tmp) {
|
||||
|
@ -358,7 +358,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithSimpleInitCondCont) {
|
|||
|
||||
ASSERT_TRUE(gen.EmitStatement(f)) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"( {
|
||||
for(int i = 0; true; i = (i + 1)) {
|
||||
[loop] for(int i = 0; true; i = (i + 1)) {
|
||||
a_statement();
|
||||
}
|
||||
}
|
||||
|
@ -394,7 +394,7 @@ TEST_F(HlslGeneratorImplTest_Loop, Emit_ForLoopWithMultiStmtInitCondCont) {
|
|||
tint_tmp = false;
|
||||
}
|
||||
bool i = (tint_tmp);
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
bool tint_tmp_1 = true;
|
||||
if (tint_tmp_1) {
|
||||
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_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;
|
||||
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_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))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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_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;
|
||||
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_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))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ S ret_struct_arr() {
|
|||
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
@ -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_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;
|
||||
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_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))));
|
||||
}
|
||||
}
|
||||
|
@ -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]) {
|
||||
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]));
|
||||
}
|
||||
}
|
||||
|
@ -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]) {
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
@ -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]) {
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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_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;
|
||||
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_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))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ typedef int4 tint_symbol_11_ret[4];
|
|||
tint_symbol_11_ret tint_symbol_11(ByteAddressBuffer buffer, uint offset) {
|
||||
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))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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]) {
|
||||
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]));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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_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)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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]) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ typedef int4 tint_symbol_12_ret[4];
|
|||
tint_symbol_12_ret tint_symbol_12(uint4 buffer[96], uint offset) {
|
||||
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;
|
||||
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_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)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ struct tint_symbol_2 {
|
|||
|
||||
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;
|
||||
s.data[i] = 0;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ struct tint_symbol_2 {
|
|||
|
||||
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;
|
||||
s.data[i] = 0;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ struct tint_symbol_3 {
|
|||
float4 main_inner(float2 vUV) {
|
||||
const float3 random = randomTexture.Sample(tint_symbol, vUV).rgb;
|
||||
int i = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if ((i < 1)) {
|
||||
} else {
|
||||
break;
|
||||
|
|
|
@ -21,7 +21,7 @@ static bool2 v2b = bool2(false, false);
|
|||
|
||||
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_int3(v3i, i, 1);
|
||||
set_uint4(v4u, i, 1u);
|
||||
|
@ -33,7 +33,7 @@ void foo() {
|
|||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
{
|
||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ void foo() {
|
|||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
{
|
||||
for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ void main() {
|
|||
bool3 v3b = bool3(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_float3(v3f, i, 1.0f);
|
||||
set_float4(v4f, i, 1.0f);
|
||||
|
|
|
@ -25,7 +25,7 @@ void main() {
|
|||
bool2 v2b = 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_int3(v3i, i, 1);
|
||||
set_uint4(v4u, i, 1u);
|
||||
|
|
|
@ -61,7 +61,7 @@ void main() {
|
|||
bool3 v3b = bool3(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_int2(v2i, i, 1);
|
||||
set_uint2(v2u, i, 1u);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
void main() {
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if (false) {
|
||||
} else {
|
||||
break;
|
||||
|
|
|
@ -22,7 +22,7 @@ struct tint_symbol_2 {
|
|||
|
||||
int main_inner(int3 x) {
|
||||
int y = x.x;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
const int r = f(y);
|
||||
if ((r == 0)) {
|
||||
break;
|
||||
|
|
|
@ -52,9 +52,9 @@ void main_inner(uint3 GlobalInvocationID) {
|
|||
const int TILE_SIZE = 16;
|
||||
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));
|
||||
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));
|
||||
|
@ -66,7 +66,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
|||
frustumPlanes[3] = float4(0.0f, -1.0f, (viewCeilCoord.y / viewNear), 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);
|
||||
if ((frustumPlanes[i].x > 0.0f)) {
|
||||
p.x = boxMax.x;
|
||||
|
|
|
@ -3,7 +3,7 @@ RWByteAddressBuffer b : register(u0, space0);
|
|||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
uint i = 0u;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if ((i >= b.Load(0u))) {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
|||
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
||||
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]));
|
||||
bool tint_tmp_1 = success;
|
||||
if (tint_tmp_1) {
|
||||
|
|
|
@ -15,7 +15,7 @@ void main_inner(uint3 global_id) {
|
|||
const uint dimOutter = uniforms[1].y;
|
||||
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 b = (resultCell.y + (i * dimOutter));
|
||||
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};
|
||||
obj = tint_symbol_11;
|
||||
obj = x_960;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
const int x_961 = pivot;
|
||||
pivot = 0;
|
||||
pivot = x_961;
|
||||
|
@ -453,7 +453,7 @@ void quicksort_() {
|
|||
p = 0;
|
||||
p = x_1027;
|
||||
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 int x_1028 = h_1;
|
||||
h_1 = 0;
|
||||
|
|
|
@ -14,7 +14,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
|||
flatIndex = (flatIndex * 1u);
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ typedef int tint_symbol_ret[6];
|
|||
tint_symbol_ret tint_symbol(ByteAddressBuffer buffer, uint offset) {
|
||||
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))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ struct tint_symbol_1 {
|
|||
|
||||
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_1 = (idx % 64u);
|
||||
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 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;
|
||||
}
|
||||
}
|
||||
|
@ -82,11 +82,11 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
|
|||
const uint RowPerThreadB = (TileInner / 16u);
|
||||
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 inputCol = (tileColA + innerCol);
|
||||
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 inputCol = (tileCol + 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();
|
||||
{
|
||||
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)];
|
||||
}
|
||||
}
|
||||
{
|
||||
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];
|
||||
{
|
||||
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);
|
||||
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);
|
||||
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) {
|
||||
{
|
||||
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_2 = (idx % 256u);
|
||||
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 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)));
|
||||
if ((flip[0].x != 0u)) {
|
||||
loadIndex = loadIndex.yx;
|
||||
|
@ -45,9 +45,9 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
|||
}
|
||||
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)));
|
||||
if ((flip[0].x != 0u)) {
|
||||
writeIndex = writeIndex.yx;
|
||||
|
@ -64,7 +64,7 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
|||
if ((tint_tmp_1)) {
|
||||
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);
|
||||
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);
|
||||
innerRow = 0;
|
||||
{
|
||||
for(; (innerRow < 1); innerRow = (innerRow + 1)) {
|
||||
[loop] for(; (innerRow < 1); innerRow = (innerRow + 1)) {
|
||||
innerCol = 0;
|
||||
{
|
||||
for(; (innerCol < 1); innerCol = (innerCol + 1)) {
|
||||
[loop] for(; (innerCol < 1); innerCol = (innerCol + 1)) {
|
||||
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);
|
||||
t = 0;
|
||||
{
|
||||
for(; (t < numTiles); t = (t + 1)) {
|
||||
[loop] for(; (t < numTiles); t = (t + 1)) {
|
||||
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;
|
||||
{
|
||||
for(; (innerCol_1 < 64); innerCol_1 = (innerCol_1 + 1)) {
|
||||
[loop] for(; (innerCol_1 < 64); innerCol_1 = (innerCol_1 + 1)) {
|
||||
inputRow = (tileRow + innerRow_1);
|
||||
inputCol = (tileColA + innerCol_1);
|
||||
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;
|
||||
{
|
||||
for(; (innerRow_2 < 1); innerRow_2 = (innerRow_2 + 1)) {
|
||||
[loop] for(; (innerRow_2 < 1); innerRow_2 = (innerRow_2 + 1)) {
|
||||
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);
|
||||
inputCol_1 = (tileCol + innerCol_2);
|
||||
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();
|
||||
k = 0;
|
||||
{
|
||||
for(; (k < 64); k = (k + 1)) {
|
||||
[loop] for(; (k < 64); k = (k + 1)) {
|
||||
inner = 0;
|
||||
{
|
||||
for(; (inner < 1); inner = (inner + 1)) {
|
||||
[loop] for(; (inner < 1); inner = (inner + 1)) {
|
||||
const int x_314 = inner;
|
||||
const float x_320 = mm_Bsub[k][(tileCol + inner)];
|
||||
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;
|
||||
{
|
||||
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];
|
||||
ACached = x_338;
|
||||
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_348 = innerCol_3;
|
||||
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;
|
||||
{
|
||||
for(; (innerRow_4 < 1); innerRow_4 = (innerRow_4 + 1)) {
|
||||
[loop] for(; (innerRow_4 < 1); innerRow_4 = (innerRow_4 + 1)) {
|
||||
innerCol_4 = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
bool x_393 = false;
|
||||
bool x_394_phi = false;
|
||||
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;
|
||||
}
|
||||
{
|
||||
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_1 = (idx % 64u);
|
||||
mm_Asub[i][i_1] = 0.0f;
|
||||
|
|
|
@ -62,7 +62,7 @@ void main_1() {
|
|||
stageUnits = (float2(1.0f, 1.0f) / x_111);
|
||||
i = 0;
|
||||
{
|
||||
for(; (i < 2); i = (i + 1)) {
|
||||
[loop] for(; (i < 2); i = (i + 1)) {
|
||||
switch(i) {
|
||||
case 1: {
|
||||
const float2 x_150 = tileID;
|
||||
|
@ -93,7 +93,7 @@ void main_1() {
|
|||
mt = ((x_181 * x_184) % 1.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;
|
||||
if ((x_197 > mt)) {
|
||||
const float x_203 = animationData.x;
|
||||
|
|
|
@ -244,7 +244,7 @@ void main_1() {
|
|||
currSampledHeight = 1.0f;
|
||||
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));
|
||||
currSampledHeight = x_397.w;
|
||||
if ((currSampledHeight > currRayHeight)) {
|
||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
|||
void f() {
|
||||
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_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))));
|
||||
}
|
||||
}
|
||||
|
@ -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]) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
|||
|
||||
int f() {
|
||||
int i = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
i = (i + 1);
|
||||
if ((i > 4)) {
|
||||
return i;
|
||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
|||
|
||||
int f() {
|
||||
int i = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if ((i > 4)) {
|
||||
return i;
|
||||
}
|
||||
|
|
|
@ -6,12 +6,12 @@ void unused_entry_point() {
|
|||
int f() {
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
i = (i + 1);
|
||||
if ((i > 4)) {
|
||||
return 1;
|
||||
}
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
j = (j + 1);
|
||||
if ((j > 4)) {
|
||||
return 2;
|
||||
|
|
|
@ -6,11 +6,11 @@ void unused_entry_point() {
|
|||
int f() {
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if ((i > 4)) {
|
||||
return 1;
|
||||
}
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
if ((j > 4)) {
|
||||
return 2;
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ void comp_main_inner(uint3 gl_GlobalInvocationID) {
|
|||
float2 pos = 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)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ void some_loop_body() {
|
|||
|
||||
void f() {
|
||||
{
|
||||
for(int i = 0; (i < 5); i = (i + 1)) {
|
||||
[loop] for(int i = 0; (i < 5); i = (i + 1)) {
|
||||
some_loop_body();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ void f() {
|
|||
int j = 0;
|
||||
{
|
||||
int i = 0;
|
||||
while (true) {
|
||||
[loop] while (true) {
|
||||
bool tint_tmp = (i < 5);
|
||||
if (tint_tmp) {
|
||||
tint_tmp = (j < 10);
|
||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
|||
void f() {
|
||||
int i = 0;
|
||||
{
|
||||
for(; (i < 4); ) {
|
||||
[loop] for(; (i < 4); ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ void unused_entry_point() {
|
|||
void f() {
|
||||
int i = 0;
|
||||
{
|
||||
for(; ; i = (i + 1)) {
|
||||
[loop] for(; ; i = (i + 1)) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
|||
|
||||
void f() {
|
||||
{
|
||||
for(; ; ) {
|
||||
[loop] for(; ; ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
|||
|
||||
void f() {
|
||||
{
|
||||
for(int i = 0; ; ) {
|
||||
[loop] for(int i = 0; ; ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ void unused_entry_point() {
|
|||
|
||||
void f() {
|
||||
{
|
||||
for(int must_not_collide = 0; ; ) {
|
||||
[loop] for(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) {
|
||||
{
|
||||
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;
|
||||
v[i] = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue