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.rs 20277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross */ 21277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 22277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grosspackage examples; 23277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 24277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grossimport android.renderscript.*; 25277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grossimport examples.reduce_general_examplesBitCode; 26277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 27277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross/** 28277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross * @hide 29277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross */ 30277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Grosspublic class ScriptC_reduce_general_examples extends ScriptC { 31277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private static final String __rs_resource_name = "reduce_general_examples"; 32277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Constructor 33277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public ScriptC_reduce_general_examples(RenderScript rs) { 34277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross super(rs, 35277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __rs_resource_name, 36277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross reduce_general_examplesBitCode.getBitCode32(), 37277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross reduce_general_examplesBitCode.getBitCode64()); 38277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mRSLocal = rs; 39277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __I32 = Element.I32(rs); 40277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __F32 = Element.F32(rs); 41277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __I32_2 = Element.I32_2(rs); 42277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __U32 = Element.U32(rs); 43277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross __U8 = Element.U8(rs); 44277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 45277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 46277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __F32; 47277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __I32; 48277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __I32_2; 49277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __U32; 50277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Element __U8; 51277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private RenderScript mRSLocal; 52277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 53277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 54277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class resultArray256_uint { 55277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public long[] get() { 56d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 57d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross int[] outArray = new int[256]; 58d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 59d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross long[] result = new long[256]; 60d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (int Idx = 0; Idx < 256; ++Idx) { 61d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result[Idx] = ((long) ((outArray[Idx]) & 0xffffffffL)); 62d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 63d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 64d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = result; 65d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 66d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 67d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 68d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 69d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 70d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 71d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 72d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 73d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 74d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 75d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 76277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 77277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 78d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 79277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 80277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 81277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private resultArray256_uint(Allocation out) { 82d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 83277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 84d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 85277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 86277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 87d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 88277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 89d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 90d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private long[] mResult; 91277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 92277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 93277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 94277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 95277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class result_float { 96277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public float get() { 97d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 98d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross float[] outArray = new float[1]; 99d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 100d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = outArray[0]; 101d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 102d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 103d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 104d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 105d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 106d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 107d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 108d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 109d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 110d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 111d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 112d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 113d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 114d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 115277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 116277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 117277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private result_float(Allocation out) { 118d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 119277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 120d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 121277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 122277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 123d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 124277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 125d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 126d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private float mResult; 127277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 128277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 129277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 130277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 131277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class result_int { 132277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public int get() { 133d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 134d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross int[] outArray = new int[1]; 135d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 136d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = outArray[0]; 137d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 138d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 139d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 140d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 141d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 142d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 143d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 144d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 145d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 146d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 147d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 148d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 149d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 150d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 151277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 152277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 153277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private result_int(Allocation out) { 154d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 155277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 156d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 157277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 158277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 159d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 160277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 161d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 162d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private int mResult; 163277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 164277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 165277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // To obtain the result, invoke get(), which blocks 166277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // until the asynchronously-launched operation has completed. 167277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public static class result_int2 { 168277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public Int2 get() { 169d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (!mGotResult) { 170d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross int[] outArray = new int[2]; 171d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.copyTo(outArray); 172d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mResult = new Int2(outArray[0], outArray[1]); 173d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut.destroy(); 174d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mOut = null; // make Java object eligible for garbage collection 175d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross if (mTempIns != null) { 176d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross for (Allocation tempIn : mTempIns) { 177d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross tempIn.destroy(); 178d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 179d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 180d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; // make Java objects eligible for garbage collection 181d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 182d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 183d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = true; 184d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross } 185d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross 186d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return mResult; 187277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 188277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 189277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private result_int2(Allocation out) { 190d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mTempIns = null; 191277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross mOut = out; 192d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross mGotResult = false; 193277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 194277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 195d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Allocation[] mTempIns; 196277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross private Allocation mOut; 197d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private boolean mGotResult; 198d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross private Int2 mResult; 199277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 200277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 2018ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_addint = 0; 202277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "val" 203277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint(int[] in1) { 204277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 205277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 206277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 207277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2081381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 209277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 2101381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 211277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 212d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_addint(ain1, null); 213d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 214d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 215277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 216277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 217277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 218277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint(Allocation ain1) { 219277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_addint(ain1, null); 220277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 221277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 222277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 223277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_addint(Allocation ain1, Script.LaunchOptions sc) { 224277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 225277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 226277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 227277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 228277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 229277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 2308ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_addint, new Allocation[]{ain1}, aout, sc); 231277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 232277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 233277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 2348ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_mpyint = 1; 235277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "val" 236277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_mpyint(int[] in1) { 237277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 238277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 239277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 240277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2411381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 242277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 2431381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 244277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 245d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_mpyint(ain1, null); 246d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 247d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 248277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 249277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 250277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 251277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_mpyint(Allocation ain1) { 252277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_mpyint(ain1, null); 253277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 254277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 255277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int val" 256277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_mpyint(Allocation ain1, Script.LaunchOptions sc) { 257277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 258277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 259277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 260277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 261277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 262277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 2638ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_mpyint, new Allocation[]{ain1}, aout, sc); 264277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 265277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 266277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 2678ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_dp = 2; 268277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in1" 269277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in2 = "in2" 270277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp(float[] in1, float[] in2) { 271277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 272277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 273277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 274277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2751381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __F32, in1.length); 2761381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.setAutoPadding(true); 2771381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 278277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in2" is non-null. 279277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in2 == null) { 280277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in2\" is null!"); 281277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 282277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that input array lengths are the same. 283277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1.length != in2.length) { 284277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Array length mismatch between parameters \"in1\" and \"in2\"!"); 285277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 2861381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain2 = Allocation.createSized(mRSLocal, __F32, in2.length); 287277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain2.setAutoPadding(true); 2881381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain2.copyFrom(in2); 289277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 290d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_float result = reduce_dp(ain1, ain2, null); 291d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1, ain2}; 292d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 293277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 294277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 295277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in1" 296277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain2 = "float in2" 297277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp(Allocation ain1, Allocation ain2) { 298277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_dp(ain1, ain2, null); 299277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 300277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 301277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in1" 302277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain2 = "float in2" 303277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_float reduce_dp(Allocation ain1, Allocation ain2, Script.LaunchOptions sc) { 304277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Type t0, t1; 305277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 306277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__F32)) { 307277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with F32!"); 308277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 309277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain2 310277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain2.getType().getElement().isCompatible(__F32)) { 311277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with F32!"); 312277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 313277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify dimensions 314277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross t0 = ain1.getType(); 315277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross t1 = ain2.getType(); 316277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if ((t0.getCount() != t1.getCount()) || 317277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getX() != t1.getX()) || 318277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getY() != t1.getY()) || 319277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.getZ() != t1.getZ()) || 320277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.hasFaces() != t1.hasFaces()) || 321277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross (t0.hasMipmaps() != t1.hasMipmaps())) { 322277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Dimension mismatch between parameters ain1 and ain2!"); 323277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 324277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 325277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __F32, 1); 326277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 3278ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_dp, new Allocation[]{ain1, ain2}, aout, sc); 328277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_float(aout); 329277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 330277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 3318ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_findMinAndMax = 3; 332277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in" 333277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_findMinAndMax(float[] in1) { 334277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 335277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 336277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 337277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 3381381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __F32, in1.length); 339277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 3401381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 341277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 342d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int2 result = reduce_findMinAndMax(ain1, null); 343d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 344d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 345277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 346277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 347277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in" 348277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_findMinAndMax(Allocation ain1) { 349277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_findMinAndMax(ain1, null); 350277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 351277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 352277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "float in" 353277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_findMinAndMax(Allocation ain1, Script.LaunchOptions sc) { 354277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 355277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__F32)) { 356277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with F32!"); 357277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 358277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32_2, 1); 359277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 3608ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_findMinAndMax, new Allocation[]{ain1}, aout, sc); 361277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int2(aout); 362277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 363277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 3648ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_fz = 4; 365277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "inVal" 366277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_fz(int[] in1) { 367277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 368277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 369277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 370277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 3711381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 372277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 3731381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 374277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 375d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int result = reduce_fz(ain1, null); 376d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 377d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 378277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 379277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 380277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int inVal" 381277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_fz(Allocation ain1) { 382277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_fz(ain1, null); 383277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 384277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 385277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int inVal" 386277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int reduce_fz(Allocation ain1, Script.LaunchOptions sc) { 387277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 388277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 389277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 390277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 391277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32, 1); 392277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 3938ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_fz, new Allocation[]{ain1}, aout, sc); 394277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int(aout); 395277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 396277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 3978ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_fz2 = 5; 398277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "inVal" 399277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_fz2(int[] in1) { 400277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 401277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 402277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 403277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 4041381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __I32, in1.length); 405277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 4061381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 407277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 408d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int2 result = reduce_fz2(ain1, null); 409d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 410d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 411277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 412277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 413277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int inVal" 414277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_fz2(Allocation ain1) { 415277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_fz2(ain1, null); 416277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 417277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 418277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "int inVal" 419277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_fz2(Allocation ain1, Script.LaunchOptions sc) { 420277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 421277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__I32)) { 422277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with I32!"); 423277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 424277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32_2, 1); 425277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 4268ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_fz2, new Allocation[]{ain1}, aout, sc); 427277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int2(aout); 428277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 429277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 4308ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_histogram = 6; 431277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in" 432277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram(byte[] in1) { 433277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 434277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 435277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 436277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 4371381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __U8, in1.length); 438277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 4391381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 440277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 441d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross resultArray256_uint result = reduce_histogram(ain1, null); 442d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 443d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 444277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 445277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 446277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 447277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram(Allocation ain1) { 448277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_histogram(ain1, null); 449277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 450277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 451277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 452277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public resultArray256_uint reduce_histogram(Allocation ain1, Script.LaunchOptions sc) { 453277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 454277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__U8)) { 455277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with U8!"); 456277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 457277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __U32, 256); 458277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 4598ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_histogram, new Allocation[]{ain1}, aout, sc); 460277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new resultArray256_uint(aout); 461277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 462277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 4638ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross private final static int mExportReduceIdx_mode = 7; 464277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // in1 = "in" 465277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_mode(byte[] in1) { 466277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // Verify that "in1" is non-null. 467277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (in1 == null) { 468277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSIllegalArgumentException("Array \"in1\" is null!"); 469277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 4701381ae7c081ab151e78184501f757f517fe6c2a9David Gross Allocation ain1 = Allocation.createSized(mRSLocal, __U8, in1.length); 471277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross ain1.setAutoPadding(true); 4721381ae7c081ab151e78184501f757f517fe6c2a9David Gross ain1.copyFrom(in1); 473277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 474d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result_int2 result = reduce_mode(ain1, null); 475d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross result.mTempIns = new Allocation[]{ain1}; 476d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross return result; 477277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 478277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 479277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 480277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_mode(Allocation ain1) { 481277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return reduce_mode(ain1, null); 482277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 483277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 484277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // ain1 = "uchar in" 485277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross public result_int2 reduce_mode(Allocation ain1, Script.LaunchOptions sc) { 486277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross // check ain1 487277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross if (!ain1.getType().getElement().isCompatible(__U8)) { 488277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross throw new RSRuntimeException("Type mismatch with U8!"); 489277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 490277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross Allocation aout = Allocation.createSized(mRSLocal, __I32_2, 1); 491277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross aout.setAutoPadding(true); 4928ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross reduce(mExportReduceIdx_mode, new Allocation[]{ain1}, aout, sc); 493277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross return new result_int2(aout); 494277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross } 495277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 496277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross} 497277fd5e6545c8ba1272027ee6e6bc55a96316dc0David Gross 498