packed_store_active2
This commit is contained in:
16
tests/packed-store2-1.ispc
Normal file
16
tests/packed-store2-1.ispc
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int pack[2+programCount];
|
||||
for (uniform int i = 0; i < 2+programCount; ++i)
|
||||
pack[i] = 0;
|
||||
packed_store_active2(&pack[2], a);
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = programIndex-1;
|
||||
RET[0] = RET[1] = 0;
|
||||
}
|
||||
21
tests/packed-store2-2.ispc
Normal file
21
tests/packed-store2-2.ispc
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int pack[2+programCount];
|
||||
uniform int number;
|
||||
for (uniform int i = 0; i < 2+programCount; ++i)
|
||||
pack[i] = 0;
|
||||
if ((int)a & 1)
|
||||
number = packed_store_active2(&pack[2], a);
|
||||
pack[2+number] = 0;
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 0;
|
||||
uniform int val = 1;
|
||||
for (uniform int i = 2; i < 2+programCount/2; ++i, val += 2)
|
||||
RET[i] = val;
|
||||
}
|
||||
17
tests/packed-store2-3.ispc
Normal file
17
tests/packed-store2-3.ispc
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform int pack[2+programCount];
|
||||
for (uniform int i = 0; i < 2+programCount; ++i)
|
||||
pack[i] = 0;
|
||||
uniform int count = 0;
|
||||
if ((int)a & 1)
|
||||
count += packed_store_active2(&pack[2], a);
|
||||
RET[programIndex] = count;
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = (programCount == 1) ? 1 : programCount/2;
|
||||
}
|
||||
15
tests/packed-store2.ispc
Normal file
15
tests/packed-store2.ispc
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
export uniform int width() { return programCount; }
|
||||
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
float a = aFOO[programIndex];
|
||||
uniform unsigned int pack[programCount];
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
pack[i] = 0;
|
||||
packed_store_active2(pack, (unsigned int)a);
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
export void result(uniform float RET[]) {
|
||||
RET[programIndex] = 1 + programIndex;
|
||||
}
|
||||
Reference in New Issue
Block a user