Allow 'continue' statements in 'foreach' loops.
This commit is contained in:
20
tests/foreach-20.ispc
Normal file
20
tests/foreach-20.ispc
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
RET[i] = 0;
|
||||
|
||||
foreach (i = 0 ... programCount) {
|
||||
if (i % 2)
|
||||
continue;
|
||||
RET[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = (programIndex % 2) ? 0 : 1;
|
||||
}
|
||||
20
tests/foreach-21.ispc
Normal file
20
tests/foreach-21.ispc
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
RET[i] = 0;
|
||||
|
||||
foreach (i = 0 ... programCount) {
|
||||
if (i % 2)
|
||||
ccontinue;
|
||||
RET[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = (programIndex % 2) ? 0 : 1;
|
||||
}
|
||||
27
tests/foreach-22.ispc
Normal file
27
tests/foreach-22.ispc
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
for (uniform int i = 0; i < 21; ++i)
|
||||
x[i] = i;
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
if (i < 4)
|
||||
ccontinue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 1;
|
||||
RET[0] = 0;
|
||||
RET[1] = 1;
|
||||
RET[2] = 2;
|
||||
RET[3] = 3;
|
||||
}
|
||||
27
tests/foreach-23.ispc
Normal file
27
tests/foreach-23.ispc
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
for (uniform int i = 0; i < 21; ++i)
|
||||
x[i] = i;
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
if (i < 4)
|
||||
continue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 1;
|
||||
RET[0] = 0;
|
||||
RET[1] = 1;
|
||||
RET[2] = 2;
|
||||
RET[3] = 3;
|
||||
}
|
||||
27
tests/foreach-24.ispc
Normal file
27
tests/foreach-24.ispc
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
for (uniform int i = 0; i < 21; ++i)
|
||||
x[i] = i;
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
if (i < 4)
|
||||
continue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 1;
|
||||
RET[0] = 0;
|
||||
RET[1] = 1;
|
||||
RET[2] = 2;
|
||||
RET[3] = 3;
|
||||
}
|
||||
23
tests/foreach-25.ispc
Normal file
23
tests/foreach-25.ispc
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
x[i] = 0;
|
||||
if (x[i] != 12345)
|
||||
continue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 0;
|
||||
}
|
||||
24
tests/foreach-26.ispc
Normal file
24
tests/foreach-26.ispc
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
for (uniform int i = 0; i < 21; ++i)
|
||||
x[i] = i;
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
if (x[i] != 12345)
|
||||
continue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = min(programIndex, 20);
|
||||
}
|
||||
23
tests/foreach-27.ispc
Normal file
23
tests/foreach-27.ispc
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int x[21];
|
||||
for (uniform int i = 0; i < 21; ++i)
|
||||
x[i] = i;
|
||||
|
||||
foreach (i = 0 ... 21) {
|
||||
if (x[i] == 12345)
|
||||
continue;
|
||||
x[i] = 1;
|
||||
}
|
||||
|
||||
RET[programIndex] = x[min(programIndex, 20)];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 1;
|
||||
}
|
||||
21
tests/foreach-28.ispc
Normal file
21
tests/foreach-28.ispc
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float ub) {
|
||||
float b = ub;
|
||||
RET[programIndex] = 0;
|
||||
|
||||
foreach (i = 0 ... 10, j = 0 ... programCount + 1) {
|
||||
if (b == 12345)
|
||||
ccontinue;
|
||||
if (j > 0)
|
||||
++RET[j-1];
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 10;
|
||||
}
|
||||
21
tests/foreach-29.ispc
Normal file
21
tests/foreach-29.ispc
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float ub) {
|
||||
float b = ub;
|
||||
RET[programIndex] = 0;
|
||||
|
||||
foreach (i = 0 ... 10, j = 0 ... programCount + 1) {
|
||||
if (ub == 12345)
|
||||
ccontinue;
|
||||
if (j > 0)
|
||||
++RET[j-1];
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 10;
|
||||
}
|
||||
20
tests/foreach-30.ispc
Normal file
20
tests/foreach-30.ispc
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float ub) {
|
||||
RET[programIndex] = 0;
|
||||
|
||||
foreach (i = 0 ... 10, j = 0 ... programCount + 1) {
|
||||
if (i == 5)
|
||||
continue;
|
||||
if (j > 0)
|
||||
++RET[j-1];
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 9;
|
||||
}
|
||||
20
tests/foreach-31.ispc
Normal file
20
tests/foreach-31.ispc
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
uniform int foo(int i);
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float ub) {
|
||||
RET[programIndex] = 0;
|
||||
|
||||
foreach (i = 0 ... 10, j = 0 ... programCount + 1) {
|
||||
if (i == 5)
|
||||
ccontinue;
|
||||
if (j > 0)
|
||||
++RET[j-1];
|
||||
}
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 9;
|
||||
}
|
||||
Reference in New Issue
Block a user