diff options
author | Chris Wailes <chriswailes@google.com> | 2014-07-15 14:55:06 -0700 |
---|---|---|
committer | Chris Wailes <chriswailes@google.com> | 2014-07-15 14:55:06 -0700 |
commit | 3d3d734cd20689547a58a5369230ac5135f38953 (patch) | |
tree | dd068d44ade998f30480a73ab4ee81550d0b093f /java | |
parent | 42e563a3bc08f1785f379166b6519009c8066fdc (diff) | |
download | rs-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.java | 8 | ||||
-rw-r--r-- | java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs | 64 |
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() { |