2021-09-04 18:44:19 +00:00
|
|
|
uniform half4 colorRed, colorGreen;
|
|
|
|
|
2021-01-13 22:17:56 +00:00
|
|
|
// Should return 5
|
|
|
|
float return_loop() {
|
|
|
|
for (float i = 0; i < 10; ++i) {
|
|
|
|
if (i == 5) { return i; }
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Should return 35
|
|
|
|
float continue_loop() {
|
|
|
|
float sum = 0;
|
|
|
|
for (float i = 0; i < 10; ++i) {
|
|
|
|
if (i < 5) { continue; }
|
|
|
|
sum += i;
|
|
|
|
}
|
|
|
|
return sum;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Should return 15
|
|
|
|
float break_loop() {
|
|
|
|
float sum = 0;
|
|
|
|
for (float i = 0; i < 10; ++i) {
|
|
|
|
if (i > 5) { break; }
|
|
|
|
sum += i;
|
|
|
|
}
|
|
|
|
return sum;
|
|
|
|
}
|
|
|
|
|
2021-09-04 18:44:19 +00:00
|
|
|
// Should return a value close to zero
|
2021-01-13 22:17:56 +00:00
|
|
|
float float_loop() {
|
|
|
|
float sum = 0;
|
|
|
|
for (float i = 0.123; i < 0.6; i += 0.111) {
|
|
|
|
sum += i;
|
|
|
|
}
|
2021-09-04 18:44:19 +00:00
|
|
|
return sum - 1.725;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_le() {
|
|
|
|
// These loops are inside-out and execute zero times.
|
|
|
|
for (float i = 3; i <= 1; ++i) { return false; }
|
|
|
|
for (float i = 3; i <= 1; --i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 1; i <= 3; ++i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 1, 2, 3);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_lt() {
|
|
|
|
// These loops are inside-out and execute zero times.
|
|
|
|
for (float i = 4; i < 1; ++i) { return false; }
|
|
|
|
for (float i = 4; i < 1; --i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 1; i < 4; ++i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 1, 2, 3);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_ge() {
|
|
|
|
// These loops are inside-out and execute zero times.
|
|
|
|
for (float i = 1; i >= 3; ++i) { return false; }
|
|
|
|
for (float i = 1; i >= 3; --i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 3; i >= 1; --i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 3, 2, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_gt() {
|
|
|
|
// These loops are inside-out and execute zero times.
|
|
|
|
for (float i = 0; i > 3; ++i) { return false; }
|
|
|
|
for (float i = 0; i > 3; --i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 3; i > 0; --i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 3, 2, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_ne() {
|
|
|
|
// This loop executes zero times.
|
|
|
|
for (int i = 1; i != 1; ++i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 1; i != 4; ++i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 1, 2, 3);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool loop_operator_eq() {
|
|
|
|
// This loops mismatches and executes zero times.
|
|
|
|
for (float i = 1; i == 2; ++i) { return false; }
|
|
|
|
|
|
|
|
float4 result = float4(9);
|
|
|
|
for (float i = 1; i == 1; ++i) {
|
|
|
|
result = float4(result.yzw, i);
|
|
|
|
}
|
|
|
|
return result == float4(9, 9, 9, 1);
|
2021-01-13 22:17:56 +00:00
|
|
|
}
|
|
|
|
|
2021-04-28 21:41:57 +00:00
|
|
|
half4 main(float2 xy) {
|
2021-09-04 18:44:19 +00:00
|
|
|
return (return_loop() == 5 && continue_loop() == 35 &&
|
|
|
|
break_loop() == 15 && abs(float_loop()) < 0.025 &&
|
|
|
|
loop_operator_le() && loop_operator_lt() &&
|
|
|
|
loop_operator_ge() && loop_operator_gt() &&
|
|
|
|
loop_operator_eq() && loop_operator_ne()) ? colorGreen : colorRed;
|
2021-01-13 22:17:56 +00:00
|
|
|
}
|