1277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross/* 2277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * Copyright (C) 2011-2014 The Android Open Source Project 3277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * 4277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * Licensed under the Apache License, Version 2.0 (the "License"); 5277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * you may not use this file except in compliance with the License. 6277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * You may obtain a copy of the License at 7277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * 8277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * http://www.apache.org/licenses/LICENSE-2.0 9277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * 10277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * Unless required by applicable law or agreed to in writing, software 11277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * distributed under the License is distributed on an "AS IS" BASIS, 12277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * See the License for the specific language governing permissions and 14277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * limitations under the License. 15277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross */ 16277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 17277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross/* 18277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * This file is auto-generated. DO NOT MODIFY! 19277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * The source Renderscript file: reduce_general_examples_explicit.rs 20277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross */ 21277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 22277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grosspackage examples; 23277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 24277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grossimport android.renderscript.*; 25277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grossimport examples.reduce_general_examples_explicitBitCode; 26277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 27277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross/** 28277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * @hide 29277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross */ 30277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grosspublic class ScriptC_reduce_general_examples_explicit extends ScriptC { 31277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private static final String __rs_resource_name = "reduce_general_examples_explicit"; 32277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Constructor 33277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public ScriptC_reduce_general_examples_explicit(RenderScript rs) { 34277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross super(rs, 35277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __rs_resource_name, 36277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross reduce_general_examples_explicitBitCode.getBitCode32(), 37277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross reduce_general_examples_explicitBitCode.getBitCode64()); 38277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mRSLocal = rs; 39277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __I32 = Element.I32(rs); 40277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __F32 = Element.F32(rs); 41277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __U32 = Element.U32(rs); 42277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __U8 = Element.U8(rs); 43277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 44277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 45277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __F32; 46277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __I32; 47277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __U32; 48277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __U8; 49277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private RenderScript mRSLocal; 50277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 51277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 52277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class resultArray256_uint { 53277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public long[] get() { 54d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 55d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross int[] outArray = new int[256]; 56d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 57d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross long[] result = new long[256]; 58d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (int Idx = 0; Idx < 256; ++Idx) { 59d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result[Idx] = ((long) ((outArray[Idx]) & 0xffffffffL)); 60d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 61d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 62d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = result; 63d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 64d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 65d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 66d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 67d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 68d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 69d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 70d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 71d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 72d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 73d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 74277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 75277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 76d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 77277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 78277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 79277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private resultArray256_uint(Allocation out) { 80d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 81277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 82d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 83277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 84277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 85d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 86277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 87d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 88d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private long[] mResult; 89277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 90277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 91277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 92277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 93277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class result_float { 94277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public float get() { 95d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 96d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross float[] outArray = new float[1]; 97d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 98d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = outArray[0]; 99d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 100d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 101d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 102d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 103d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 104d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 105d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 106d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 107d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 108d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 109d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 110d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 111d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 112d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 113277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 114277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 115277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private result_float(Allocation out) { 116d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 117277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 118d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 119277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 120277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 121d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 122277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 123d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 124d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private float mResult; 125277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 126277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 127277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 128277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 129277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class result_int { 130277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public int get() { 131d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 132d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross int[] outArray = new int[1]; 133d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 134d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = outArray[0]; 135d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 136d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 137d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 138d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 139d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 140d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 141d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 142d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 143d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 144d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 145d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 146d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 147d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 148d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 149277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 150277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 151277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private result_int(Allocation out) { 152d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 153277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 154d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 155277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 156277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 157d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 158277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 159d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 160d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private int mResult; 161277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 162277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 1638ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_addint_init = 0; 164277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "val" 165277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init(int[] in1) { 166277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 167277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 168277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 169277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 1701381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 171277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 1721381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 173277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 174d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_addint_init(ain1, null); 175d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 176d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 177277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 178277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 179277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 180277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init(Allocation ain1) { 181277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_addint_init(ain1, null); 182277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 183277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 184277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 185277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init(Allocation ain1, Script.LaunchOptions sc) { 186277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 187277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 188277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 189277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 190277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 191277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 1928ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_addint_init, new Allocation[]{ain1}, aout, sc); 193277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 194277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 195277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 1968ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_addint_comb = 1; 197277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "val" 198277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_comb(int[] in1) { 199277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 200277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 201277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 202277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2031381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 204277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 2051381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 206277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 207d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_addint_comb(ain1, null); 208d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 209d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 210277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 211277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 212277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 213277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_comb(Allocation ain1) { 214277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_addint_comb(ain1, null); 215277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 216277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 217277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 218277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_comb(Allocation ain1, Script.LaunchOptions sc) { 219277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 220277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 221277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 222277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 223277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 224277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 2258ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_addint_comb, new Allocation[]{ain1}, aout, sc); 226277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 227277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 228277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 2298ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_addint_init_comb = 2; 230277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "val" 231277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init_comb(int[] in1) { 232277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 233277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 234277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 235277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2361381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 237277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 2381381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 239277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 240d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_addint_init_comb(ain1, null); 241d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 242d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 243277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 244277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 245277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 246277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init_comb(Allocation ain1) { 247277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_addint_init_comb(ain1, null); 248277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 249277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 250277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 251277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint_init_comb(Allocation ain1, Script.LaunchOptions sc) { 252277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 253277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 254277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 255277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 256277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 257277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 2588ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_addint_init_comb, new Allocation[]{ain1}, aout, sc); 259277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 260277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 261277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 2628ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_dp_init = 3; 263277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in1" 264277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in2 = "in2" 265277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp_init(float[] in1, float[] in2) { 266277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 267277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 268277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 269277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2701381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __F32, in1.length); 2711381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.setAutoPadding(true); 2721381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 273277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in2" is non-null. 274277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in2 == null) { 275277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in2\" is null!"); 276277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 277277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that input array lengths are the same. 278277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1.length != in2.length) { 279277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Array length mismatch between parameters \"in1\" and \"in2\"!"); 280277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2811381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain2 = Allocation.createSized(mRSLocal, __F32, in2.length); 282277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain2.setAutoPadding(true); 2831381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain2.copyFrom(in2); 284277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 285d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_float result = reduce_dp_init(ain1, ain2, null); 286d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1, ain2}; 287d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 288277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 289277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 290277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in1" 291277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain2 = "float in2" 292277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp_init(Allocation ain1, Allocation ain2) { 293277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_dp_init(ain1, ain2, null); 294277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 295277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 296277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in1" 297277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain2 = "float in2" 298277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp_init(Allocation ain1, Allocation ain2, Script.LaunchOptions sc) { 299277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Type t0, t1; 300277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 301277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__F32)) { 302277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with F32!"); 303277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 304277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain2 305277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain2.getType().getElement().isCompatible(__F32)) { 306277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with F32!"); 307277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 308277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify dimensions 309277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross t0 = ain1.getType(); 310277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross t1 = ain2.getType(); 311277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if ((t0.getCount() != t1.getCount()) || 312277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getX() != t1.getX()) || 313277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getY() != t1.getY()) || 314277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getZ() != t1.getZ()) || 315277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.hasFaces() != t1.hasFaces()) || 316277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.hasMipmaps() != t1.hasMipmaps())) { 317277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Dimension mismatch between parameters ain1 and ain2!"); 318277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 319277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 320277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __F32, 1); 321277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 3228ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_dp_init, new Allocation[]{ain1, ain2}, aout, sc); 323277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_float(aout); 324277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 325277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 3268ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_histogram_init = 4; 327277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in" 328277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram_init(byte[] in1) { 329277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 330277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 331277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 332277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 3331381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __U8, in1.length); 334277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 3351381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 336277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 337d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross resultArray256_uint result = reduce_histogram_init(ain1, null); 338d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 339d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 340277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 341277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 342277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 343277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram_init(Allocation ain1) { 344277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_histogram_init(ain1, null); 345277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 346277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 347277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 348277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram_init(Allocation ain1, Script.LaunchOptions sc) { 349277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 350277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__U8)) { 351277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with U8!"); 352277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 353277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __U32, 256); 354277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 3558ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_histogram_init, new Allocation[]{ain1}, aout, sc); 356277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new resultArray256_uint(aout); 357277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 358277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 359277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross} 360277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 361