Fix various tests/[frs]* files to be correct with 32 and 64-wide targets.

Still todo: tests/c*, tests/test-*
This commit is contained in:
Matt Pharr
2012-05-30 10:31:12 -07:00
parent d86653668e
commit 5cb53f52c3
45 changed files with 97 additions and 101 deletions

View File

@@ -3,7 +3,7 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
double a = (1<<programIndex) * 1.5;
double a = (1<< (programIndex % 28)) * 1.5;
if (programIndex & 1)
a = -a;
int exponent;
@@ -12,5 +12,5 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
}
export void result(uniform float RET[]) {
RET[programIndex] = 1+programIndex;
RET[programIndex] = 1+(programIndex % 28);
}

View File

@@ -3,7 +3,7 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
double a = (1<<programIndex) * 1.5;
double a = (1<< (programIndex%28)) * 1.5;
if (programIndex & 1)
a = -a;
int exponent;

View File

@@ -3,7 +3,7 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
float a = (1<<programIndex) * 1.5;
float a = (1<< (programIndex%28)) * 1.5;
if (programIndex & 1)
a = -a;
int exponent;
@@ -12,5 +12,5 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
}
export void result(uniform float RET[]) {
RET[programIndex] = 1+programIndex;
RET[programIndex] = 1+(programIndex%28);
}

View File

@@ -3,7 +3,7 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
float a = (1<<programIndex) * 1.5;
float a = (1<< (programIndex%28)) * 1.5;
if (programIndex & 1)
a = -a;
int exponent;

View File

@@ -6,8 +6,8 @@ export uniform int width() { return programCount; }
float f(float);
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = f(a);
int a = aFOO[programIndex];
RET[programIndex] = f(a % 16);
}
float f(float x) {
@@ -16,7 +16,7 @@ float f(float x) {
}
export void result(uniform float RET[]) {
uniform float fib[16] = { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 };
RET[programIndex] = fib[programIndex];
uniform float fib[16] = { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 0 };
RET[programIndex] = fib[programIndex % 16];
}

View File

@@ -11,12 +11,12 @@ float f(float x) {
}
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = f(a);
int a = aFOO[programIndex];
RET[programIndex] = f(a % 16);
}
export void result(uniform float RET[]) {
uniform float fib[16] = { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 };
RET[programIndex] = fib[programIndex];
uniform float fib[16] = { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 0 };
RET[programIndex] = fib[programIndex % 16];
}

View File

@@ -18,6 +18,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
a *= -1;
Point vp = { a, { 2*a, 3*a, 4*a }, {5*a} };
assert(programCount+2 < 80);
pts[2+programIndex] = vp;
RET[programIndex] = pts[programIndex].y[2];

View File

