[WIP] parses polymorphic types

This commit is contained in:
2017-04-27 14:17:47 -04:00
parent 128b40ce3c
commit 108c9c6fb5
11 changed files with 474 additions and 61 deletions

View File

@@ -1,6 +1,6 @@
//@error
//assigning mismatched polymorphic types
export void foo(floating<0> bar) {
floating<1> baz = bar;
export void foo(floating$0 bar) {
floating$1 baz = bar;
}

View File

@@ -1,6 +1,6 @@
//@error
//assigning mismatched polymorphic types
export void foo(floating<0> bar) {
export void foo(floating$0 bar) {
floating baz = bar;
}

View File

@@ -1,6 +1,6 @@
//@error
//assigning mismatched polymorphic types
export void foo(number<0> bar) {
floating<0> baz = bar;
export void foo(number$0 bar) {
floating$0 baz = bar;
}

View File

@@ -1,6 +1,6 @@
//@error
//assigning mismatched polymorphic types
export void foo(number<0> bar) {
export void foo(number$0 bar) {
integer baz = bar;
}

View File

@@ -2,18 +2,18 @@
// cannot determine return type for mult
floating mult(floating<0> x, floating<1>y) {
floating mult(floating$0 x, floating$1 y) {
return x * y;
}
export void saxpy(uniform int N,
uniform floating<0> scale,
uniform floating<1> X[],
uniform floating<1> Y[],
uniform floating<2> result[])
uniform floating$0 scale,
uniform floating$1 X[],
uniform floating$1 Y[],
uniform floating$2 result[])
{
foreach (i = 0 ... N) {
floating<2> tmp = mult(scale, X[i]) + Y[i];
floating$2 tmp = mult(scale, X[i]) + Y[i];
result[i] = tmp;
}
}

View File

@@ -1,11 +1,11 @@
export void saxpy(uniform int N,
uniform floating<0> scale,
uniform floating<1> X[],
uniform floating<1> Y[],
uniform floating<2> result[])
uniform floating$0 scale,
uniform floating$1 X[],
uniform floating$1 Y[],
uniform floating$2 result[])
{
foreach (i = 0 ... N) {
floating<2> tmp = scale * X[i] + Y[i];
floating$2 tmp = scale * X[i] + Y[i];
result[i] = tmp;
}
}

6
tests_ispcpp/simple.ispc Normal file
View File

@@ -0,0 +1,6 @@
export void foo(uniform int N, floating$1 X[])
{
foreach (i = 0 ... N) {
X[i] = X[i] + 1.0;
}
}