merged with nvptx
This commit is contained in:
@@ -5,7 +5,13 @@ export uniform int width() { return programCount; }
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
assert(programCount <= 64);
|
||||
#ifdef __NVPTX__
|
||||
uniform float * uniform xarr = uniform new uniform float[70*70];
|
||||
uniform float (* uniform x)[70] = (uniform float (* uniform)[70])xarr;
|
||||
#define _SHMALLOC
|
||||
#else
|
||||
uniform float x[70][70];
|
||||
#endif
|
||||
for (uniform int i = 0; i < 70; ++i)
|
||||
for (uniform int j = 0; j < 70; ++j)
|
||||
x[i][j] = 2+b-5;
|
||||
@@ -16,6 +22,10 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
else
|
||||
x[b-1][a-1] = 1;
|
||||
RET[programIndex] = x[4][a];
|
||||
|
||||
#ifdef _SHMALLOC
|
||||
delete xarr;
|
||||
#endif
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
|
||||
@@ -3,7 +3,7 @@ export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
float b = (programCount == 1) ? 3 : broadcast(a, 2);
|
||||
float b = (programCount == 1) ? 4 : broadcast(a, 2);
|
||||
RET[programIndex] = b;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,8 +19,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 2;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 5;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 6;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 2;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 5;
|
||||
RET[i+3] = 6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ export void f_fu(uniform float RET[4], uniform float aFOO[4], uniform float b) {
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 3;
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 32;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 38;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 39;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+2] = 38;
|
||||
RET[i+3] = 39;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,14 +4,14 @@ export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
struct Foo {
|
||||
uniform float x[17];
|
||||
uniform float x[programCount+1];
|
||||
};
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform Foo foo;
|
||||
uniform int i;
|
||||
cfor (i = 0; i < 17; ++i)
|
||||
cfor (i = 0; i < programCount+1; ++i)
|
||||
foo.x[i] = i;
|
||||
|
||||
if ((int)a & 1)
|
||||
|
||||
@@ -4,9 +4,9 @@ export uniform int width() { return programCount; }
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform double udx[25][25];
|
||||
cfor (uniform int i = 0; i < 25; ++i)
|
||||
cfor (uniform int j = 0; j < 25; ++j)
|
||||
uniform double udx[programCount+1][programCount+1];
|
||||
cfor (uniform int i = 0; i < programCount+1; ++i)
|
||||
cfor (uniform int j = 0; j < programCount+1; ++j)
|
||||
udx[i][j] = 10*i+j;
|
||||
|
||||
int x = 1;
|
||||
|
||||
@@ -5,9 +5,9 @@ export uniform int width() { return programCount; }
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform float udx[20][20];
|
||||
cfor (uniform int i = 0; i < 20; ++i)
|
||||
cfor (uniform int j = 0; j < 20; ++j)
|
||||
uniform float udx[programCount+1][programCount+1];
|
||||
cfor (uniform int i = 0; i < programCount+1; ++i)
|
||||
cfor (uniform int j = 0; j < programCount+1; ++j)
|
||||
udx[i][j] = 100*i+j;
|
||||
|
||||
int x = 1;
|
||||
|
||||
@@ -4,19 +4,27 @@ export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
struct Foo {
|
||||
uniform float udx[25][25];
|
||||
uniform float udx[32][32];
|
||||
};
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
#ifndef __NVPTX__
|
||||
uniform Foo f[5];
|
||||
#else /* too much shared memory allocated, nvcc fails to link */
|
||||
uniform Foo * uniform f = uniform new uniform Foo[5];
|
||||
#define _UNMALLOC
|
||||
#endif
|
||||
cfor (uniform int i = 0; i < 5; ++i)
|
||||
cfor (uniform int j = 0; j < 25; ++j)
|
||||
cfor (uniform int k = 0; k < 25; ++k)
|
||||
cfor (uniform int j = 0; j < 32; ++j)
|
||||
cfor (uniform int k = 0; k < 32; ++k)
|
||||
f[i].udx[j][k] = 1000*i+100*j+k;
|
||||
|
||||
int x = 1;
|
||||
RET[programIndex] = f[x+1].udx[b-4][programIndex];
|
||||
#ifdef _UNMALLOC
|
||||
delete f;
|
||||
#endif
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) { RET[programIndex] = 2100 +programIndex; }
|
||||
|
||||
@@ -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;
|
||||
cfor (i = 0; i < 17; ++i)
|
||||
cfor (i = 0; i < programCount+1; ++i)
|
||||
foo[i].f = i*a;
|
||||
RET[programIndex] = func(foo, (int)a);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
cfor (i = 0; i < 17; ++i)
|
||||
cfor (i = 0; i < programCount+1; ++i)
|
||||
foo[i].f = i*a;
|
||||
RET[programIndex] = func(foo, (int)a);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
cfor (i = 0; i < 17; ++i)
|
||||
cfor (i = 0; i < programCount+1; ++i)
|
||||
foo[i].f = i*a;
|
||||
RET[programIndex] = foo[(int)a].f;
|
||||
}
|
||||
|
||||
@@ -10,9 +10,9 @@ 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[programCount+1];
|
||||
uniform int i;
|
||||
cfor (i = 0; i < 17; ++i) {
|
||||
cfor (i = 0; i < programCount+1; ++i) {
|
||||
myFoo[i].x = i;
|
||||
myFoo[i].f = 2*i;
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 2;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 5;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 6;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 2;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 5;
|
||||
RET[i+3] = 6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 32;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 32;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 38;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 39;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 32;
|
||||
RET[i+1] = 32;
|
||||
RET[i+2] = 38;
|
||||
RET[i+3] = 39;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ struct Foo {
|
||||
};
|
||||
export void f_fi(uniform float RET[], uniform float a[], uniform int bFOO[]) {
|
||||
int b = bFOO[programIndex];
|
||||
uniform struct Foo myFoo[17];
|
||||
uniform struct Foo myFoo[programCount+1];
|
||||
uniform int i;
|
||||
cfor (i = 0; i < 17; ++i) {
|
||||
cfor (i = 0; i < programCount+1; ++i) {
|
||||
myFoo[i].x = i;
|
||||
myFoo[i].f = 2*i;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int x = (1 << 4) - ~0xf0f0f0f0 + (2 * 8 / 2);
|
||||
static uniform int y = (1 << 4) - ~0xf0f0f0f0 + (2 * 8 / 2);
|
||||
const static uniform int y = (1 << 4) - ~0xf0f0f0f0 + (2 * 8 / 2);
|
||||
RET[programIndex] = (x == y) ? 1. : 0.;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int x = (170 >> 4) % 5;
|
||||
static uniform int y = (170 >> 4) % 5;
|
||||
const static uniform int y = (170 >> 4) % 5;
|
||||
RET[programIndex] = (x == y) ? 1. : 0.;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int x = (17 < 2) || (6 >= 5) && (20 >= 20);
|
||||
static uniform int y = (17 < 2) || (6 >= 5) && (20 >= 20);
|
||||
const static uniform int y = (17 < 2) || (6 >= 5) && (20 >= 20);
|
||||
RET[programIndex] = ((x!=0) == (y!=0)) ? 1. : 0.;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,22 +2,23 @@
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
#define N0 10
|
||||
#define N0 12
|
||||
#define N1 20
|
||||
#define N2 50
|
||||
static uniform float array[N2][N1][N0];
|
||||
|
||||
task void x(const float f) {
|
||||
task void x(const uniform float farray[]) {
|
||||
const float f = farray[programIndex];
|
||||
uniform int j;
|
||||
|
||||
assert(taskCount == (int32)N0*N1*N2);
|
||||
assert(taskCount0 == (int32)N0);
|
||||
assert(taskCount1 == (int32)N1);
|
||||
assert(taskCount2 == (int32)N2);
|
||||
assert(taskIndex == (int32)taskIndex0 + (int32)N0*(taskIndex1 +(int32) N1*taskIndex2));
|
||||
assert(taskIndex0 < (int32)N0);
|
||||
assert(taskIndex1 < (int32)N1);
|
||||
assert(taskIndex2 < (int32)N2);
|
||||
assert(taskCount == (uniform int32)N0*N1*N2);
|
||||
assert(taskCount0 == (uniform int32)N0);
|
||||
assert(taskCount1 == (uniform int32)N1);
|
||||
assert(taskCount2 == (uniform int32)N2);
|
||||
assert(taskIndex == (uniform int32)taskIndex0 + (uniform int32)N0*(taskIndex1 +(uniform int32) N1*taskIndex2));
|
||||
assert(taskIndex0 < (uniform int32)N0);
|
||||
assert(taskIndex1 < (uniform int32)N1);
|
||||
assert(taskIndex2 < (uniform int32)N2);
|
||||
|
||||
const uniform int i0 = taskIndex0;
|
||||
const uniform int i1 = taskIndex1;
|
||||
@@ -30,7 +31,7 @@ task void x(const float f) {
|
||||
array[i2][i1][i0] = i;
|
||||
}
|
||||
export void f_f(uniform float RET[], uniform float fFOO[]) {
|
||||
float f = fFOO[programIndex];
|
||||
uniform float * uniform f = fFOO;
|
||||
launch[N2][N1][N0] x(f);
|
||||
sync;
|
||||
RET[programIndex] = array[N2-1][N1-1][N0-1];
|
||||
@@ -38,5 +39,5 @@ export void f_f(uniform float RET[], uniform float fFOO[]) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 9999.000000;
|
||||
RET[programIndex] = 11999.000000;
|
||||
}
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
#define N0 10
|
||||
#define N0 12
|
||||
#define N1 20
|
||||
#define N2 50
|
||||
static uniform float array[N2][N1][N0];
|
||||
|
||||
task void x(const float f) {
|
||||
task void x(const uniform float farray[]) {
|
||||
const float f = farray[programIndex];
|
||||
uniform int j;
|
||||
|
||||
assert(taskCount == (int32)N0*N1*N2);
|
||||
@@ -30,13 +31,13 @@ task void x(const float f) {
|
||||
array[i2][i1][i0] = i;
|
||||
}
|
||||
export void f_f(uniform float RET[], uniform float fFOO[]) {
|
||||
float f = fFOO[programIndex];
|
||||
launch[N0,N1,N2] x(f);
|
||||
uniform float * uniform f = fFOO;
|
||||
launch[N2][N1][N0] x(f);
|
||||
sync;
|
||||
RET[programIndex] = array[N2-1][N1-1][N0-1];
|
||||
}
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 9999.000000;
|
||||
RET[programIndex] = 11999.000000;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
#ifdef __NVPTX__
|
||||
uniform int _off[programCount];
|
||||
#define off _off[programIndex]
|
||||
#else /* global varying data types are not yet supported with "nvptx" target */
|
||||
int off;
|
||||
#endif
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
@@ -22,11 +27,11 @@ struct S operator/(struct S rr, struct S rv) {
|
||||
return c;
|
||||
}
|
||||
|
||||
struct S a;
|
||||
struct S b;
|
||||
struct S d;
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
struct S a;
|
||||
struct S b;
|
||||
struct S d;
|
||||
int T = programIndex;
|
||||
a.a = aFOO[programIndex];
|
||||
b.a = -aFOO[programIndex];
|
||||
|
||||
@@ -15,6 +15,16 @@ static void p(uniform float *uniform ptr) {
|
||||
}
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
#ifdef __NVPTX__ /* soa is converted to shared memory story for now, use smaller amount to check the test */
|
||||
soa<4> Point pts[10];
|
||||
for (uniform int i = 0; i < 40; ++i) {
|
||||
pts[i].x = b*i;
|
||||
pts[i].y[0] = 2*b*i;
|
||||
pts[i].y[1] = 2*b*i+1;
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#else
|
||||
soa<4> Point pts[30];
|
||||
for (uniform int i = 0; i < 120; ++i) {
|
||||
pts[i].x = b*i;
|
||||
@@ -23,6 +33,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#endif
|
||||
|
||||
float a = aFOO[programIndex];
|
||||
a *= -1;
|
||||
|
||||
@@ -16,6 +16,16 @@ static void p(uniform float *uniform ptr) {
|
||||
}
|
||||
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
#ifdef __NVPTX__ /* soa is converted to shared memory story for now, use smaller amount to check the test */
|
||||
soa<4> Point pts[15];
|
||||
for (uniform int i = 0; i < 60; ++i) {
|
||||
pts[i].x = b*i;
|
||||
pts[i].y[0] = 2*b*i;
|
||||
pts[i].y[1] = 2*b*i+1;
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#else
|
||||
soa<4> Point pts[40];
|
||||
for (uniform int i = 0; i < 160; ++i) {
|
||||
pts[i].x = b*i;
|
||||
@@ -24,6 +34,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#endif
|
||||
|
||||
float a = aFOO[programIndex];
|
||||
a *= -1;
|
||||
|
||||
@@ -25,7 +25,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;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,17 @@ export uniform int width() { return programCount; }
|
||||
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
float a = aFOO[programIndex];
|
||||
|
||||
#ifdef __NVPTX__ /* soa is converted to shared memory story for now, use smaller amount to check the test */
|
||||
soa<8> Point pts[4];
|
||||
//CO uniform Point pts[80];
|
||||
foreach (i = 0 ... 40) {
|
||||
pts[i].x = b*i;
|
||||
pts[i].y[0] = 2*b*i;
|
||||
pts[i].y[1] = 2*b*i+1;
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#else
|
||||
soa<8> Point pts[10];
|
||||
//CO uniform Point pts[80];
|
||||
foreach (i = 0 ... 80) {
|
||||
@@ -15,6 +26,7 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
pts[i].y[2] = 2*b*i+2;
|
||||
pts[i].z = 3*b*i;
|
||||
}
|
||||
#endif
|
||||
|
||||
assert(programCount < 80);
|
||||
RET[programIndex] = pts[programIndex].y[2];
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
||||
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 1;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 3;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 3;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 29;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 1;
|
||||
RET[i+1] = 3;
|
||||
RET[i+2] = 3;
|
||||
RET[i+3] = 29;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,11 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[0] = RET[4] = RET[8] = RET[12] = 0x0.0p+0;
|
||||
RET[1] = RET[5] = RET[9] = RET[13] = 0x1.62e43p-1;
|
||||
RET[2] = RET[6] = RET[10] = RET[14] = 0x1.193ea8p+0;
|
||||
RET[3] = RET[7] = RET[11] = RET[15] = 0x1.62e43p+0;
|
||||
for (int i = 0; i < programCount; i += 4)
|
||||
{
|
||||
RET[i+0] = 0x0.0p+0;
|
||||
RET[i+1] = 0x1.62e43p-1;
|
||||
RET[i+2] = 0x1.193ea8p+0;
|
||||
RET[i+3] = 0x1.62e43p+0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
// calculation error 1e-6 is the same as in icc
|
||||
RET[programIndex] = (exp(-log(1/a)) - a) < 1e-6 ? 1 : 0;
|
||||
RET[programIndex] = (exp(-log(1/a)) - a)/a < 1e-6 ? 1 : 0;
|
||||
}
|
||||
|
||||
export void result(uniform float RET[4]) {
|
||||
|
||||
@@ -4,7 +4,7 @@ export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
RET[programIndex] = round(a+.499999);
|
||||
RET[programIndex] = round(a+.49999);
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
|
||||
@@ -4,7 +4,7 @@ export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
RET[programIndex] = floor(a+.999999);
|
||||
RET[programIndex] = floor(a+.99999);
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
|
||||
34
tests/uniform-1.ispc
Normal file
34
tests/uniform-1.ispc
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
|
||||
task void f_f_task(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform float val[programCount];
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
val[i] = 0;
|
||||
|
||||
foreach (i = 0 ... programCount)
|
||||
val[i] += aFOO[programCount*taskIndex + i] - 1;
|
||||
|
||||
uniform float sum = 0;
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
sum += val[i];
|
||||
|
||||
if (programIndex < 32/4)
|
||||
RET[programCount/4*taskIndex + programIndex] = sum;
|
||||
}
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[])
|
||||
{
|
||||
launch[4] f_f_task(RET, aFOO);
|
||||
}
|
||||
task void result_task(uniform float RET[])
|
||||
{
|
||||
const uniform float ret = reduce_add(programIndex + programCount*taskIndex);
|
||||
if (programIndex < 32/4)
|
||||
RET[programCount/4*taskIndex + programIndex] = ret;
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
launch[4] result_task(RET);
|
||||
}
|
||||
Reference in New Issue
Block a user