Merge pull request #641 from jbrodman/stdlibshift

Add a "shift" operator to the stdlib.
This commit is contained in:
Dmitry Babokin
2013-10-28 14:18:31 -07:00
12 changed files with 425 additions and 59 deletions

14
tests/shift-1.ispc Normal file
View File

@@ -0,0 +1,14 @@
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
int a = aFOO[programIndex];
int rot = shift(a, -1);
RET[programIndex] = rot;
}
export void result(uniform float RET[]) {
varying int val = programIndex;
if (val < 0) val = 0;
RET[programIndex] = val;
}

15
tests/shift-2.ispc Normal file
View File

@@ -0,0 +1,15 @@
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
int a = aFOO[programIndex];
uniform int delta = b - 6; // -1
int rot = shift(a, delta);
RET[programIndex] = rot;
}
export void result(uniform float RET[]) {
varying int val = programIndex;
if (val < 0) val = 0;
RET[programIndex] = val;
}

14
tests/shift-3.ispc Normal file
View File

@@ -0,0 +1,14 @@
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
int a = aFOO[programIndex];
int rot = shift(a, 1);
RET[programIndex] = rot;
}
export void result(uniform float RET[]) {
varying int val = 2 + programIndex;
if (val > programCount) val = 0;
RET[programIndex] = val;
}