From bd70182369910782e97f4985b455423041347916 Mon Sep 17 00:00:00 2001 From: Matt Pharr Date: Tue, 6 Dec 2011 14:26:52 -0800 Subject: [PATCH] Add some additional tests --- tests/atomics-varyingptr-1.ispc | 18 ++++++++++++++++++ tests/atomics-varyingptr-2.ispc | 16 ++++++++++++++++ tests/atomics-varyingptr-3.ispc | 18 ++++++++++++++++++ tests/atomics-varyingptr-4.ispc | 15 +++++++++++++++ tests/ptr-int-null-1.ispc | 16 ++++++++++++++++ tests/ptr-int-null.ispc | 13 +++++++++++++ tests/vector-varying-scatter-2.ispc | 17 +++++++++++++++++ tests/vector-varying-scatter.ispc | 15 +++++++++++++++ 8 files changed, 128 insertions(+) create mode 100644 tests/atomics-varyingptr-1.ispc create mode 100644 tests/atomics-varyingptr-2.ispc create mode 100644 tests/atomics-varyingptr-3.ispc create mode 100644 tests/atomics-varyingptr-4.ispc create mode 100644 tests/ptr-int-null-1.ispc create mode 100644 tests/ptr-int-null.ispc create mode 100644 tests/vector-varying-scatter-2.ispc create mode 100644 tests/vector-varying-scatter.ispc diff --git a/tests/atomics-varyingptr-1.ispc b/tests/atomics-varyingptr-1.ispc new file mode 100644 index 00000000..070d83be --- /dev/null +++ b/tests/atomics-varyingptr-1.ispc @@ -0,0 +1,18 @@ + +export uniform int width() { return programCount; } + +uniform unsigned int32 s[programCount]; + +export void f_f(uniform float RET[], uniform float aFOO[]) { + float a = aFOO[programIndex]; + float b = 0; + float delta = 1; + if (programIndex < 2) + atomic_add_global(&s[programIndex], delta); + RET[programIndex] = s[programIndex]; +} + +export void result(uniform float RET[]) { + RET[programIndex] = 0; + RET[0] = RET[1] = 1; +} diff --git a/tests/atomics-varyingptr-2.ispc b/tests/atomics-varyingptr-2.ispc new file mode 100644 index 00000000..14af0e02 --- /dev/null +++ b/tests/atomics-varyingptr-2.ispc @@ -0,0 +1,16 @@ + +export uniform int width() { return programCount; } + +uniform unsigned int32 s[programCount]; + +export void f_f(uniform float RET[], uniform float aFOO[]) { + float a = aFOO[programIndex]; + float b = 0; + float delta = 1; + atomic_add_global(&s[programCount-1-programIndex], programIndex); + RET[programIndex] = s[programIndex]; +} + +export void result(uniform float RET[]) { + RET[programIndex] = programCount-1-programIndex; +} diff --git a/tests/atomics-varyingptr-3.ispc b/tests/atomics-varyingptr-3.ispc new file mode 100644 index 00000000..ae3aad6f --- /dev/null +++ b/tests/atomics-varyingptr-3.ispc @@ -0,0 +1,18 @@ + +export uniform int width() { return programCount; } + +uniform unsigned int32 s[programCount]; + +export void f_f(uniform float RET[], uniform float aFOO[]) { + for (uniform int i = 0; i < programCount; ++i) + s[i] = 1234; + float a = aFOO[programIndex]; + float b = 0; + float delta = 1; + a = atomic_max_global(&s[programIndex], programIndex); + RET[programIndex] = a; +} + +export void result(uniform float RET[]) { + RET[programIndex] = 1234; +} diff --git a/tests/atomics-varyingptr-4.ispc b/tests/atomics-varyingptr-4.ispc new file mode 100644 index 00000000..a4c501f3 --- /dev/null +++ b/tests/atomics-varyingptr-4.ispc @@ -0,0 +1,15 @@ + +export uniform int width() { return programCount; } + +uniform int32 s[programCount]; + +export void f_f(uniform float RET[], uniform float aFOO[]) { + for (uniform int i = 0; i < programCount; ++i) + s[i] = -1234; + atomic_max_global(&s[programIndex], programIndex); + RET[programIndex] = s[programIndex]; +} + +export void result(uniform float RET[]) { + RET[programIndex] = programIndex; +} diff --git a/tests/ptr-int-null-1.ispc b/tests/ptr-int-null-1.ispc new file mode 100644 index 00000000..f0e0321f --- /dev/null +++ b/tests/ptr-int-null-1.ispc @@ -0,0 +1,16 @@ + +export uniform int width() { return programCount; } + +bool foo(int *ptr) { + return (ptr == NULL); +} + +export void f_f(uniform float RET[], uniform float aFOO[]) { + uniform int a = 1; + uniform int * uniform b = 0; + RET[programIndex] = foo(0); +} + +export void result(uniform float RET[]) { + RET[programIndex] = 1; +} diff --git a/tests/ptr-int-null.ispc b/tests/ptr-int-null.ispc new file mode 100644 index 00000000..e2e2d1dc --- /dev/null +++ b/tests/ptr-int-null.ispc @@ -0,0 +1,13 @@ + +export uniform int width() { return programCount; } + + +export void f_f(uniform float RET[], uniform float aFOO[]) { + uniform int a = 1; + uniform int * uniform b = 0; + RET[programIndex] = (b == NULL && b == 0 && 0 == b) ? 1 : 0; +} + +export void result(uniform float RET[]) { + RET[programIndex] = 1; +} diff --git a/tests/vector-varying-scatter-2.ispc b/tests/vector-varying-scatter-2.ispc new file mode 100644 index 00000000..ac5d80fd --- /dev/null +++ b/tests/vector-varying-scatter-2.ispc @@ -0,0 +1,17 @@ + +export uniform int width() { return programCount; } + +export void f_f(uniform float RET[], uniform float aFOO[]) { + float aa = aFOO[programIndex]; + float<4> a = { -1, -2, -3, -4 }; + if (programIndex < 4) + a[3-programIndex] = aa; +//CO print("%\n%\n%\n%\n", a[0], a[1], a[2], a[3]); + int i = clamp(3-programIndex, 0, 3); +//CO print("%\n%\n", i, a[i]); + RET[programIndex] = a[i]; +} + +export void result(uniform float RET[]) { + RET[programIndex] = (programIndex < 4) ? 1+programIndex : -1; +} diff --git a/tests/vector-varying-scatter.ispc b/tests/vector-varying-scatter.ispc new file mode 100644 index 00000000..60065ee6 --- /dev/null +++ b/tests/vector-varying-scatter.ispc @@ -0,0 +1,15 @@ + +export uniform int width() { return programCount; } + +export void f_f(uniform float RET[], uniform float aFOO[]) { + float aa = aFOO[programIndex]; + float<4> a = { -1, -2, -3, -4 }; + if (programIndex < 4) + a[3-programIndex] = aa; + RET[programIndex] = a[2]; +} + +export void result(uniform float RET[]) { + RET[programIndex] = -3; + RET[1] = 2; +}