mirror of
https://github.com/KhronosGroup/SPIRV-Cross.git
synced 2024-11-09 22:00:05 +00:00
Optimize += 1, -= 1 to ++, --.
Purely cosmetic, but easier to read.
This commit is contained in:
parent
62613df5a5
commit
d11b8aa3ef
@ -64,7 +64,7 @@ void test()
|
||||
}
|
||||
}
|
||||
float h;
|
||||
for (int i = 0; i < 20; i += 1, h += 10.0)
|
||||
for (int i = 0; i < 20; i++, h += 10.0)
|
||||
{
|
||||
}
|
||||
_11.data = h;
|
||||
|
@ -22,7 +22,7 @@ void main()
|
||||
do
|
||||
{
|
||||
idat = _28.mvp * idat;
|
||||
i += 1;
|
||||
i++;
|
||||
} while (i < 16);
|
||||
_52.out_data[ident] = idat;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ void main()
|
||||
do
|
||||
{
|
||||
k *= 2;
|
||||
i += uint(1);
|
||||
i++;
|
||||
} while (i < ident);
|
||||
}
|
||||
switch (k)
|
||||
@ -32,7 +32,7 @@ void main()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
i += uint(1);
|
||||
i++;
|
||||
if (i > 10u)
|
||||
{
|
||||
break;
|
||||
@ -58,11 +58,11 @@ void main()
|
||||
while (k < 10)
|
||||
{
|
||||
idat *= 2.0;
|
||||
k += 1;
|
||||
k++;
|
||||
}
|
||||
for (uint i_1 = 0u; i_1 < 16u; i_1 += uint(1), k += 1)
|
||||
for (uint i_1 = 0u; i_1 < 16u; i_1++, k++)
|
||||
{
|
||||
for (uint j = 0u; j < 30u; j += uint(1))
|
||||
for (uint j = 0u; j < 30u; j++)
|
||||
{
|
||||
idat = _24.mvp * idat;
|
||||
}
|
||||
@ -70,7 +70,7 @@ void main()
|
||||
k = 0;
|
||||
for (;;)
|
||||
{
|
||||
k += 1;
|
||||
k++;
|
||||
if (k > 10)
|
||||
{
|
||||
k += 2;
|
||||
@ -86,18 +86,18 @@ void main()
|
||||
k = 0;
|
||||
do
|
||||
{
|
||||
k += 1;
|
||||
k++;
|
||||
} while (k > 10);
|
||||
int l = 0;
|
||||
for (;;)
|
||||
{
|
||||
if (l == 5)
|
||||
{
|
||||
l += 1;
|
||||
l++;
|
||||
continue;
|
||||
}
|
||||
idat += vec4(1.0);
|
||||
l += 1;
|
||||
l++;
|
||||
continue;
|
||||
}
|
||||
_177.out_data[ident] = idat;
|
||||
|
@ -21,7 +21,7 @@ void main()
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 20; i += 1)
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
if (i == 10)
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ void main()
|
||||
if (_40 < 10)
|
||||
{
|
||||
idat *= 2.0;
|
||||
k += 1;
|
||||
k++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
@ -33,16 +33,16 @@ void main()
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (uint i = 0u; i < 16u; i += uint(1), k += 1)
|
||||
for (uint i = 0u; i < 16u; i++, k++)
|
||||
{
|
||||
for (uint j = 0u; j < 30u; j += uint(1))
|
||||
for (uint j = 0u; j < 30u; j++)
|
||||
{
|
||||
idat = _24.mvp * idat;
|
||||
}
|
||||
}
|
||||
do
|
||||
{
|
||||
k += 1;
|
||||
k++;
|
||||
} while (k > 10);
|
||||
_89.out_data[ident] = idat;
|
||||
}
|
||||
|
@ -7,16 +7,16 @@ layout(location = 0) out mediump int FragColor;
|
||||
void main()
|
||||
{
|
||||
FragColor = 15;
|
||||
for (mediump int i = 0; i < 25; i += 1)
|
||||
for (mediump int i = 0; i < 25; i++)
|
||||
{
|
||||
FragColor += 10;
|
||||
}
|
||||
for (mediump int j = 4, i_1 = 1; i_1 < 30; i_1 += 1, j += 4)
|
||||
for (mediump int j = 4, i_1 = 1; i_1 < 30; i_1++, j += 4)
|
||||
{
|
||||
FragColor += 11;
|
||||
}
|
||||
mediump int k = 0;
|
||||
for (; k < 20; k += 1)
|
||||
for (; k < 20; k++)
|
||||
{
|
||||
FragColor += 12;
|
||||
}
|
||||
@ -26,7 +26,7 @@ void main()
|
||||
if (k == 40)
|
||||
{
|
||||
l = 0;
|
||||
for (; l < 40; l += 1)
|
||||
for (; l < 40; l++)
|
||||
{
|
||||
FragColor += 13;
|
||||
}
|
||||
@ -38,12 +38,12 @@ void main()
|
||||
FragColor += l;
|
||||
}
|
||||
mediump ivec2 i_2 = ivec2(0);
|
||||
for (; i_2.x < 10; i_2.x += 1)
|
||||
for (; i_2.x < 10; i_2.x += 4)
|
||||
{
|
||||
FragColor += i_2.y;
|
||||
}
|
||||
mediump int o = k;
|
||||
for (mediump int m = k; m < 40; m += 1)
|
||||
for (mediump int m = k; m < 40; m++)
|
||||
{
|
||||
FragColor += m;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ void main()
|
||||
}
|
||||
|
||||
// Vectors cannot be loop variables
|
||||
for (ivec2 i = ivec2(0); i.x < 10; i.x++)
|
||||
for (ivec2 i = ivec2(0); i.x < 10; i.x += 4)
|
||||
{
|
||||
FragColor += i.y;
|
||||
}
|
||||
|
@ -3430,6 +3430,9 @@ bool CompilerGLSL::optimize_read_modify_write(const string &lhs, const string &r
|
||||
{
|
||||
// Do this with strings because we have a very clear pattern we can check for and it avoids
|
||||
// adding lots of special cases to the code emission.
|
||||
if (rhs.size() < lhs.size() + 3)
|
||||
return false;
|
||||
|
||||
auto index = rhs.find(lhs);
|
||||
if (index != 0)
|
||||
return false;
|
||||
@ -3439,7 +3442,14 @@ bool CompilerGLSL::optimize_read_modify_write(const string &lhs, const string &r
|
||||
if (op != lhs.size() + 1)
|
||||
return false;
|
||||
|
||||
statement(lhs, " ", rhs[op], "=", rhs.substr(lhs.size() + 2), ";");
|
||||
char bop = rhs[op];
|
||||
auto expr = rhs.substr(lhs.size() + 3);
|
||||
// Try to find increments and decrements. Makes it look neater as += 1, -= 1 is fairly rare to see in real code.
|
||||
// Find some common patterns which are equivalent.
|
||||
if ((bop == '+' || bop == '-') && (expr == "1" || expr == "uint(1)" || expr == "1u" || expr == "int(1u)"))
|
||||
statement(lhs, bop, bop, ";");
|
||||
else
|
||||
statement(lhs, " ", bop, "= ", expr, ";");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user