Add support for enums.

This commit is contained in:
Matt Pharr
2011-07-17 16:43:05 +02:00
parent 17e5c8b7c2
commit f0f876c3ec
23 changed files with 1031 additions and 251 deletions

16
tests/enum-1.ispc Normal file
View File

@@ -0,0 +1,16 @@
enum Foo {
ZERO,
ONE,
TWO
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
RET[programIndex] = ONE;
}
export void result(uniform float RET[]) {
RET[programIndex] = 1;
}

18
tests/enum-2.ispc Normal file
View File

@@ -0,0 +1,18 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
RET[programIndex] = TEN;
}
export void result(uniform float RET[]) {
RET[programIndex] = 10;
}

18
tests/enum-3.ispc Normal file
View File

@@ -0,0 +1,18 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
RET[programIndex] = ELEVEN;
}
export void result(uniform float RET[]) {
RET[programIndex] = 11;
}

26
tests/enum-4.ispc Normal file
View File

@@ -0,0 +1,26 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
enum Bar {
FIFTY = 50,
THOUSAND = 1000
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
Foo foo = (Foo)((a == 1.) ? ELEVEN : FIFTY);
RET[programIndex] = (int)foo;
}
export void result(uniform float RET[]) {
RET[programIndex] = 50;
RET[0] = 11;
}

26
tests/enum-5.ispc Normal file
View File

@@ -0,0 +1,26 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
enum Bar {
FIFTY = 50,
THOUSAND = 1000
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
uniform Foo f = ONE;
int g = ++f;
RET[programIndex] = g-1;
}
export void result(uniform float RET[]) {
RET[programIndex] = 1;
}

26
tests/enum-6.ispc Normal file
View File

@@ -0,0 +1,26 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
enum Bar {
FIFTY = 50,
THOUSAND = 1000
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
uniform Foo f = ONE;
++f;
RET[programIndex] = (int)f;
}
export void result(uniform float RET[]) {
RET[programIndex] = 2;
}

27
tests/enum-7.ispc Normal file
View File

@@ -0,0 +1,27 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
enum Bar {
FIFTY = 50,
THOUSAND = 1000
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
uniform Foo f = ONE;
Foo vf = f;
++vf;
RET[programIndex] = (int)vf;
}
export void result(uniform float RET[]) {
RET[programIndex] = 2;
}

26
tests/enum-8.ispc Normal file
View File

@@ -0,0 +1,26 @@
enum Foo {
ZERO,
ONE,
TWO,
TEN = 10,
ELEVEN
};
enum Bar {
FIFTY = 50,
THOUSAND = 1000
};
export uniform int width() { return programCount; }
Foo Func(Foo f) { return ++f; }
Bar Func(Bar b) { return FIFTY; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
RET[programIndex] = (int)Func(ONE);
}
export void result(uniform float RET[]) {
RET[programIndex] = 2;
}

16
tests/enum-9.ispc Normal file
View File

@@ -0,0 +1,16 @@
enum {
ZERO,
ONE,
TWO
};
export uniform int width() { return programCount; }
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
RET[programIndex] = ONE;
}
export void result(uniform float RET[]) {
RET[programIndex] = 1;
}