1// This file is automatically generated from 2// frameworks/rs/tests/java_api/RSUnitTests/RSUnitTests.py 3/* 4 * Copyright (C) 2017 The Android Open Source Project 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19package com.android.rs.unittest; 20 21import android.content.Context; 22import android.support.v8.renderscript.Byte2; 23import android.support.v8.renderscript.Byte3; 24import android.support.v8.renderscript.Byte4; 25import android.support.v8.renderscript.Float2; 26import android.support.v8.renderscript.Float3; 27import android.support.v8.renderscript.Float4; 28import android.support.v8.renderscript.Int2; 29import android.support.v8.renderscript.Int3; 30import android.support.v8.renderscript.Int4; 31import android.support.v8.renderscript.Long2; 32import android.support.v8.renderscript.Long3; 33import android.support.v8.renderscript.Long4; 34import android.support.v8.renderscript.RenderScript; 35import android.support.v8.renderscript.Short2; 36import android.support.v8.renderscript.Short3; 37import android.support.v8.renderscript.Short4; 38 39import java.util.Random; 40 41public class UT_math_agree extends UnitTest { 42 private Random rand; 43 44 public UT_math_agree(Context ctx) { 45 super("Math Agreement", ctx); 46 rand = new Random(); 47 } 48 49 // packing functions 50 private Float2 pack_f2(float[] val) { 51 assert val.length == 2; 52 return new Float2(val[0], val[1]); 53 } 54 55 private Float3 pack_f3(float[] val) { 56 assert val.length == 3; 57 return new Float3(val[0], val[1], val[2]); 58 } 59 60 private Float4 pack_f4(float[] val) { 61 assert val.length == 4; 62 return new Float4(val[0], val[1], val[2], val[3]); 63 } 64 65 private Byte2 pack_b2(byte[] val) { 66 assert val.length == 2; 67 return new Byte2(val[0], val[1]); 68 } 69 70 private Byte3 pack_b3(byte[] val) { 71 assert val.length == 3; 72 return new Byte3(val[0], val[1], val[2]); 73 } 74 75 private Byte4 pack_b4(byte[] val) { 76 assert val.length == 4; 77 return new Byte4(val[0], val[1], val[2], val[3]); 78 } 79 80 private Short2 pack_s2(short[] val) { 81 assert val.length == 2; 82 return new Short2(val[0], val[1]); 83 } 84 85 private Short3 pack_s3(short[] val) { 86 assert val.length == 3; 87 return new Short3(val[0], val[1], val[2]); 88 } 89 90 private Short4 pack_s4(short[] val) { 91 assert val.length == 4; 92 return new Short4(val[0], val[1], val[2], val[3]); 93 } 94 95 private Int2 pack_i2(int[] val) { 96 assert val.length == 2; 97 return new Int2(val[0], val[1]); 98 } 99 100 private Int3 pack_i3(int[] val) { 101 assert val.length == 3; 102 return new Int3(val[0], val[1], val[2]); 103 } 104 105 private Int4 pack_i4(int[] val) { 106 assert val.length == 4; 107 return new Int4(val[0], val[1], val[2], val[3]); 108 } 109 110 private Long2 pack_l2(long[] val) { 111 assert val.length == 2; 112 return new Long2(val[0], val[1]); 113 } 114 115 private Long3 pack_l3(long[] val) { 116 assert val.length == 3; 117 return new Long3(val[0], val[1], val[2]); 118 } 119 120 private Long4 pack_l4(long[] val) { 121 assert val.length == 4; 122 return new Long4(val[0], val[1], val[2], val[3]); 123 } 124 125 // random vector generation functions 126 private float[] randvec_float(int dim) { 127 float[] fv = new float[dim]; 128 for (int i = 0; i < dim; ++i) 129 fv[i] = rand.nextFloat(); 130 return fv; 131 } 132 133 private byte[] randvec_char(int dim) { 134 byte[] cv = new byte[dim]; 135 rand.nextBytes(cv); 136 return cv; 137 } 138 139 private short[] randvec_uchar(int dim) { 140 short[] ucv = new short[dim]; 141 for (int i = 0; i < dim; ++i) 142 ucv[i] = (short) rand.nextInt(0x1 << 8); 143 return ucv; 144 } 145 146 private short[] randvec_short(int dim) { 147 short[] sv = new short[dim]; 148 for (int i = 0; i < dim; ++i) 149 sv[i] = (short) rand.nextInt(0x1 << 16); 150 return sv; 151 } 152 153 private int[] randvec_ushort(int dim) { 154 int[] usv = new int[dim]; 155 for (int i = 0; i < dim; ++i) 156 usv[i] = rand.nextInt(0x1 << 16); 157 return usv; 158 } 159 160 private int[] randvec_int(int dim) { 161 int[] iv = new int[dim]; 162 for (int i = 0; i < dim; ++i) 163 iv[i] = rand.nextInt(); 164 return iv; 165 } 166 167 private long[] randvec_uint(int dim) { 168 long[] uiv = new long[dim]; 169 for (int i = 0; i < dim; ++i) 170 uiv[i] = (long) rand.nextInt() - (long) Integer.MIN_VALUE; 171 return uiv; 172 } 173 174 private long[] randvec_long(int dim) { 175 long[] lv = new long[dim]; 176 for (int i = 0; i < dim; ++i) 177 lv[i] = rand.nextLong(); 178 return lv; 179 } 180 // TODO: unsigned long generator 181 182 // min reference functions 183 private float min(float v1, float v2) { 184 return v1 < v2 ? v1 : v2; 185 } 186 187 private float[] min(float[] v1, float[] v2) { 188 assert v1.length == v2.length; 189 float[] rv = new float[v1.length]; 190 for (int i = 0; i < v1.length; ++i) 191 rv[i] = min(v1[i], v2[i]); 192 return rv; 193 } 194 195 private byte min(byte v1, byte v2) { 196 return v1 < v2 ? v1 : v2; 197 } 198 199 private byte[] min(byte[] v1, byte[] v2) { 200 assert v1.length == v2.length; 201 byte[] rv = new byte[v1.length]; 202 for (int i = 0; i < v1.length; ++i) 203 rv[i] = min(v1[i], v2[i]); 204 return rv; 205 } 206 207 private short min(short v1, short v2) { 208 return v1 < v2 ? v1 : v2; 209 } 210 211 private short[] min(short[] v1, short[] v2) { 212 assert v1.length == v2.length; 213 short[] rv = new short[v1.length]; 214 for (int i = 0; i < v1.length; ++i) 215 rv[i] = min(v1[i], v2[i]); 216 return rv; 217 } 218 219 private int min(int v1, int v2) { 220 return v1 < v2 ? v1 : v2; 221 } 222 223 private int[] min(int[] v1, int[] v2) { 224 assert v1.length == v2.length; 225 int[] rv = new int[v1.length]; 226 for (int i = 0; i < v1.length; ++i) 227 rv[i] = min(v1[i], v2[i]); 228 return rv; 229 } 230 231 private long min(long v1, long v2) { 232 return v1 < v2 ? v1 : v2; 233 } 234 235 private long[] min(long[] v1, long[] v2) { 236 assert v1.length == v2.length; 237 long[] rv = new long[v1.length]; 238 for (int i = 0; i < v1.length; ++i) 239 rv[i] = min(v1[i], v2[i]); 240 return rv; 241 } 242 // TODO: unsigned long version of min 243 244 // max reference functions 245 private float max(float v1, float v2) { 246 return v1 > v2 ? v1 : v2; 247 } 248 249 private float[] max(float[] v1, float[] v2) { 250 assert v1.length == v2.length; 251 float[] rv = new float[v1.length]; 252 for (int i = 0; i < v1.length; ++i) 253 rv[i] = max(v1[i], v2[i]); 254 return rv; 255 } 256 257 private byte max(byte v1, byte v2) { 258 return v1 > v2 ? v1 : v2; 259 } 260 261 private byte[] max(byte[] v1, byte[] v2) { 262 assert v1.length == v2.length; 263 byte[] rv = new byte[v1.length]; 264 for (int i = 0; i < v1.length; ++i) 265 rv[i] = max(v1[i], v2[i]); 266 return rv; 267 } 268 269 private short max(short v1, short v2) { 270 return v1 > v2 ? v1 : v2; 271 } 272 273 private short[] max(short[] v1, short[] v2) { 274 assert v1.length == v2.length; 275 short[] rv = new short[v1.length]; 276 for (int i = 0; i < v1.length; ++i) 277 rv[i] = max(v1[i], v2[i]); 278 return rv; 279 } 280 281 private int max(int v1, int v2) { 282 return v1 > v2 ? v1 : v2; 283 } 284 285 private int[] max(int[] v1, int[] v2) { 286 assert v1.length == v2.length; 287 int[] rv = new int[v1.length]; 288 for (int i = 0; i < v1.length; ++i) 289 rv[i] = max(v1[i], v2[i]); 290 return rv; 291 } 292 293 private long max(long v1, long v2) { 294 return v1 > v2 ? v1 : v2; 295 } 296 297 private long[] max(long[] v1, long[] v2) { 298 assert v1.length == v2.length; 299 long[] rv = new long[v1.length]; 300 for (int i = 0; i < v1.length; ++i) 301 rv[i] = max(v1[i], v2[i]); 302 return rv; 303 } 304 // TODO: unsigned long version of max 305 306 // fmin reference functions 307 private float fmin(float v1, float v2) { 308 return min(v1, v2); 309 } 310 311 private float[] fmin(float[] v1, float[] v2) { 312 return min(v1, v2); 313 } 314 315 private float[] fmin(float[] v1, float v2) { 316 float[] rv = new float[v1.length]; 317 for (int i = 0; i < v1.length; ++i) 318 rv[i] = min(v1[i], v2); 319 return rv; 320 } 321 322 // fmax reference functions 323 private float fmax(float v1, float v2) { 324 return max(v1, v2); 325 } 326 327 private float[] fmax(float[] v1, float[] v2) { 328 return max(v1, v2); 329 } 330 331 private float[] fmax(float[] v1, float v2) { 332 float[] rv = new float[v1.length]; 333 for (int i = 0; i < v1.length; ++i) 334 rv[i] = max(v1[i], v2); 335 return rv; 336 } 337 338 private void initializeValues(ScriptC_math_agree s) { 339 float x = rand.nextFloat(); 340 float y = rand.nextFloat(); 341 342 s.set_x(x); 343 s.set_y(y); 344 s.set_result_add(x + y); 345 s.set_result_sub(x - y); 346 s.set_result_mul(x * y); 347 s.set_result_div(x / y); 348 349 // Generate random vectors of all types 350 float rand_f1_0 = rand.nextFloat(); 351 float[] rand_f2_0 = randvec_float(2); 352 float[] rand_f3_0 = randvec_float(3); 353 float[] rand_f4_0 = randvec_float(4); 354 float rand_f1_1 = rand.nextFloat(); 355 float[] rand_f2_1 = randvec_float(2); 356 float[] rand_f3_1 = randvec_float(3); 357 float[] rand_f4_1 = randvec_float(4); 358 short rand_uc1_0 = (short) rand.nextInt(0x1 << 8); 359 short[] rand_uc2_0 = randvec_uchar(2); 360 short[] rand_uc3_0 = randvec_uchar(3); 361 short[] rand_uc4_0 = randvec_uchar(4); 362 short rand_uc1_1 = (short) rand.nextInt(0x1 << 8); 363 short[] rand_uc2_1 = randvec_uchar(2); 364 short[] rand_uc3_1 = randvec_uchar(3); 365 short[] rand_uc4_1 = randvec_uchar(4); 366 short rand_ss1_0 = (short) rand.nextInt(0x1 << 16); 367 short[] rand_ss2_0 = randvec_short(2); 368 short[] rand_ss3_0 = randvec_short(3); 369 short[] rand_ss4_0 = randvec_short(4); 370 short rand_ss1_1 = (short) rand.nextInt(0x1 << 16); 371 short[] rand_ss2_1 = randvec_short(2); 372 short[] rand_ss3_1 = randvec_short(3); 373 short[] rand_ss4_1 = randvec_short(4); 374 int rand_us1_0 = rand.nextInt(0x1 << 16); 375 int[] rand_us2_0 = randvec_ushort(2); 376 int[] rand_us3_0 = randvec_ushort(3); 377 int[] rand_us4_0 = randvec_ushort(4); 378 int rand_us1_1 = rand.nextInt(0x1 << 16); 379 int[] rand_us2_1 = randvec_ushort(2); 380 int[] rand_us3_1 = randvec_ushort(3); 381 int[] rand_us4_1 = randvec_ushort(4); 382 int rand_si1_0 = rand.nextInt(); 383 int[] rand_si2_0 = randvec_int(2); 384 int[] rand_si3_0 = randvec_int(3); 385 int[] rand_si4_0 = randvec_int(4); 386 int rand_si1_1 = rand.nextInt(); 387 int[] rand_si2_1 = randvec_int(2); 388 int[] rand_si3_1 = randvec_int(3); 389 int[] rand_si4_1 = randvec_int(4); 390 long rand_ui1_0 = (long) rand.nextInt() - (long) Integer.MIN_VALUE; 391 long[] rand_ui2_0 = randvec_uint(2); 392 long[] rand_ui3_0 = randvec_uint(3); 393 long[] rand_ui4_0 = randvec_uint(4); 394 long rand_ui1_1 = (long) rand.nextInt() - (long) Integer.MIN_VALUE; 395 long[] rand_ui2_1 = randvec_uint(2); 396 long[] rand_ui3_1 = randvec_uint(3); 397 long[] rand_ui4_1 = randvec_uint(4); 398 long rand_sl1_0 = rand.nextLong(); 399 long[] rand_sl2_0 = randvec_long(2); 400 long[] rand_sl3_0 = randvec_long(3); 401 long[] rand_sl4_0 = randvec_long(4); 402 long rand_sl1_1 = rand.nextLong(); 403 long[] rand_sl2_1 = randvec_long(2); 404 long[] rand_sl3_1 = randvec_long(3); 405 long[] rand_sl4_1 = randvec_long(4); 406 byte rand_sc1_0 = (byte) rand.nextInt(0x1 << 8); 407 byte[] rand_sc2_0 = randvec_char(2); 408 byte[] rand_sc3_0 = randvec_char(3); 409 byte[] rand_sc4_0 = randvec_char(4); 410 byte rand_sc1_1 = (byte) rand.nextInt(0x1 << 8); 411 byte[] rand_sc2_1 = randvec_char(2); 412 byte[] rand_sc3_1 = randvec_char(3); 413 byte[] rand_sc4_1 = randvec_char(4); 414 // TODO: generate unsigned long vectors 415 416 // Set random vectors in renderscript code 417 s.set_rand_f1_0(rand_f1_0); 418 s.set_rand_f2_0(pack_f2(rand_f2_0)); 419 s.set_rand_f3_0(pack_f3(rand_f3_0)); 420 s.set_rand_f4_0(pack_f4(rand_f4_0)); 421 s.set_rand_f1_1(rand_f1_1); 422 s.set_rand_f2_1(pack_f2(rand_f2_1)); 423 s.set_rand_f3_1(pack_f3(rand_f3_1)); 424 s.set_rand_f4_1(pack_f4(rand_f4_1)); 425 s.set_rand_uc1_1(rand_uc1_1); 426 s.set_rand_uc2_1(pack_s2(rand_uc2_1)); 427 s.set_rand_uc3_1(pack_s3(rand_uc3_1)); 428 s.set_rand_uc4_1(pack_s4(rand_uc4_1)); 429 s.set_rand_ss1_0(rand_ss1_0); 430 s.set_rand_ss2_0(pack_s2(rand_ss2_0)); 431 s.set_rand_ss3_0(pack_s3(rand_ss3_0)); 432 s.set_rand_ss4_0(pack_s4(rand_ss4_0)); 433 s.set_rand_ss1_1(rand_ss1_1); 434 s.set_rand_ss2_1(pack_s2(rand_ss2_1)); 435 s.set_rand_ss3_1(pack_s3(rand_ss3_1)); 436 s.set_rand_ss4_1(pack_s4(rand_ss4_1)); 437 s.set_rand_us1_0(rand_us1_0); 438 s.set_rand_us2_0(pack_i2(rand_us2_0)); 439 s.set_rand_us3_0(pack_i3(rand_us3_0)); 440 s.set_rand_us4_0(pack_i4(rand_us4_0)); 441 s.set_rand_us1_1(rand_us1_1); 442 s.set_rand_us2_1(pack_i2(rand_us2_1)); 443 s.set_rand_us3_1(pack_i3(rand_us3_1)); 444 s.set_rand_us4_1(pack_i4(rand_us4_1)); 445 s.set_rand_si1_0(rand_si1_0); 446 s.set_rand_si2_0(pack_i2(rand_si2_0)); 447 s.set_rand_si3_0(pack_i3(rand_si3_0)); 448 s.set_rand_si4_0(pack_i4(rand_si4_0)); 449 s.set_rand_si1_1(rand_si1_1); 450 s.set_rand_si2_1(pack_i2(rand_si2_1)); 451 s.set_rand_si3_1(pack_i3(rand_si3_1)); 452 s.set_rand_si4_1(pack_i4(rand_si4_1)); 453 s.set_rand_ui1_0(rand_ui1_0); 454 s.set_rand_ui2_0(pack_l2(rand_ui2_0)); 455 s.set_rand_ui3_0(pack_l3(rand_ui3_0)); 456 s.set_rand_ui4_0(pack_l4(rand_ui4_0)); 457 s.set_rand_ui1_1(rand_ui1_1); 458 s.set_rand_ui2_1(pack_l2(rand_ui2_1)); 459 s.set_rand_ui3_1(pack_l3(rand_ui3_1)); 460 s.set_rand_ui4_1(pack_l4(rand_ui4_1)); 461 s.set_rand_sl1_0(rand_sl1_0); 462 s.set_rand_sl2_0(pack_l2(rand_sl2_0)); 463 s.set_rand_sl3_0(pack_l3(rand_sl3_0)); 464 s.set_rand_sl4_0(pack_l4(rand_sl4_0)); 465 s.set_rand_sl1_1(rand_sl1_1); 466 s.set_rand_sl2_1(pack_l2(rand_sl2_1)); 467 s.set_rand_sl3_1(pack_l3(rand_sl3_1)); 468 s.set_rand_sl4_1(pack_l4(rand_sl4_1)); 469 s.set_rand_uc1_0(rand_uc1_0); 470 s.set_rand_uc2_0(pack_s2(rand_uc2_0)); 471 s.set_rand_uc3_0(pack_s3(rand_uc3_0)); 472 s.set_rand_uc4_0(pack_s4(rand_uc4_0)); 473 s.set_rand_sc1_0(rand_sc1_0); 474 s.set_rand_sc2_0(pack_b2(rand_sc2_0)); 475 s.set_rand_sc3_0(pack_b3(rand_sc3_0)); 476 s.set_rand_sc4_0(pack_b4(rand_sc4_0)); 477 s.set_rand_sc1_1(rand_sc1_1); 478 s.set_rand_sc2_1(pack_b2(rand_sc2_1)); 479 s.set_rand_sc3_1(pack_b3(rand_sc3_1)); 480 s.set_rand_sc4_1(pack_b4(rand_sc4_1)); 481 // TODO: set unsigned long vectors 482 483 // Set results for min 484 s.set_min_rand_f1_f1(min(rand_f1_0, rand_f1_1)); 485 s.set_min_rand_f2_f2(pack_f2(min(rand_f2_0, rand_f2_1))); 486 s.set_min_rand_f3_f3(pack_f3(min(rand_f3_0, rand_f3_1))); 487 s.set_min_rand_f4_f4(pack_f4(min(rand_f4_0, rand_f4_1))); 488 s.set_min_rand_uc1_uc1(min(rand_uc1_0, rand_uc1_1)); 489 s.set_min_rand_uc2_uc2(pack_s2(min(rand_uc2_0, rand_uc2_1))); 490 s.set_min_rand_uc3_uc3(pack_s3(min(rand_uc3_0, rand_uc3_1))); 491 s.set_min_rand_uc4_uc4(pack_s4(min(rand_uc4_0, rand_uc4_1))); 492 s.set_min_rand_ss1_ss1(min(rand_ss1_0, rand_ss1_1)); 493 s.set_min_rand_ss2_ss2(pack_s2(min(rand_ss2_0, rand_ss2_1))); 494 s.set_min_rand_ss3_ss3(pack_s3(min(rand_ss3_0, rand_ss3_1))); 495 s.set_min_rand_ss4_ss4(pack_s4(min(rand_ss4_0, rand_ss4_1))); 496 s.set_min_rand_us1_us1(min(rand_us1_0, rand_us1_1)); 497 s.set_min_rand_us2_us2(pack_i2(min(rand_us2_0, rand_us2_1))); 498 s.set_min_rand_us3_us3(pack_i3(min(rand_us3_0, rand_us3_1))); 499 s.set_min_rand_us4_us4(pack_i4(min(rand_us4_0, rand_us4_1))); 500 s.set_min_rand_si1_si1(min(rand_si1_0, rand_si1_1)); 501 s.set_min_rand_si2_si2(pack_i2(min(rand_si2_0, rand_si2_1))); 502 s.set_min_rand_si3_si3(pack_i3(min(rand_si3_0, rand_si3_1))); 503 s.set_min_rand_si4_si4(pack_i4(min(rand_si4_0, rand_si4_1))); 504 s.set_min_rand_ui1_ui1(min(rand_ui1_0, rand_ui1_1)); 505 s.set_min_rand_ui2_ui2(pack_l2(min(rand_ui2_0, rand_ui2_1))); 506 s.set_min_rand_ui3_ui3(pack_l3(min(rand_ui3_0, rand_ui3_1))); 507 s.set_min_rand_ui4_ui4(pack_l4(min(rand_ui4_0, rand_ui4_1))); 508 s.set_min_rand_sl1_sl1(min(rand_sl1_0, rand_sl1_1)); 509 s.set_min_rand_sl2_sl2(pack_l2(min(rand_sl2_0, rand_sl2_1))); 510 s.set_min_rand_sl3_sl3(pack_l3(min(rand_sl3_0, rand_sl3_1))); 511 s.set_min_rand_sl4_sl4(pack_l4(min(rand_sl4_0, rand_sl4_1))); 512 s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1)); 513 s.set_min_rand_sc2_sc2(pack_b2(min(rand_sc2_0, rand_sc2_1))); 514 s.set_min_rand_sc3_sc3(pack_b3(min(rand_sc3_0, rand_sc3_1))); 515 s.set_min_rand_sc4_sc4(pack_b4(min(rand_sc4_0, rand_sc4_1))); 516 // TODO: set results for unsigned long min 517 518 // Set results for max 519 s.set_max_rand_f1_f1(max(rand_f1_0, rand_f1_1)); 520 s.set_max_rand_f2_f2(pack_f2(max(rand_f2_0, rand_f2_1))); 521 s.set_max_rand_f3_f3(pack_f3(max(rand_f3_0, rand_f3_1))); 522 s.set_max_rand_f4_f4(pack_f4(max(rand_f4_0, rand_f4_1))); 523 s.set_max_rand_uc1_uc1(max(rand_uc1_0, rand_uc1_1)); 524 s.set_max_rand_uc2_uc2(pack_s2(max(rand_uc2_0, rand_uc2_1))); 525 s.set_max_rand_uc3_uc3(pack_s3(max(rand_uc3_0, rand_uc3_1))); 526 s.set_max_rand_uc4_uc4(pack_s4(max(rand_uc4_0, rand_uc4_1))); 527 s.set_max_rand_ss1_ss1(max(rand_ss1_0, rand_ss1_1)); 528 s.set_max_rand_ss2_ss2(pack_s2(max(rand_ss2_0, rand_ss2_1))); 529 s.set_max_rand_ss3_ss3(pack_s3(max(rand_ss3_0, rand_ss3_1))); 530 s.set_max_rand_ss4_ss4(pack_s4(max(rand_ss4_0, rand_ss4_1))); 531 s.set_max_rand_us1_us1(max(rand_us1_0, rand_us1_1)); 532 s.set_max_rand_us2_us2(pack_i2(max(rand_us2_0, rand_us2_1))); 533 s.set_max_rand_us3_us3(pack_i3(max(rand_us3_0, rand_us3_1))); 534 s.set_max_rand_us4_us4(pack_i4(max(rand_us4_0, rand_us4_1))); 535 s.set_max_rand_si1_si1(max(rand_si1_0, rand_si1_1)); 536 s.set_max_rand_si2_si2(pack_i2(max(rand_si2_0, rand_si2_1))); 537 s.set_max_rand_si3_si3(pack_i3(max(rand_si3_0, rand_si3_1))); 538 s.set_max_rand_si4_si4(pack_i4(max(rand_si4_0, rand_si4_1))); 539 s.set_max_rand_ui1_ui1(max(rand_ui1_0, rand_ui1_1)); 540 s.set_max_rand_ui2_ui2(pack_l2(max(rand_ui2_0, rand_ui2_1))); 541 s.set_max_rand_ui3_ui3(pack_l3(max(rand_ui3_0, rand_ui3_1))); 542 s.set_max_rand_ui4_ui4(pack_l4(max(rand_ui4_0, rand_ui4_1))); 543 s.set_max_rand_sl1_sl1(max(rand_sl1_0, rand_sl1_1)); 544 s.set_max_rand_sl2_sl2(pack_l2(max(rand_sl2_0, rand_sl2_1))); 545 s.set_max_rand_sl3_sl3(pack_l3(max(rand_sl3_0, rand_sl3_1))); 546 s.set_max_rand_sl4_sl4(pack_l4(max(rand_sl4_0, rand_sl4_1))); 547 s.set_max_rand_sc1_sc1(max(rand_sc1_0, rand_sc1_1)); 548 s.set_max_rand_sc2_sc2(pack_b2(max(rand_sc2_0, rand_sc2_1))); 549 s.set_max_rand_sc3_sc3(pack_b3(max(rand_sc3_0, rand_sc3_1))); 550 s.set_max_rand_sc4_sc4(pack_b4(max(rand_sc4_0, rand_sc4_1))); 551 552 // TODO: set results for unsigned long max 553 554 // Set results for fmin 555 s.set_fmin_rand_f1_f1(fmin(rand_f1_0, rand_f1_1)); 556 s.set_fmin_rand_f2_f2(pack_f2(fmin(rand_f2_0, rand_f2_1))); 557 s.set_fmin_rand_f3_f3(pack_f3(fmin(rand_f3_0, rand_f3_1))); 558 s.set_fmin_rand_f4_f4(pack_f4(fmin(rand_f4_0, rand_f4_1))); 559 s.set_fmin_rand_f2_f1(pack_f2(fmin(rand_f2_0, rand_f1_1))); 560 s.set_fmin_rand_f3_f1(pack_f3(fmin(rand_f3_0, rand_f1_1))); 561 s.set_fmin_rand_f4_f1(pack_f4(fmin(rand_f4_0, rand_f1_1))); 562 563 // Set results for fmax 564 s.set_fmax_rand_f1_f1(fmax(rand_f1_0, rand_f1_1)); 565 s.set_fmax_rand_f2_f2(pack_f2(fmax(rand_f2_0, rand_f2_1))); 566 s.set_fmax_rand_f3_f3(pack_f3(fmax(rand_f3_0, rand_f3_1))); 567 s.set_fmax_rand_f4_f4(pack_f4(fmax(rand_f4_0, rand_f4_1))); 568 s.set_fmax_rand_f2_f1(pack_f2(fmax(rand_f2_0, rand_f1_1))); 569 s.set_fmax_rand_f3_f1(pack_f3(fmax(rand_f3_0, rand_f1_1))); 570 s.set_fmax_rand_f4_f1(pack_f4(fmax(rand_f4_0, rand_f1_1))); 571 } 572 573 public void run() { 574 RenderScript pRS = createRenderScript(true); 575 ScriptC_math_agree s = new ScriptC_math_agree(pRS); 576 initializeValues(s); 577 s.invoke_math_agree_test(); 578 pRS.finish(); 579 s.destroy(); 580 pRS.destroy(); 581 } 582} 583