1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2013 The Android Open Source Project 3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License. 6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at 7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software 11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and 14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License. 15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.test_compat; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.res.Resources; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.support.v8.renderscript.*; 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log; 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.util.Arrays; 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.util.Random; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class UT_math_agree extends UnitTest { 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Resources mRes; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Random rand; 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected UT_math_agree(RSTestCore rstc, Resources res, Context ctx) { 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super(rstc, "Math Agreement", ctx); 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRes = res; 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rand = new Random(); 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // packing functions 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Float2 pack_f2(float[] val) { 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 2; 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Float2(val[0], val[1]); 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Float3 pack_f3(float[] val) { 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 3; 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Float3(val[0], val[1], val[2]); 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Float4 pack_f4(float[] val) { 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 4; 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Float4(val[0], val[1], val[2], val[3]); 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Byte2 pack_b2(byte[] val) { 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 2; 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Byte2(val[0], val[1]); 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Byte3 pack_b3(byte[] val) { 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 3; 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Byte3(val[0], val[1], val[2]); 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Byte4 pack_b4(byte[] val) { 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 4; 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Byte4(val[0], val[1], val[2], val[3]); 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Short2 pack_s2(short[] val) { 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 2; 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Short2(val[0], val[1]); 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Short3 pack_s3(short[] val) { 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 3; 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Short3(val[0], val[1], val[2]); 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Short4 pack_s4(short[] val) { 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 4; 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Short4(val[0], val[1], val[2], val[3]); 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Int2 pack_i2(int[] val) { 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 2; 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Int2(val[0], val[1]); 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Int3 pack_i3(int[] val) { 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 3; 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Int3(val[0], val[1], val[2]); 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Int4 pack_i4(int[] val) { 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 4; 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Int4(val[0], val[1], val[2], val[3]); 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Long2 pack_l2(long[] val) { 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 2; 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Long2(val[0], val[1]); 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Long3 pack_l3(long[] val) { 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 3; 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Long3(val[0], val[1], val[2]); 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Long4 pack_l4(long[] val) { 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert val.length == 4; 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return new Long4(val[0], val[1], val[2], val[3]); 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // random vector generation functions 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] randvec_float(int dim) { 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] fv = new float[dim]; 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams fv[i] = rand.nextFloat(); 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return fv; 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private byte[] randvec_char(int dim) { 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] cv = new byte[dim]; 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rand.nextBytes(cv); 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return cv; 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short[] randvec_uchar(int dim) { 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] ucv = new short[dim]; 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ucv[i] = (short)rand.nextInt(0x1 << 8); 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return ucv; 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short[] randvec_short(int dim) { 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] sv = new short[dim]; 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams sv[i] = (short)rand.nextInt(0x1 << 16); 120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return sv; 121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int[] randvec_ushort(int dim) { 123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] usv = new int[dim]; 124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams usv[i] = rand.nextInt(0x1 << 16); 126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return usv; 127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int[] randvec_int(int dim) { 129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] iv = new int[dim]; 130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 131572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams iv[i] = rand.nextInt(); 132572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return iv; 133572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 134572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long[] randvec_uint(int dim) { 135572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] uiv = new long[dim]; 136572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 137572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams uiv[i] = (long)rand.nextInt() - (long)Integer.MIN_VALUE; 138572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return uiv; 139572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 140572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long[] randvec_long(int dim) { 141572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] lv = new long[dim]; 142572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < dim; ++i) 143572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams lv[i] = rand.nextLong(); 144572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return lv; 145572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 146572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: unsigned long generator 147572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 148572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // min reference functions 149572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float min(float v1, float v2) { 150572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 < v2 ? v1 : v2; 151572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 152572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] min(float[] v1, float[] v2) { 153572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 154572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rv = new float[v1.length]; 155572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 156572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2[i]); 157572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 158572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 159572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private byte min(byte v1, byte v2) { 160572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 < v2 ? v1 : v2; 161572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 162572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private byte[] min(byte[] v1, byte[] v2) { 163572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 164572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rv = new byte[v1.length]; 165572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 166572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2[i]); 167572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 168572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 169572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short min(short v1, short v2) { 170572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 < v2 ? v1 : v2; 171572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 172572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short[] min(short[] v1, short[] v2) { 173572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 174572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rv = new short[v1.length]; 175572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 176572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2[i]); 177572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 178572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 179572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int min(int v1, int v2) { 180572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 < v2 ? v1 : v2; 181572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 182572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int[] min(int[] v1, int[] v2) { 183572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 184572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rv = new int[v1.length]; 185572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 186572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2[i]); 187572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 188572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 189572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long min(long v1, long v2) { 190572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 < v2 ? v1 : v2; 191572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 192572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long[] min(long[] v1, long[] v2) { 193572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 194572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rv = new long[v1.length]; 195572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 196572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2[i]); 197572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 198572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 199572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: unsigned long version of min 200572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 201572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // max reference functions 202572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float max(float v1, float v2) { 203572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 > v2 ? v1 : v2; 204572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 205572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] max(float[] v1, float[] v2) { 206572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 207572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rv = new float[v1.length]; 208572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 209572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2[i]); 210572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 211572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 212572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private byte max(byte v1, byte v2) { 213572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 > v2 ? v1 : v2; 214572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 215572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private byte[] max(byte[] v1, byte[] v2) { 216572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 217572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rv = new byte[v1.length]; 218572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 219572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2[i]); 220572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 221572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 222572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short max(short v1, short v2) { 223572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 > v2 ? v1 : v2; 224572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 225572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private short[] max(short[] v1, short[] v2) { 226572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 227572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rv = new short[v1.length]; 228572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 229572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2[i]); 230572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 231572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 232572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int max(int v1, int v2) { 233572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 > v2 ? v1 : v2; 234572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 235572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int[] max(int[] v1, int[] v2) { 236572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 237572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rv = new int[v1.length]; 238572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 239572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2[i]); 240572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 241572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 242572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long max(long v1, long v2) { 243572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return v1 > v2 ? v1 : v2; 244572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 245572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private long[] max(long[] v1, long[] v2) { 246572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams assert v1.length == v2.length; 247572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rv = new long[v1.length]; 248572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 249572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2[i]); 250572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 251572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 252572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: unsigned long version of max 253572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 254572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // fmin reference functions 255572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float fmin(float v1, float v2) { 256572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return min(v1, v2); 257572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 258572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] fmin(float[] v1, float[] v2) { 259572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return min(v1, v2); 260572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 261572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] fmin(float[] v1, float v2) { 262572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rv = new float[v1.length]; 263572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 264572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = min(v1[i], v2); 265572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 266572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 267572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 268572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // fmax reference functions 269572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float fmax(float v1, float v2) { 270572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return max(v1, v2); 271572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 272572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] fmax(float[] v1, float[] v2) { 273572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return max(v1, v2); 274572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 275572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float[] fmax(float[] v1, float v2) { 276572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rv = new float[v1.length]; 277572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < v1.length; ++i) 278572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rv[i] = max(v1[i], v2); 279572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return rv; 280572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 281572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 282572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void initializeValues(ScriptC_math_agree s) { 283572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float x = rand.nextFloat(); 284572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float y = rand.nextFloat(); 285572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 286572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_x(x); 287572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_y(y); 288572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_result_add(x + y); 289572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_result_sub(x - y); 290572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_result_mul(x * y); 291572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_result_div(x / y); 292572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 293572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Generate random vectors of all types 294572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float rand_f1_0 = rand.nextFloat(); 295572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f2_0 = randvec_float(2); 296572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f3_0 = randvec_float(3); 297572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f4_0 = randvec_float(4); 298572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float rand_f1_1 = rand.nextFloat(); 299572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f2_1 = randvec_float(2); 300572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f3_1 = randvec_float(3); 301572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float[] rand_f4_1 = randvec_float(4); 302572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short rand_uc1_0 = (short)rand.nextInt(0x1 << 8); 303572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc2_0 = randvec_uchar(2); 304572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc3_0 = randvec_uchar(3); 305572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc4_0 = randvec_uchar(4); 306572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short rand_uc1_1 = (short)rand.nextInt(0x1 << 8); 307572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc2_1 = randvec_uchar(2); 308572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc3_1 = randvec_uchar(3); 309572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_uc4_1 = randvec_uchar(4); 310572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short rand_ss1_0 = (short)rand.nextInt(0x1 << 16); 311572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss2_0 = randvec_short(2); 312572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss3_0 = randvec_short(3); 313572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss4_0 = randvec_short(4); 314572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short rand_ss1_1 = (short)rand.nextInt(0x1 << 16); 315572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss2_1 = randvec_short(2); 316572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss3_1 = randvec_short(3); 317572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams short[] rand_ss4_1 = randvec_short(4); 318572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int rand_us1_0 = rand.nextInt(0x1 << 16); 319572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us2_0 = randvec_ushort(2); 320572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us3_0 = randvec_ushort(3); 321572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us4_0 = randvec_ushort(4); 322572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int rand_us1_1 = rand.nextInt(0x1 << 16); 323572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us2_1 = randvec_ushort(2); 324572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us3_1 = randvec_ushort(3); 325572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_us4_1 = randvec_ushort(4); 326572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int rand_si1_0 = rand.nextInt(); 327572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si2_0 = randvec_int(2); 328572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si3_0 = randvec_int(3); 329572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si4_0 = randvec_int(4); 330572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int rand_si1_1 = rand.nextInt(); 331572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si2_1 = randvec_int(2); 332572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si3_1 = randvec_int(3); 333572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int[] rand_si4_1 = randvec_int(4); 334572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long rand_ui1_0 = (long)rand.nextInt() - (long)Integer.MIN_VALUE; 335572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui2_0 = randvec_uint(2); 336572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui3_0 = randvec_uint(3); 337572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui4_0 = randvec_uint(4); 338572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long rand_ui1_1 = (long)rand.nextInt() - (long)Integer.MIN_VALUE; 339572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui2_1 = randvec_uint(2); 340572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui3_1 = randvec_uint(3); 341572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_ui4_1 = randvec_uint(4); 342572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long rand_sl1_0 = rand.nextLong(); 343572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl2_0 = randvec_long(2); 344572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl3_0 = randvec_long(3); 345572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl4_0 = randvec_long(4); 346572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long rand_sl1_1 = rand.nextLong(); 347572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl2_1 = randvec_long(2); 348572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl3_1 = randvec_long(3); 349572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long[] rand_sl4_1 = randvec_long(4); 350572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte rand_sc1_0 = (byte)rand.nextInt(0x1 << 8); 351572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc2_0 = randvec_char(2); 352572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc3_0 = randvec_char(3); 353572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc4_0 = randvec_char(4); 354572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte rand_sc1_1 = (byte)rand.nextInt(0x1 << 8); 355572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc2_1 = randvec_char(2); 356572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc3_1 = randvec_char(3); 357572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams byte[] rand_sc4_1 = randvec_char(4); 358572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: generate unsigned long vectors 359572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 360572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Set random vectors in renderscript code 361572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f1_0(rand_f1_0); 362572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f2_0(pack_f2(rand_f2_0)); 363572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f3_0(pack_f3(rand_f3_0)); 364572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f4_0(pack_f4(rand_f4_0)); 365572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f1_1(rand_f1_1); 366572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f2_1(pack_f2(rand_f2_1)); 367572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f3_1(pack_f3(rand_f3_1)); 368572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_f4_1(pack_f4(rand_f4_1)); 369572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc1_1(rand_uc1_1); 370572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc2_1(pack_s2(rand_uc2_1)); 371572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc3_1(pack_s3(rand_uc3_1)); 372572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc4_1(pack_s4(rand_uc4_1)); 373572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss1_0(rand_ss1_0); 374572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss2_0(pack_s2(rand_ss2_0)); 375572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss3_0(pack_s3(rand_ss3_0)); 376572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss4_0(pack_s4(rand_ss4_0)); 377572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss1_1(rand_ss1_1); 378572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss2_1(pack_s2(rand_ss2_1)); 379572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss3_1(pack_s3(rand_ss3_1)); 380572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ss4_1(pack_s4(rand_ss4_1)); 381572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us1_0(rand_us1_0); 382572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us2_0(pack_i2(rand_us2_0)); 383572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us3_0(pack_i3(rand_us3_0)); 384572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us4_0(pack_i4(rand_us4_0)); 385572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us1_1(rand_us1_1); 386572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us2_1(pack_i2(rand_us2_1)); 387572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us3_1(pack_i3(rand_us3_1)); 388572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_us4_1(pack_i4(rand_us4_1)); 389572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si1_0(rand_si1_0); 390572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si2_0(pack_i2(rand_si2_0)); 391572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si3_0(pack_i3(rand_si3_0)); 392572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si4_0(pack_i4(rand_si4_0)); 393572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si1_1(rand_si1_1); 394572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si2_1(pack_i2(rand_si2_1)); 395572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si3_1(pack_i3(rand_si3_1)); 396572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_si4_1(pack_i4(rand_si4_1)); 397572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui1_0(rand_ui1_0); 398572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui2_0(pack_l2(rand_ui2_0)); 399572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui3_0(pack_l3(rand_ui3_0)); 400572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui4_0(pack_l4(rand_ui4_0)); 401572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui1_1(rand_ui1_1); 402572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui2_1(pack_l2(rand_ui2_1)); 403572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui3_1(pack_l3(rand_ui3_1)); 404572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_ui4_1(pack_l4(rand_ui4_1)); 405572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl1_0(rand_sl1_0); 406572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl2_0(pack_l2(rand_sl2_0)); 407572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl3_0(pack_l3(rand_sl3_0)); 408572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl4_0(pack_l4(rand_sl4_0)); 409572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl1_1(rand_sl1_1); 410572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl2_1(pack_l2(rand_sl2_1)); 411572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl3_1(pack_l3(rand_sl3_1)); 412572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sl4_1(pack_l4(rand_sl4_1)); 413572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc1_0(rand_uc1_0); 414572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc2_0(pack_s2(rand_uc2_0)); 415572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc3_0(pack_s3(rand_uc3_0)); 416572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_uc4_0(pack_s4(rand_uc4_0)); 417572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc1_0(rand_sc1_0); 418572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc2_0(pack_b2(rand_sc2_0)); 419572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc3_0(pack_b3(rand_sc3_0)); 420572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc4_0(pack_b4(rand_sc4_0)); 421572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc1_1(rand_sc1_1); 422572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc2_1(pack_b2(rand_sc2_1)); 423572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc3_1(pack_b3(rand_sc3_1)); 424572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_rand_sc4_1(pack_b4(rand_sc4_1)); 425572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: set unsigned long vectors 426572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 427572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Set results for min 428572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_f1_f1(min(rand_f1_0, rand_f1_1)); 429572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_f2_f2(pack_f2(min(rand_f2_0, rand_f2_1))); 430572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_f3_f3(pack_f3(min(rand_f3_0, rand_f3_1))); 431572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_f4_f4(pack_f4(min(rand_f4_0, rand_f4_1))); 432572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_uc1_uc1(min(rand_uc1_0, rand_uc1_1)); 433572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_uc2_uc2(pack_s2(min(rand_uc2_0, rand_uc2_1))); 434572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_uc3_uc3(pack_s3(min(rand_uc3_0, rand_uc3_1))); 435572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_uc4_uc4(pack_s4(min(rand_uc4_0, rand_uc4_1))); 436572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ss1_ss1(min(rand_ss1_0, rand_ss1_1)); 437572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ss2_ss2(pack_s2(min(rand_ss2_0, rand_ss2_1))); 438572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ss3_ss3(pack_s3(min(rand_ss3_0, rand_ss3_1))); 439572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ss4_ss4(pack_s4(min(rand_ss4_0, rand_ss4_1))); 440572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_us1_us1(min(rand_us1_0, rand_us1_1)); 441572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_us2_us2(pack_i2(min(rand_us2_0, rand_us2_1))); 442572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_us3_us3(pack_i3(min(rand_us3_0, rand_us3_1))); 443572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_us4_us4(pack_i4(min(rand_us4_0, rand_us4_1))); 444572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_si1_si1(min(rand_si1_0, rand_si1_1)); 445572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_si2_si2(pack_i2(min(rand_si2_0, rand_si2_1))); 446572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_si3_si3(pack_i3(min(rand_si3_0, rand_si3_1))); 447572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_si4_si4(pack_i4(min(rand_si4_0, rand_si4_1))); 448572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ui1_ui1(min(rand_ui1_0, rand_ui1_1)); 449572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ui2_ui2(pack_l2(min(rand_ui2_0, rand_ui2_1))); 450572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ui3_ui3(pack_l3(min(rand_ui3_0, rand_ui3_1))); 451572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_ui4_ui4(pack_l4(min(rand_ui4_0, rand_ui4_1))); 452572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sl1_sl1(min(rand_sl1_0, rand_sl1_1)); 453572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sl2_sl2(pack_l2(min(rand_sl2_0, rand_sl2_1))); 454572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sl3_sl3(pack_l3(min(rand_sl3_0, rand_sl3_1))); 455572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sl4_sl4(pack_l4(min(rand_sl4_0, rand_sl4_1))); 456572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1)); 457572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sc2_sc2(pack_b2(min(rand_sc2_0, rand_sc2_1))); 458572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sc3_sc3(pack_b3(min(rand_sc3_0, rand_sc3_1))); 459572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_min_rand_sc4_sc4(pack_b4(min(rand_sc4_0, rand_sc4_1))); 460572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: set results for unsigned long min 461572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 462572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Set results for max 463572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_f1_f1(max(rand_f1_0, rand_f1_1)); 464572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_f2_f2(pack_f2(max(rand_f2_0, rand_f2_1))); 465572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_f3_f3(pack_f3(max(rand_f3_0, rand_f3_1))); 466572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_f4_f4(pack_f4(max(rand_f4_0, rand_f4_1))); 467572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_uc1_uc1(max(rand_uc1_0, rand_uc1_1)); 468572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_uc2_uc2(pack_s2(max(rand_uc2_0, rand_uc2_1))); 469572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_uc3_uc3(pack_s3(max(rand_uc3_0, rand_uc3_1))); 470572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_uc4_uc4(pack_s4(max(rand_uc4_0, rand_uc4_1))); 471572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ss1_ss1(max(rand_ss1_0, rand_ss1_1)); 472572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ss2_ss2(pack_s2(max(rand_ss2_0, rand_ss2_1))); 473572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ss3_ss3(pack_s3(max(rand_ss3_0, rand_ss3_1))); 474572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ss4_ss4(pack_s4(max(rand_ss4_0, rand_ss4_1))); 475572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_us1_us1(max(rand_us1_0, rand_us1_1)); 476572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_us2_us2(pack_i2(max(rand_us2_0, rand_us2_1))); 477572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_us3_us3(pack_i3(max(rand_us3_0, rand_us3_1))); 478572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_us4_us4(pack_i4(max(rand_us4_0, rand_us4_1))); 479572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_si1_si1(max(rand_si1_0, rand_si1_1)); 480572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_si2_si2(pack_i2(max(rand_si2_0, rand_si2_1))); 481572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_si3_si3(pack_i3(max(rand_si3_0, rand_si3_1))); 482572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_si4_si4(pack_i4(max(rand_si4_0, rand_si4_1))); 483572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ui1_ui1(max(rand_ui1_0, rand_ui1_1)); 484572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ui2_ui2(pack_l2(max(rand_ui2_0, rand_ui2_1))); 485572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ui3_ui3(pack_l3(max(rand_ui3_0, rand_ui3_1))); 486572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_ui4_ui4(pack_l4(max(rand_ui4_0, rand_ui4_1))); 487572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sl1_sl1(max(rand_sl1_0, rand_sl1_1)); 488572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sl2_sl2(pack_l2(max(rand_sl2_0, rand_sl2_1))); 489572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sl3_sl3(pack_l3(max(rand_sl3_0, rand_sl3_1))); 490572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sl4_sl4(pack_l4(max(rand_sl4_0, rand_sl4_1))); 491572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sc1_sc1(max(rand_sc1_0, rand_sc1_1)); 492572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sc2_sc2(pack_b2(max(rand_sc2_0, rand_sc2_1))); 493572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sc3_sc3(pack_b3(max(rand_sc3_0, rand_sc3_1))); 494572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_max_rand_sc4_sc4(pack_b4(max(rand_sc4_0, rand_sc4_1))); 495572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 496572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // TODO: set results for unsigned long max 497572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 498572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Set results for fmin 499572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f1_f1(fmin(rand_f1_0, rand_f1_1)); 500572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f2_f2(pack_f2(fmin(rand_f2_0, rand_f2_1))); 501572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f3_f3(pack_f3(fmin(rand_f3_0, rand_f3_1))); 502572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f4_f4(pack_f4(fmin(rand_f4_0, rand_f4_1))); 503572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f2_f1(pack_f2(fmin(rand_f2_0, rand_f1_1))); 504572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f3_f1(pack_f3(fmin(rand_f3_0, rand_f1_1))); 505572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmin_rand_f4_f1(pack_f4(fmin(rand_f4_0, rand_f1_1))); 506572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 507572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Set results for fmax 508572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f1_f1(fmax(rand_f1_0, rand_f1_1)); 509572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f2_f2(pack_f2(fmax(rand_f2_0, rand_f2_1))); 510572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f3_f3(pack_f3(fmax(rand_f3_0, rand_f3_1))); 511572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f4_f4(pack_f4(fmax(rand_f4_0, rand_f4_1))); 512572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f2_f1(pack_f2(fmax(rand_f2_0, rand_f1_1))); 513572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f3_f1(pack_f3(fmax(rand_f3_0, rand_f1_1))); 514572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_fmax_rand_f4_f1(pack_f4(fmax(rand_f4_0, rand_f1_1))); 515572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 516572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 517572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void run() { 518572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams RenderScript pRS = RenderScript.create(mCtx); 519572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ScriptC_math_agree s = new ScriptC_math_agree(pRS); 520572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.setMessageHandler(mRsMessage); 521572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams initializeValues(s); 522572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.invoke_math_agree_test(); 523572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.finish(); 524572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams waitForMessage(); 525572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.destroy(); 526572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 527572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 528