summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorChris Wailes <chriswailes@google.com>2014-07-15 14:55:06 -0700
committerChris Wailes <chriswailes@google.com>2014-07-15 14:55:06 -0700
commit3d3d734cd20689547a58a5369230ac5135f38953 (patch)
treedd068d44ade998f30480a73ab4ee81550d0b093f /java
parent42e563a3bc08f1785f379166b6519009c8066fdc (diff)
downloadrs-3d3d734cd20689547a58a5369230ac5135f38953.tar.gz
Added a test for struct output with multi-in.
Change-Id: I6e0f514bfe7975e63ce1051256fab1b341b6c1c6
Diffstat (limited to 'java')
-rw-r--r--java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java8
-rw-r--r--java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs64
2 files changed, 71 insertions, 1 deletions
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java b/java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java
index e2095f6c..1a05f801 100644
--- a/java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java
+++ b/java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java
@@ -31,6 +31,7 @@ public class UT_foreach_multi extends UnitTest {
private Allocation Out0;
private Allocation Out1;
private Allocation Out2;
+ private Allocation Out3;
protected UT_foreach_multi(RSTestCore rstc, Resources res, Context ctx) {
super(rstc, "Foreach Multi-input", ctx);
@@ -77,6 +78,12 @@ public class UT_foreach_multi extends UnitTest {
Out2 = Allocation.createTyped(RS, type32Builder.create());
s.set_aout2(Out2);
+ // RetStruct output allocations
+
+ ScriptField_RetStruct StructType = new ScriptField_RetStruct(RS, Xdim);
+ Out3 = StructType.getAllocation();
+ s.set_aout3(Out3);
+
return;
}
@@ -91,6 +98,7 @@ public class UT_foreach_multi extends UnitTest {
s.forEach_sum2(Ain0, Ain1, Out0);
s.forEach_sum3(Ain0, Ain1, Ain2, Out1);
s.forEach_sum_mixed(Ain0, Ain3, Out2);
+ s.forEach_sum2_struct(Ain0, Ain1, Out3);
s.invoke_test_outputs();
s.invoke_check_test_results();
diff --git a/java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs b/java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs
index 025d19d4..0857e869 100644
--- a/java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs
+++ b/java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs
@@ -1,9 +1,20 @@
#include "shared.rsh"
+struct RetStruct {
+ uint32_t i0;
+ uint32_t i1;
+ uint32_t i2;
+ uint32_t i3;
+ uint32_t i4;
+ uint32_t i5;
+ uint32_t i6;
+ uint32_t i7;
+};
+
rs_allocation ain0, ain1, ain2;
rs_allocation ain3;
-rs_allocation aout0, aout1, aout2;
+rs_allocation aout0, aout1, aout2, aout3;
uint32_t dimX;
@@ -24,6 +35,26 @@ uint32_t RS_KERNEL sum2(uint32_t in0, uint32_t in1, uint32_t x) {
return in0 + in1;
}
+struct RetStruct RS_KERNEL
+sum2_struct(uint32_t in0, uint32_t in1, uint32_t x) {
+
+ _RS_ASSERT(in0 == x);
+ _RS_ASSERT(in1 == x);
+
+ struct RetStruct retval;
+
+ retval.i0 = in0 + in1;
+ retval.i1 = in0 + in1;
+ retval.i2 = in0 + in1;
+ retval.i3 = in0 + in1;
+ retval.i4 = in0 + in1;
+ retval.i5 = in0 + in1;
+ retval.i6 = in0 + in1;
+ retval.i7 = in0 + in1;
+
+ return retval;
+}
+
uint32_t RS_KERNEL sum3(uint32_t in0, uint32_t in1, uint32_t in2, uint32_t x) {
_RS_ASSERT(in0 == x);
_RS_ASSERT(in1 == x);
@@ -101,10 +132,41 @@ static bool test_sum_mixed_output() {
return failed;
}
+static bool test_sum2_struct_output() {
+ bool failed = false;
+ uint32_t i;
+
+ for (i = 0; i < dimX; i++) {
+ struct RetStruct *result = (struct RetStruct*)rsGetElementAt(aout3, i);
+
+ uint32_t sum = rsGetElementAt_uint(ain0, i) +
+ rsGetElementAt_uint(ain1, i);
+
+ _RS_ASSERT(result->i0 == sum);
+ _RS_ASSERT(result->i1 == sum);
+ _RS_ASSERT(result->i2 == sum);
+ _RS_ASSERT(result->i3 == sum);
+ _RS_ASSERT(result->i4 == sum);
+ _RS_ASSERT(result->i5 == sum);
+ _RS_ASSERT(result->i6 == sum);
+ _RS_ASSERT(result->i7 == sum);
+ }
+
+ if (failed) {
+ rsDebug("test_sum2_struct_output FAILED", 0);
+ }
+ else {
+ rsDebug("test_sum2_struct_output PASSED", 0);
+ }
+
+ return failed;
+}
+
void test_outputs() {
failed |= test_sum2_output();
failed |= test_sum3_output();
failed |= test_sum_mixed_output();
+ failed |= test_sum2_struct_output();
}
void check_test_results() {