10d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// This file is automatically generated from
20d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// frameworks/rs/tests/java_api/RSUnitTests/RSUnitTests.py
30d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks/*
40d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Copyright (C) 2017 The Android Open Source Project
50d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
60d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License");
70d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * you may not use this file except in compliance with the License.
80d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * You may obtain a copy of the License at
90d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *      http://www.apache.org/licenses/LICENSE-2.0
110d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
120d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Unless required by applicable law or agreed to in writing, software
130d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS,
140d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
150d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * See the License for the specific language governing permissions and
160d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * limitations under the License.
170d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks */
180d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
190d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspackage com.android.rs.unittest;
200d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
210d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.content.Context;
220d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Allocation;
230d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Element;
240d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.RenderScript;
250d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Type;
260d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
270d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspublic class UT_foreach_multi extends UnitTest {
280d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Ain0;
290d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Ain1;
300d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Ain2;
310d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Ain3;
320d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
330d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Out0;
340d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Out1;
350d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Out2;
360d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private Allocation Out3;
370d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
380d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public UT_foreach_multi(Context ctx) {
390d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        super("Foreach Multi-input", ctx);
400d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
410d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
420d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private void initializeGlobals(RenderScript RS, ScriptC_foreach_multi s) {
430d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Type.Builder type32Builder = new Type.Builder(RS, Element.U32(RS));
440d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Type.Builder type16Builder = new Type.Builder(RS, Element.U16(RS));
450d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
460d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        int Xdim = 5;
470d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_dimX(Xdim);
480d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        type32Builder.setX(Xdim);
490d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        type16Builder.setX(Xdim);
500d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
510d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        // 32-bit input allocations
520d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
530d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Ain0 = Allocation.createTyped(RS, type32Builder.create());
540d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_ain0(Ain0);
550d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_init_uint32_alloc(Ain0);
560d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
570d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Ain1 = Allocation.createTyped(RS, type32Builder.create());
580d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_ain1(Ain1);
590d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_init_uint32_alloc(Ain1);
600d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
610d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Ain2 = Allocation.createTyped(RS, type32Builder.create());
620d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_ain2(Ain2);
630d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_init_uint32_alloc(Ain2);
640d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
650d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        // 16-bit input allocation
660d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
670d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Ain3 = Allocation.createTyped(RS, type16Builder.create());
680d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_ain3(Ain3);
690d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_init_uint16_alloc(Ain3);
700d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
710d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        // 32-bit output allocations
720d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
730d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Out0 = Allocation.createTyped(RS, type32Builder.create());
740d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_aout0(Out0);
750d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
760d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Out1 = Allocation.createTyped(RS, type32Builder.create());
770d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_aout1(Out1);
780d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
790d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Out2 = Allocation.createTyped(RS, type32Builder.create());
800d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_aout2(Out2);
810d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
820d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        // RetStruct output allocations
830d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
840d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        ScriptField_RetStruct StructType = new ScriptField_RetStruct(RS, Xdim);
850d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Out3 = StructType.getAllocation();
860d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_aout3(Out3);
870d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
880d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        return;
890d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
900d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
910d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public void run() {
920d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        RenderScript pRS = createRenderScript(true);
930d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        ScriptC_foreach_multi s = new ScriptC_foreach_multi(pRS);
940d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
950d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
960d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        initializeGlobals(pRS, s);
970d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
980d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_sum2(Ain0, Ain1, Out0);
990d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_sum3(Ain0, Ain1, Ain2, Out1);
1000d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_sum_mixed(Ain0, Ain3, Out2);
1010d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_sum2_struct(Ain0, Ain1, Out3);
1020d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1030d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.invoke_test_outputs();
1040d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.invoke_check_test_results();
1050d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1060d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.finish();
1070d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.destroy();
1080d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.destroy();
1090d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
1100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks}
111