diff options
author | Stephen Hines <srhines@google.com> | 2012-09-13 16:57:06 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2012-09-19 02:36:06 -0700 |
commit | 9ca96e70657cf5437a294213f56ba4768dc08ad2 (patch) | |
tree | 11bb4dc019f4d6064666403df2023d8d8fe6e272 /tests | |
parent | 58fcd13c1646ee303f844484935a827b4380b08c (diff) | |
download | slang-9ca96e70657cf5437a294213f56ba4768dc08ad2.tar.gz |
Support for pass-by-value kernels.
This change allows the JB-mr1+ target API to declare compute kernels
using "__attribute__((kernel))". This disables the use of pointers in the
function signature and forces any output to be explicitly returned and
input to be passed only by value. We still allow the user to add x, y
coordinates if they want them.
Bug: 7166741
Change-Id: I1407fceefb11c7d6c17221ca156cfce443c2b218
Diffstat (limited to 'tests')
-rw-r--r-- | tests/F_kernel_16/kernel_16.rs | 7 | ||||
-rw-r--r-- | tests/F_kernel_16/stderr.txt.expect | 1 | ||||
-rw-r--r-- | tests/F_kernel_16/stdout.txt.expect | 0 | ||||
-rw-r--r-- | tests/F_kernel_badsig/kernel_badsig.rs | 6 | ||||
-rw-r--r-- | tests/F_kernel_badsig/stderr.txt.expect | 1 | ||||
-rw-r--r-- | tests/F_kernel_badsig/stdout.txt.expect | 0 | ||||
-rw-r--r-- | tests/F_kernel_noattr/kernel_noattr.rs | 18 | ||||
-rw-r--r-- | tests/F_kernel_noattr/stderr.txt.expect | 4 | ||||
-rw-r--r-- | tests/F_kernel_noattr/stdout.txt.expect | 0 | ||||
-rw-r--r-- | tests/F_kernel_ptr_param/kernel_ptr_param.rs | 6 | ||||
-rw-r--r-- | tests/F_kernel_ptr_param/stderr.txt.expect | 1 | ||||
-rw-r--r-- | tests/F_kernel_ptr_param/stdout.txt.expect | 0 | ||||
-rw-r--r-- | tests/F_kernel_ptr_ret_val/kernel_ptr_ret_val.rs | 7 | ||||
-rw-r--r-- | tests/F_kernel_ptr_ret_val/stderr.txt.expect | 1 | ||||
-rw-r--r-- | tests/F_kernel_ptr_ret_val/stdout.txt.expect | 0 | ||||
-rw-r--r-- | tests/P_kernel/kernel.rs | 18 | ||||
-rw-r--r-- | tests/P_kernel/stderr.txt.expect | 0 | ||||
-rw-r--r-- | tests/P_kernel/stdout.txt.expect | 1 |
18 files changed, 71 insertions, 0 deletions
diff --git a/tests/F_kernel_16/kernel_16.rs b/tests/F_kernel_16/kernel_16.rs new file mode 100644 index 0000000..56007a2 --- /dev/null +++ b/tests/F_kernel_16/kernel_16.rs @@ -0,0 +1,7 @@ +// -target-api 16 +#pragma version(1) +#pragma rs java_package_name(foo) + +void __attribute__((kernel)) root(int i) { +} + diff --git a/tests/F_kernel_16/stderr.txt.expect b/tests/F_kernel_16/stderr.txt.expect new file mode 100644 index 0000000..b8a96ec --- /dev/null +++ b/tests/F_kernel_16/stderr.txt.expect @@ -0,0 +1 @@ +kernel_16.rs:5:30: error: Compute kernel root() targeting SDK levels 11-16 may not use pass-by-value with __attribute__((kernel)) diff --git a/tests/F_kernel_16/stdout.txt.expect b/tests/F_kernel_16/stdout.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/F_kernel_16/stdout.txt.expect diff --git a/tests/F_kernel_badsig/kernel_badsig.rs b/tests/F_kernel_badsig/kernel_badsig.rs new file mode 100644 index 0000000..db7652d --- /dev/null +++ b/tests/F_kernel_badsig/kernel_badsig.rs @@ -0,0 +1,6 @@ +#pragma version(1) +#pragma rs java_package_name(foo) + +void __attribute__((kernel)) root(uint32_t x) { +} + diff --git a/tests/F_kernel_badsig/stderr.txt.expect b/tests/F_kernel_badsig/stderr.txt.expect new file mode 100644 index 0000000..9f2b7ac --- /dev/null +++ b/tests/F_kernel_badsig/stderr.txt.expect @@ -0,0 +1 @@ +kernel_badsig.rs:4:30: error: Compute kernel root() must have at least one input parameter or a non-void return type diff --git a/tests/F_kernel_badsig/stdout.txt.expect b/tests/F_kernel_badsig/stdout.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/F_kernel_badsig/stdout.txt.expect diff --git a/tests/F_kernel_noattr/kernel_noattr.rs b/tests/F_kernel_noattr/kernel_noattr.rs new file mode 100644 index 0000000..e46888b --- /dev/null +++ b/tests/F_kernel_noattr/kernel_noattr.rs @@ -0,0 +1,18 @@ +#pragma version(1) +#pragma rs java_package_name(foo) + +int root(uint32_t ain) { + return 0; +} + +void in_only(uint32_t ain) { +} + +int out_only() { + return 0; +} + +int everything(uint32_t ain, uint32_t x, uint32_t y) { + return 0; +} + diff --git a/tests/F_kernel_noattr/stderr.txt.expect b/tests/F_kernel_noattr/stderr.txt.expect new file mode 100644 index 0000000..d8e054f --- /dev/null +++ b/tests/F_kernel_noattr/stderr.txt.expect @@ -0,0 +1,4 @@ +kernel_noattr.rs:4:5: error: Compute kernel root() is required to return a void type +kernel_noattr.rs:4:5: error: Compute kernel root() must have at least one parameter for in or out +kernel_noattr.rs:11:5: error: invokable non-static functions are required to return void +kernel_noattr.rs:15:5: error: invokable non-static functions are required to return void diff --git a/tests/F_kernel_noattr/stdout.txt.expect b/tests/F_kernel_noattr/stdout.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/F_kernel_noattr/stdout.txt.expect diff --git a/tests/F_kernel_ptr_param/kernel_ptr_param.rs b/tests/F_kernel_ptr_param/kernel_ptr_param.rs new file mode 100644 index 0000000..2467793 --- /dev/null +++ b/tests/F_kernel_ptr_param/kernel_ptr_param.rs @@ -0,0 +1,6 @@ +#pragma version(1) +#pragma rs java_package_name(foo) + +void __attribute__((kernel)) root(int *i) { +} + diff --git a/tests/F_kernel_ptr_param/stderr.txt.expect b/tests/F_kernel_ptr_param/stderr.txt.expect new file mode 100644 index 0000000..36f864c --- /dev/null +++ b/tests/F_kernel_ptr_param/stderr.txt.expect @@ -0,0 +1 @@ +kernel_ptr_param.rs:4:40: error: Compute kernel root() cannot have parameter 'i' of pointer type: 'int *' diff --git a/tests/F_kernel_ptr_param/stdout.txt.expect b/tests/F_kernel_ptr_param/stdout.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/F_kernel_ptr_param/stdout.txt.expect diff --git a/tests/F_kernel_ptr_ret_val/kernel_ptr_ret_val.rs b/tests/F_kernel_ptr_ret_val/kernel_ptr_ret_val.rs new file mode 100644 index 0000000..f964b31 --- /dev/null +++ b/tests/F_kernel_ptr_ret_val/kernel_ptr_ret_val.rs @@ -0,0 +1,7 @@ +#pragma version(1) +#pragma rs java_package_name(foo) + +int * __attribute__((kernel)) root() { + return NULL; +} + diff --git a/tests/F_kernel_ptr_ret_val/stderr.txt.expect b/tests/F_kernel_ptr_ret_val/stderr.txt.expect new file mode 100644 index 0000000..7567c1d --- /dev/null +++ b/tests/F_kernel_ptr_ret_val/stderr.txt.expect @@ -0,0 +1 @@ +kernel_ptr_ret_val.rs:4:1: error: Compute kernel root() cannot return a pointer type: 'int *' diff --git a/tests/F_kernel_ptr_ret_val/stdout.txt.expect b/tests/F_kernel_ptr_ret_val/stdout.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/F_kernel_ptr_ret_val/stdout.txt.expect diff --git a/tests/P_kernel/kernel.rs b/tests/P_kernel/kernel.rs new file mode 100644 index 0000000..d8f0c4d --- /dev/null +++ b/tests/P_kernel/kernel.rs @@ -0,0 +1,18 @@ +#pragma version(1) +#pragma rs java_package_name(foo) + +int __attribute__((kernel)) root(uint32_t ain) { + return 0; +} + +void __attribute__((kernel)) in_only(uint32_t ain) { +} + +int __attribute__((kernel)) out_only() { + return 0; +} + +int __attribute__((kernel)) everything(uint32_t ain, uint32_t x, uint32_t y) { + return 0; +} + diff --git a/tests/P_kernel/stderr.txt.expect b/tests/P_kernel/stderr.txt.expect new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/P_kernel/stderr.txt.expect diff --git a/tests/P_kernel/stdout.txt.expect b/tests/P_kernel/stdout.txt.expect new file mode 100644 index 0000000..a58134c --- /dev/null +++ b/tests/P_kernel/stdout.txt.expect @@ -0,0 +1 @@ +Generating ScriptC_kernel.java ... |