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