@@ -17,8 +17,8 @@ void set(Foo f[], int offset, Foo val) {
export void f_f(uniform float RET[], uniform float aFOO[]) {
float a = aFOO[programIndex];
Foo foo[35];
for (uniform int i = 0; i < 35; ++i) {
Foo foo[programCount+5];
for (uniform int i = 0; i < programCount+5; ++i) {
foo[i].f = a;
foo[i].a = i;
foo[i].y = 2*a;

View File

@@ -17,8 +17,8 @@ void set(uniform float3 f[], int offset, float3 val) {
export void f_f(uniform float RET[], uniform float aFOO[]) {
float a = aFOO[programIndex];
uniform float3 foo[35];
for (uniform int i = 0; i < 35; ++i) {
uniform float3 foo[programCount+5];
for (uniform int i = 0; i < programCount+5; ++i) {
foo[i].x = i;
foo[i].y = -1;
foo[i].z = 2*i;

View File

@@ -13,6 +13,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
assert(programCount < 80);
RET[programIndex] = pts[programIndex].y;
}

View File

@@ -15,6 +15,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
uniform Point up = pts[1];
assert(programCount < 80);
RET[programIndex] = up.y;
}

View File

@@ -17,6 +17,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
uniform Point up = { b, 3, 170 };
pts[(int64)1] = up;
assert(programCount < 80);
RET[programIndex] = pts[(int64)programIndex].z;
}

View File

@@ -15,10 +15,8 @@ static void p(uniform float *uniform ptr) {
}
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
soa<4> Point pts[10];
//CO uniform Point pts[40];
//CO foreach (i = 0 ... 40) {
for (uniform int i = 0; i < 40; ++i) {
soa<4> Point pts[30];
for (uniform int i = 0; i < 120; ++i) {
pts[i].x = b*i;
pts[i].y[0] = 2*b*i;
pts[i].y[1] = 2*b*i+1;
@@ -26,14 +24,10 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
//CO p((uniform float * uniform)&pts[0]);
//CO print("delta %\n", ((uniform float * varying)(&pts[2+programIndex]) -
//CO (uniform float * uniform)&pts[0]));
float a = aFOO[programIndex];
a *= -1;
Point vp = { a, { 2*a, 3*a, 4*a }, {5*a} };
assert(programCount+2 < 120);
pts[2+programIndex] = vp;
//CO p((uniform float * uniform)&pts[0]);

View File

@@ -15,10 +15,8 @@ static void p(uniform float *uniform ptr) {
}
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
soa<4> Point pts[10];
//CO uniform Point pts[40];
//CO foreach (i = 0 ... 40) {
for (uniform int i = 0; i < 40; ++i) {
soa<4> Point pts[30];
for (uniform int i = 0; i < 120; ++i) {
pts[i].x = b*i;
pts[i].y[0] = 2*b*i;
pts[i].y[1] = 2*b*i+1;
@@ -26,18 +24,12 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
//CO p((uniform float * uniform)&pts[0]);
//CO print("delta %\n", ((uniform float * varying)(&pts[2+programIndex]) -
//CO (uniform float * uniform)&pts[0]));
float a = aFOO[programIndex];
a *= -1;
Point vp = { a, { 2*a, 3*a, 4*a }, {5*a} };
assert(programCount + 2 < 120);
pts[2+programIndex] = vp;
//CO p((uniform float * uniform)&pts[0]);
RET[programIndex] = pts[programIndex].y[2];
}

View File

@@ -16,10 +16,8 @@ static void p(uniform float *uniform ptr) {
}
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
soa<4> Point pts[10];
//CO uniform Point pts[40];
//CO foreach (i = 0 ... 40) {
for (uniform int i = 0; i < 40; ++i) {
soa<4> Point pts[40];
for (uniform int i = 0; i < 160; ++i) {
pts[i].x = b*i;
pts[i].y[0] = 2*b*i;
pts[i].y[1] = 2*b*i+1;
@@ -27,19 +25,12 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
//CO p((uniform float * uniform)&pts[0]);
//CO print("one size %\n", sizeof(soa<4> Point));
//CO print("delta %\n", ((uniform int8 * varying)(&pts[2+programIndex]) -
//CO (uniform int8 * uniform)&pts[0]));
float a = aFOO[programIndex];
a *= -1;
Point vp = { a, { 2*a, 3*a, 4*a }, {5*a} };
assert(2+programIndex < 160);
pts[2+programIndex] = vp;
//CO p((uniform float * uniform)&pts[0]);
RET[programIndex] = pts[programIndex].y[2];
}

View File

@@ -17,6 +17,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
++ptr;
ptr->y = -programIndex;
assert(1+programCount < 80);
RET[programIndex] = pts[1+programIndex].y;
}

View File

@@ -16,6 +16,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
soa<8> Point * ptr = &pts[6+programIndex];
ptr->y = -programIndex;;
assert(6+programIndex < 80);
RET[programIndex] = pts[6+programIndex].y;
}

View File

@@ -13,6 +13,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
assert(programCount < 80);
RET[programIndex] = pts[programIndex].z;
}

View File

@@ -12,7 +12,8 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].y = 2*b*i;
pts[i].z = 3*b*i;
}
assert(6+programIndex < 80);
soa<8> Point * ptr = &pts[6+programIndex];
RET[programIndex] = ptr - pts;
}

View File

@@ -12,8 +12,8 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
foreach (i = 0 ... 32) {
soa<8> Foo * uniform pts = uniform new soa<8> Foo[11];
foreach (i = 0 ... 88) {
pts[i].x = b*i;
pts[i].z = -b*i;
for (uniform int j = 0; j < 10; ++j) {
@@ -23,6 +23,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
}
}
assert(7+programCount < 88);
soa<8> Foo * ptr = &pts[7+programIndex];
RET[programIndex] = ptr->pts[3].z;
}

View File

@@ -12,9 +12,8 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
//CO uniform Foo pts[32];
foreach (i = 0 ... 32) {
soa<8> Foo * uniform pts = uniform new soa<8> Foo[10];
foreach (i = 0 ... 80) {
pts[i].x = b*i;
pts[i].z = -b*i;
for (uniform int j = 0; j < 3; ++j) {
@@ -27,6 +26,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
}
}
assert(programIndex < 80);
RET[programIndex] = pts[programIndex].pts[programIndex % 3][programIndex % 4].z;
}

View File

@@ -11,15 +11,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
//CO uniform Foo pts[32];
foreach (i = 0 ... 32) {
soa<8> Foo * uniform pts = uniform new soa<8> Foo[10];
foreach (i = 0 ... 80) {
pts[i].vec.x = b*i;
pts[i].vec.y = -b*i;
pts[i].vec.z = 2*b*i;
pts[i].z = i;
}
assert(programIndex + 2 < 80);
RET[programIndex] = pts[programIndex+2].vec.y;
}

View File

@@ -11,9 +11,8 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
//CO uniform Foo pts[32];
foreach (i = 0 ... 32) {
soa<8> Foo * uniform pts = uniform new soa<8> Foo[10];
foreach (i = 0 ... 80) {
pts[i].vec.x = b*i;
pts[i].vec.y = -b*i;
pts[i].vec.z = 2*b*i;
@@ -21,6 +20,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
}
pts[programIndex+2].vec.z *= -1;
assert(programIndex < 80);
float<3> vl = pts[programIndex].vec;
RET[programIndex] = vl.z;
}

View File

@@ -11,9 +11,8 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
//CO uniform Foo pts[32];
foreach (i = 0 ... 32) {
soa<8> Foo * uniform pts = uniform new soa<8> Foo[10];
foreach (i = 0 ... 80) {
pts[i].vec.x = b*i;
pts[i].vec.y = -b*i;
pts[i].vec.z = 2*b*i;
@@ -21,6 +20,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
}
pts[2].vec.x *= -1;
assert(programCount < 80);
float<3> vl = pts[programIndex].vec;
RET[programIndex] = vl.x;
}

View File

@@ -12,7 +12,6 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Foo * uniform pts = uniform new soa<8> Foo[4];
//CO uniform Foo pts[32];
for (uniform int i = 0; i < 32; ++i) {
pts[i].vec.x = b*i;
pts[i].vec.y = -b*i;

View File

@@ -6,9 +6,9 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[10];
soa<8> Point pts[20];
foreach (i = b-5 ... 80) {
foreach (i = b-5 ... 160) {
pts[i].x = b*i;
pts[i].y = 2*b*i;
pts[i].z = 3*b*i;
@@ -16,6 +16,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
uniform Point up = pts[4];
assert(2*programCount < 160);
RET[programIndex] = pts[2*programIndex].x;
}

View File

@@ -6,9 +6,9 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[10];
soa<8> Point pts[20];
for (int i = programIndex; i < 16*b; i += programCount) {
for (int i = programIndex; i < 32*b; i += programCount) {
pts[i].x = b*i;
pts[i].y = 2*b*i;
pts[i].z = 3*b*i;
@@ -16,6 +16,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
uniform Point up = pts[4];
assert(2*programIndex < 160);
RET[programIndex] = pts[2*programIndex].x;
}

View File

@@ -16,6 +16,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
pts[i].z = 3*b*i;
}
assert(programCount < 80);
RET[programIndex] = pts[programIndex].y[2];
}

View File

@@ -6,14 +6,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[8];
foreach (i = 0 ... 64) {
soa<8> Point pts[10];
foreach (i = 0 ... 80) {
pts[i].x = 0;
pts[i].y = 0;
pts[i].z = 0;
}
Point pv = { a, b, -a };
assert(8+programCount < 80);
pts[8+programIndex] = pv;
RET[programIndex] = pts[8+programIndex].z;

View File

@@ -6,14 +6,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[8];
foreach (i = 0 ... 64) {
soa<8> Point pts[9];
foreach (i = 0 ... 72) {
pts[i].x = 0;
pts[i].y = 0;
pts[i].z = 0;
}
Point pv = { a, b, -a };
assert(6+programCount < 72);
pts[6+programIndex] = pv;
RET[programIndex] = pts[6+programIndex].x;

View File

@@ -6,14 +6,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[8];
foreach (i = 0 ... 64) {
soa<8> Point pts[11];
foreach (i = 0 ... 88) {
pts[i].x = -42;
pts[i].y = 0;
pts[i].z = 0;
}
Point pv = { a, b, -a };
assert(8+programCount < 88);
pts[8+programIndex] = pv;
RET[programIndex] = pts[6+programIndex].x;

View File

@@ -6,14 +6,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[8];
foreach (i = 0 ... 64) {
soa<8> Point pts[11];
foreach (i = 0 ... 88) {
pts[i].x = -42;
pts[i].y = 0;
pts[i].z = 0;
}
Point pv = { a, b, -a };
assert(8+programCount < 88);
pts[8+programIndex].x = pv.x;
pts[8+programIndex].y = pv.y;
pts[8+programIndex].z = pv.z;

View File

@@ -6,14 +6,15 @@ export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
soa<8> Point pts[8];
foreach (i = 0 ... 64) {
soa<8> Point pts[12];
foreach (i = 0 ... 96) {
pts[i].x = -42;
pts[i].y = 0;
pts[i].z = 0;
}
Point pv = { a, b, -a };
assert(8+programCount < 96);
pts[7+programIndex] = pv;
RET[programIndex] = pts[8+programIndex].x;

View File

@@ -16,6 +16,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
uniform Point up = { b, 3, 170 };
pts[1] = up;
assert(programCount < 80);
RET[programIndex] = pts[programIndex].z;
}

View File

@@ -13,9 +13,9 @@ float func(Foo foo[], int offset) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo[17];
Foo foo[programCount+5];
uniform int i;
for (i = 0; i < 17; ++i)
for (i = 0; i < programCount+5; ++i)
foo[i].f = i*a;
RET[programIndex] = func(foo, (int)a);
}

View File

@@ -13,9 +13,9 @@ float func(Foo foo[], int offset) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo[17];
Foo foo[programCount+1];
uniform int i;
for (i = 0; i < 17; ++i)
for (i = 0; i < programCount+1; ++i)
foo[i].f = i*a;
RET[programIndex] = func(foo, (int)a);
}

View File

@@ -9,9 +9,9 @@ struct Foo {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo[17];
Foo foo[programCount+1];
uniform int i;
for (i = 0; i < 17; ++i)
for (i = 0; i < programCount+1; ++i)
foo[i].f = i*a;
RET[programIndex] = foo[(int)a].f;
}

View File

@@ -11,8 +11,8 @@ void f(Foo foo[], float a) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo[17];
for (uniform int i = 0; i < 17; ++i)
Foo foo[programCount+5];
for (uniform int i = 0; i < programCount+5; ++i)
foo[i].f = a;
f(foo, a);
RET[programIndex] = foo[a].f;

View File

@@ -10,12 +10,13 @@ struct Foo {
export void f_fi(uniform float RET[], uniform float aFOO[], uniform int bFOO[]) {
float a = aFOO[programIndex];
int b = bFOO[programIndex];
varying Foo myFoo[17];
varying Foo myFoo[128];
uniform int i;
for (i = 0; i < 17; ++i) {
for (i = 0; i < 128; ++i) {
myFoo[i].x = i;
myFoo[i].f = 2*i;
}
assert(b/2 < 128);
RET[programIndex] = myFoo[b/2].f;
}

View File

@@ -7,13 +7,14 @@ struct Foo { float f; };
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo[17];
for (uniform int i = 0; i < 17; ++i)
Foo foo[programCount+1];
uniform int ind[programCount+1];
for (uniform int i = 0; i < programCount+1; ++i) {
foo[i].f = a;
ind[i] = i+1;
}
++foo[a].f;
assert(programCount <= 16);
uniform int i[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
RET[programIndex] = foo[i[programIndex]].f;
RET[programIndex] = foo[ind[programIndex]].f;
}
export void result(uniform float RET[]) { RET[programIndex] = 2+programIndex; }

View File

@@ -21,7 +21,7 @@ int switchit(int a, uniform int b) {
}
return -1234;
}
case 32:
case 9999:
*((int *)NULL) = 0;
default:
return 0;

View File

@@ -27,7 +27,7 @@ int switchit(int a, uniform int b) {
}
return 42;
}
case 32:
case 9999:
*((int *)NULL) = 0;
default:
return 0;

View File

@@ -31,7 +31,7 @@ int switchit(int a, uniform int b) {
}
return 42;
}
case 32:
case 9999:
*((int *)NULL) = 0;
default:
return 0;

View File

@@ -12,7 +12,7 @@ int switchit(int a, uniform int b) {
if (a & 1)
break;
return 2;
case 32:
case 9999:
*((int *)NULL) = 0;
default:
case 1:

View File

@@ -12,7 +12,7 @@ int switchit(int a, uniform int b) {
if (a & 1)
break;
return 2;
case 32:
case 9999:
*((int *)NULL) = 0;
default:
return 0;