1812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross/*
2812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * Copyright (C) 2011-2014 The Android Open Source Project
3812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross *
4812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * Licensed under the Apache License, Version 2.0 (the "License");
5812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * you may not use this file except in compliance with the License.
6812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * You may obtain a copy of the License at
7812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross *
8812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross *      http://www.apache.org/licenses/LICENSE-2.0
9812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross *
10812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * Unless required by applicable law or agreed to in writing, software
11812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * distributed under the License is distributed on an "AS IS" BASIS,
12812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * See the License for the specific language governing permissions and
14812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * limitations under the License.
15812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross */
16812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
17812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross/*
18812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * This file is auto-generated. DO NOT MODIFY!
19812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * The source Renderscript file: reduce_general_duplicate_array.rs
20812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross */
21812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
22812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Grosspackage array;
23812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
246a360ef49a83c623784ce97e32f7c07b170ef364David Grossimport android.os.Build;
256a360ef49a83c623784ce97e32f7c07b170ef364David Grossimport android.os.Process;
266a360ef49a83c623784ce97e32f7c07b170ef364David Grossimport java.lang.reflect.Field;
27812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Grossimport android.renderscript.*;
28812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Grossimport array.reduce_general_duplicate_arrayBitCode;
29812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
30812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross/**
31812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross * @hide
32812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross */
33812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Grosspublic class ScriptC_reduce_general_duplicate_array extends ScriptC {
34812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    private static final String __rs_resource_name = "reduce_general_duplicate_array";
35812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // Constructor
36812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public  ScriptC_reduce_general_duplicate_array(RenderScript rs) {
37812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        super(rs,
38812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross              __rs_resource_name,
39812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross              reduce_general_duplicate_arrayBitCode.getBitCode32(),
40812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross              reduce_general_duplicate_arrayBitCode.getBitCode64());
41812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        mRSLocal = rs;
42812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        __I32 = Element.I32(rs);
43812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
44812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
45812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    private Element __I32;
46812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    private RenderScript mRSLocal;
47812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // To obtain the result, invoke get(), which blocks
48812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // until the asynchronously-launched operation has completed.
49812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public static class resultArray4_int {
50812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        public int[] get() {
51812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            if (!mGotResult) {
52812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                int[] outArray = new int[4];
53812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                mOut.copyTo(outArray);
54812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                mResult = outArray;
55812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                mOut.destroy();
56812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                mOut = null;  // make Java object eligible for garbage collection
57812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                if (mTempIns != null) {
58812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                    for (Allocation tempIn : mTempIns) {
59812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                        tempIn.destroy();
60812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                    }
61812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
62812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                    mTempIns = null;  // make Java objects eligible for garbage collection
63812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                }
64812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
65812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross                mGotResult = true;
66812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            }
67812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
68812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            return mResult;
69812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
70812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
71812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        private  resultArray4_int(Allocation out) {
72812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            mTempIns = null;
73812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            mOut = out;
74812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            mGotResult = false;
75812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
76812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
77812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        private Allocation[] mTempIns;
78812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        private Allocation mOut;
79812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        private boolean mGotResult;
80812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        private int[] mResult;
81812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
82812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
838ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross    private final static int mExportReduceIdx_sumDec = 0;
84812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // in1 = "val"
85812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumDec(int[] in1) {
86812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        // Verify that "in1" is non-null.
87812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        if (in1 == null) {
88812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            throw new RSIllegalArgumentException("Array \"in1\" is null!");
89812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
90812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length);
91812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        ain1.setAutoPadding(true);
92812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        ain1.copyFrom(in1);
93812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
94812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        resultArray4_int result = reduce_sumDec(ain1, null);
95812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        result.mTempIns = new Allocation[]{ain1};
96812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return result;
97812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
98812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
99812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // ain1 = "int val"
100812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumDec(Allocation ain1) {
101812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return reduce_sumDec(ain1, null);
102812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
103812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
104812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // ain1 = "int val"
105812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumDec(Allocation ain1, Script.LaunchOptions sc) {
106812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        // check ain1
107812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        if (!ain1.getType().getElement().isCompatible(__I32)) {
108812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            throw new RSRuntimeException("Type mismatch with I32!");
109812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
110812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        Allocation aout = Allocation.createSized(mRSLocal, __I32, 4);
111812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        aout.setAutoPadding(true);
1128ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross        reduce(mExportReduceIdx_sumDec, new Allocation[]{ain1}, aout, sc);
113812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return new resultArray4_int(aout);
114812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
115812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
1168ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross    private final static int mExportReduceIdx_sumInc = 1;
117812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // in1 = "val"
118812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumInc(int[] in1) {
119812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        // Verify that "in1" is non-null.
120812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        if (in1 == null) {
121812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            throw new RSIllegalArgumentException("Array \"in1\" is null!");
122812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
123812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length);
124812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        ain1.setAutoPadding(true);
125812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        ain1.copyFrom(in1);
126812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
127812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        resultArray4_int result = reduce_sumInc(ain1, null);
128812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        result.mTempIns = new Allocation[]{ain1};
129812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return result;
130812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
131812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
132812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // ain1 = "int val"
133812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumInc(Allocation ain1) {
134812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return reduce_sumInc(ain1, null);
135812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
136812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
137812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    // ain1 = "int val"
138812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    public resultArray4_int reduce_sumInc(Allocation ain1, Script.LaunchOptions sc) {
139812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        // check ain1
140812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        if (!ain1.getType().getElement().isCompatible(__I32)) {
141812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross            throw new RSRuntimeException("Type mismatch with I32!");
142812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        }
143812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        Allocation aout = Allocation.createSized(mRSLocal, __I32, 4);
144812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        aout.setAutoPadding(true);
1458ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross        reduce(mExportReduceIdx_sumInc, new Allocation[]{ain1}, aout, sc);
146812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross        return new resultArray4_int(aout);
147812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross    }
148812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
149812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross}
150812dcd0b28c68363bba2f132ff2bdff6577ba9b7David Gross
151