changing uniform_min and uniform_max implementations for avx targets

This commit is contained in:
Ilia Filippov
2014-03-05 20:18:36 +04:00
parent 9ab8f4e10e
commit 6738af0a0c
16 changed files with 183 additions and 56 deletions

19
tests/max-double-1.ispc Normal file
View File

@@ -0,0 +1,19 @@
export uniform int width() { return programCount; }
export void f_du(uniform float RET[], uniform double aFOO[], uniform double b) {
double a = aFOO[programIndex];
RET[programIndex] = max(3 * a, (double)10.f);
RET[width()-1] = max(b, (double)100);
}
export void result(uniform float RET[]) {
RET[programIndex] = 3 * (1+programIndex);
RET[0] = 10;
RET[1] = 10;
RET[2] = 10;
RET[programCount-1] = 100;
}

18
tests/max-double-2.ispc Normal file
View File

@@ -0,0 +1,18 @@
export uniform int width() { return programCount; }
export void f_du(uniform float RET[], uniform double aFOO[], uniform double b) {
double a = aFOO[programIndex];
RET[programIndex] = max(-10 * (a-3), (double).1f);
RET[width() - 1] = max(-10 * b, (double)2);
}
export void result(uniform float RET[]) {
RET[programIndex] = .1;
RET[0] = 20;
RET[1] = 10;
RET[programCount - 1] = 2;
}

View File

@@ -3,9 +3,17 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = max(10 * a, 10.f);
RET[programIndex] = max(3 * a, 10.f);
RET[width()-1] = max(b, 100);
}
export void result(uniform float RET[]) { RET[programIndex] = 10 * (1+programIndex); }
export void result(uniform float RET[]) {
RET[programIndex] = 3 * (1+programIndex);
RET[0] = 10;
RET[1] = 10;
RET[2] = 10;
RET[programCount-1] = 100;
}

View File

@@ -3,10 +3,16 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = max(-10 * a, 10.f);
RET[programIndex] = max(-10 * (a-3), .1f);
RET[width() - 1] = max(-10 * b, 2);
}
export void result(uniform float RET[]) { RET[programIndex] = 10.; }
export void result(uniform float RET[]) {
RET[programIndex] = .1;
RET[0] = 20;
RET[1] = 10;
RET[programCount - 1] = 2;
}

View File

@@ -3,11 +3,16 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
int i = (int)a;
RET[programIndex] = max((int)200, i);
RET[programIndex] = max((int)2, i);
RET[width()-1] = max(10, (int)b);
}
export void result(uniform float RET[]) { RET[programIndex] = 200.; }
export void result(uniform float RET[]) {
RET[programIndex] = programIndex + 1;
RET[0] = 2;
RET[programCount-1] = 10;
}

View File

@@ -3,11 +3,15 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
int i = (int)a;
RET[programIndex] = max((int)-20, i);
RET[programIndex] = max((int)-2, -1 * i);
RET[width() - 1] = max(-2, -1 * (int)b);
}
export void result(uniform float RET[]) { RET[programIndex] = 1+programIndex; }
export void result(uniform float RET[]) {
RET[programIndex] = -2;
RET[0] = -1;
}

View File

@@ -1,14 +1,16 @@
export uniform int width() { return programCount; }
export void f_f(uniform float r[], uniform float a[]) {
export void f_fu(uniform float r[], uniform float a[], uniform float b) {
unsigned int i = (unsigned int)a[programIndex];
r[programIndex] = max((unsigned int)2, i);
r[width() - 1] = max((unsigned int)10, (unsigned int)b);
}
export void result(uniform float r[]) {
r[programIndex] = 1+programIndex;
r[0] = 2;
r[programCount - 1] = 10;
}

19
tests/min-double-1.ispc Normal file
View File

@@ -0,0 +1,19 @@
export uniform int width() { return programCount; }
export void f_du(uniform float RET[], uniform double aFOO[], uniform double b) {
double a = aFOO[programIndex];
RET[programIndex] = min(3 * a, (double)10.f);
RET[width()-1] = min(b, (double)100);
}
export void result(uniform float RET[]) {
RET[programIndex] = 10;
RET[0] = 3;
RET[1] = 6;
RET[2] = 9;
RET[programCount-1] = 5;
}

18
tests/min-double-2.ispc Normal file
View File

@@ -0,0 +1,18 @@
export uniform int width() { return programCount; }
export void f_du(uniform float RET[], uniform double aFOO[], uniform double b) {
double a = aFOO[programIndex];
RET[programIndex] = min(-10 * (a-3), (double).1f);
RET[width() - 1] = min(-10 * b, (double)2);
}
export void result(uniform float RET[]) {
RET[programIndex] = -10 * (programIndex - 2);
RET[0] = .1;
RET[1] = .1;
RET[programCount - 1] = -50;
}

View File

@@ -3,9 +3,17 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = min(10 * a, 10.f);
RET[programIndex] = min(3 * a, 10.f);
RET[width()-1] = min(b, 100);
}
export void result(uniform float RET[]) { RET[programIndex] = 10.; }
export void result(uniform float RET[]) {
RET[programIndex] = 10;
RET[0] = 3;
RET[1] = 6;
RET[2] = 9;
RET[programCount-1] = 5;
}

18
tests/min-float-2.ispc Normal file
View File

@@ -0,0 +1,18 @@
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
RET[programIndex] = min(-10 * (a-3), .1f);
RET[width() - 1] = min(-10 * b, 2);
}
export void result(uniform float RET[]) {
RET[programIndex] = -10 * (programIndex - 2);
RET[0] = .1;
RET[1] = .1;
RET[programCount - 1] = -50;
}

View File

@@ -1,11 +0,0 @@
export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
float a = aFOO[programIndex];
RET[programIndex] = min(a, 200.f);
}
export void result(uniform float RET[]) { RET[programIndex] = 1+programIndex; }

View File

@@ -3,11 +3,16 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
int i = (int)a;
RET[programIndex] = min((int)-20, i);
RET[programIndex] = min((int)2, i);
RET[width()-1] = min(10, (int)b);
}
export void result(uniform float RET[]) { RET[programIndex] = -20; }
export void result(uniform float RET[]) {
RET[programIndex] = 2;
RET[0] = 1;
RET[programCount-1] = 5;
}

View File

@@ -3,11 +3,16 @@ export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
int i = (int)a;
RET[programIndex] = min((int)200, i);
RET[programIndex] = min((int)-2, -1 * i);
RET[width() - 1] = min(-2, -1 * (int)b);
}
export void result(uniform float RET[]) { RET[programIndex] = 1+programIndex; }
export void result(uniform float RET[]) {
RET[programIndex] = - programIndex - 1;
RET[0] = -2;
RET[programCount - 1] = -5;
}

View File

@@ -1,14 +1,16 @@
export uniform int width() { return programCount; }
export void f_f(uniform float result[], uniform float aa[]) {
unsigned int i = (unsigned int)aa[programIndex];
result[programIndex] = min((unsigned int)2, i);
export void f_fu(uniform float r[], uniform float a[], uniform float b) {
unsigned int i = (unsigned int)a[programIndex];
r[programIndex] = min((unsigned int)2, i);
r[width() - 1] = min((unsigned int)10, (unsigned int)b);
}
export void result(uniform float r[]) {
r[programIndex] = 2;
r[0] = 1;
r[programCount - 1] = 5;
}