aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorStephen Hines <srhines@google.com>2012-09-13 16:57:06 -0700
committerStephen Hines <srhines@google.com>2012-09-19 02:36:06 -0700
commit9ca96e70657cf5437a294213f56ba4768dc08ad2 (patch)
tree11bb4dc019f4d6064666403df2023d8d8fe6e272 /tests
parent58fcd13c1646ee303f844484935a827b4380b08c (diff)
downloadslang-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.rs7
-rw-r--r--tests/F_kernel_16/stderr.txt.expect1
-rw-r--r--tests/F_kernel_16/stdout.txt.expect0
-rw-r--r--tests/F_kernel_badsig/kernel_badsig.rs6
-rw-r--r--tests/F_kernel_badsig/stderr.txt.expect1
-rw-r--r--tests/F_kernel_badsig/stdout.txt.expect0
-rw-r--r--tests/F_kernel_noattr/kernel_noattr.rs18
-rw-r--r--tests/F_kernel_noattr/stderr.txt.expect4
-rw-r--r--tests/F_kernel_noattr/stdout.txt.expect0
-rw-r--r--tests/F_kernel_ptr_param/kernel_ptr_param.rs6
-rw-r--r--tests/F_kernel_ptr_param/stderr.txt.expect1
-rw-r--r--tests/F_kernel_ptr_param/stdout.txt.expect0
-rw-r--r--tests/F_kernel_ptr_ret_val/kernel_ptr_ret_val.rs7
-rw-r--r--tests/F_kernel_ptr_ret_val/stderr.txt.expect1
-rw-r--r--tests/F_kernel_ptr_ret_val/stdout.txt.expect0
-rw-r--r--tests/P_kernel/kernel.rs18
-rw-r--r--tests/P_kernel/stderr.txt.expect0
-rw-r--r--tests/P_kernel/stdout.txt.expect1
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 ...