17d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang/*
27d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Copyright (C) 2015 The Android Open Source Project
37d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang *
47d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Licensed under the Apache License, Version 2.0 (the "License");
57d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * you may not use this file except in compliance with the License.
67d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * You may obtain a copy of the License at
77d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang *
87d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang *      http://www.apache.org/licenses/LICENSE-2.0
97d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang *
107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Unless required by applicable law or agreed to in writing, software
117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * distributed under the License is distributed on an "AS IS" BASIS,
127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * See the License for the specific language governing permissions and
147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * limitations under the License.
157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang */
167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangpackage com.android.rs.test_compat;
187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.content.Context;
207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.content.res.Resources;
217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.support.v8.renderscript.*;
227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport java.util.Random;
237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangpublic class UT_alloc_copyPadded extends UnitTest {
257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    private Resources mRes;
267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    protected UT_alloc_copyPadded(RSTestCore rstc, Resources res, Context ctx) {
287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        super(rstc, "Allocation CopyTo Padded", ctx);
297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        mRes = res;
307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void run() {
337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        RenderScript mRS = RenderScript.create(mCtx);
347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Byte3_1D(mRS);
367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Byte3_2D(mRS);
377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Byte3_3D(mRS);
387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Short3_1D(mRS);
407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Short3_2D(mRS);
417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Short3_3D(mRS);
427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Int3_1D(mRS);
447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Int3_2D(mRS);
457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Int3_3D(mRS);
467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Float3_1D(mRS);
487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Float3_2D(mRS);
497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Float3_3D(mRS);
507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Double3_1D(mRS);
527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Double3_2D(mRS);
537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Double3_3D(mRS);
547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Long3_1D(mRS);
567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Long3_2D(mRS);
577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_Long3_3D(mRS);
587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeTo_Byte3(mRS);
617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeTo_Short3(mRS);
627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeTo_Int3(mRS);
637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeTo_Float3(mRS);
647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeTo_Long3(mRS);
657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy2DRangeTo_Byte3(mRS);
677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy2DRangeTo_Short3(mRS);
687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy2DRangeTo_Int3(mRS);
697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy2DRangeTo_Float3(mRS);
707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy2DRangeTo_Long3(mRS);
717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeToUnchecked_Byte3(mRS);
737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeToUnchecked_Short3(mRS);
747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeToUnchecked_Int3(mRS);
757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeToUnchecked_Float3(mRS);
767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        testAllocation_copy1DRangeToUnchecked_Long3(mRS);
777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        mRS.destroy();
797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        passTest();
807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Byte3_1D(RenderScript mRS) {
837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
1007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
1017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
1027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
1037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
1047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
1057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
1077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Byte1D TEST PASSED");
1087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
1097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
1107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
1127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Byte3_2D(RenderScript mRS) {
1147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
1157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
1167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
1177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
1187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
1207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
1217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
1227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
1247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
1257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
1277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
1287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
1297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
1317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
1327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
1337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
1347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
1357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
1367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
1377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
1397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Byte2D TEST PASSED");
1407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
1417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
1427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
1447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Byte3_3D(RenderScript mRS) {
1467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
1477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
1487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
1497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
1507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
1517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
1537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
1547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
1557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
1577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
1587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
1607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
1617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
1627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
1647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
1657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
1667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
1677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
1687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
1697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
1707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
1727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Byte3D TEST PASSED");
1737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
1747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
1757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
1777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Short3_1D(RenderScript mRS) {
1797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
1807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
1817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
1827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
1847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
1857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
1877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
1887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
1897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
1917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
1927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
1947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
1957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
1967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
1977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
1987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
1997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
2007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
2017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
2027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
2037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
2047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
2067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Short1D TEST PASSED");
2077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
2087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
2097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
2117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Short3_2D(RenderScript mRS) {
2137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
2147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
2157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
2167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
2177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
2197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
2207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
2227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
2237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
2267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
2277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
2287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
2297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
2307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
2317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
2337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
2347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
2357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
2367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
2377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
2387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
2397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
2417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Short2D TEST PASSED");
2427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
2437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
2447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
2467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Short3_3D(RenderScript mRS) {
2487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
2497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
2507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
2517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
2527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
2537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
2557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
2567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
2587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
2597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
2627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
2637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
2647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
2657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
2667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
2677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
2697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
2707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
2717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
2727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
2737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
2747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
2757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
2777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Short3D TEST PASSED");
2787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
2797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
2807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
2827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Int3_1D(RenderScript mRS) {
2847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
2857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
2867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
2877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
2897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
2907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
2927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
2937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
2947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
2957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
2967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
2977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
2987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
2997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
3007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
3017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
3037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
3057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
3067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
3077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
3087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
3097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
3117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Int1D TEST PASSED");
3127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
3137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
3147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
3167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Int3_2D(RenderScript mRS) {
3187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
3197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
3207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
3217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
3227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
3247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
3257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
3287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
3317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
3327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
3337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
3347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
3357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
3367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
3387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
3407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
3417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
3427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
3437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
3447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
3467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Int2D TEST PASSED");
3477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
3487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
3497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
3517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Int3_3D(RenderScript mRS) {
3537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
3547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
3557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
3567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
3577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
3587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
3607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
3617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
3647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
3677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
3687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
3697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
3707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
3717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
3727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
3747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
3767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
3777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
3787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
3797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
3807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
3827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Int3D TEST PASSED");
3837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
3847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
3857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
3877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Float3_1D(RenderScript mRS) {
3897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
3907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
3917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
3927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
3947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
3957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
3967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
3977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
3987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
3997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
4017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
4027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
4037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
4047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
4057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
4067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
4087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
4097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
4107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
4117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
4127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
4137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
4147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
4167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Float1D TEST PASSED");
4177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
4187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
4197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
4217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Float3_2D(RenderScript mRS) {
4227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
4237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
4247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
4257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
4267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
4287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
4297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
4317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
4327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
4357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
4367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
4377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
4387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
4397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
4407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
4427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
4437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
4447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
4457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
4467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
4477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
4487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
4507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Float2D TEST PASSED");
4517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
4527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
4537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
4557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Float3_3D(RenderScript mRS) {
4567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
4577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
4587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
4597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
4607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
4617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
4637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
4647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
4667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
4677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
4707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
4717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
4727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
4737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
4747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
4757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
4777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
4787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
4797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
4807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
4817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
4827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
4837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
4857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Float3D TEST PASSED");
4867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
4877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
4887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
4897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
4907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Double3_1D(RenderScript mRS) {
4927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
4937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
4947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
4957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] inArray = new double[arr_len];
4977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] outArray = new double[arr_len];
4987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
4997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (double)random.nextFloat();
5017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
5047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
5057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
5077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
5087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
5097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
5117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
5137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
5147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
5157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
5167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
5177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
5197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Double1D TEST PASSED");
5207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
5217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
5227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
5247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Double3_2D(RenderScript mRS) {
5257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
5267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
5277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
5287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
5297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] inArray = new double[arr_len];
5317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] outArray = new double[arr_len];
5327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (double)random.nextFloat();
5357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
5387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
5397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
5417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
5427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
5437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
5457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
5477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
5487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
5497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
5507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
5517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
5537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Double2D TEST PASSED");
5547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
5557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
5567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
5587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Double3_3D(RenderScript mRS) {
5597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
5607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
5617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
5627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
5637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
5647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] inArray = new double[arr_len];
5667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        double[] outArray = new double[arr_len];
5677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (double)random.nextFloat();
5707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
5737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
5747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
5767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
5777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
5787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
5807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
5817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
5827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
5837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
5847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
5857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
5867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
5887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Double3D TEST PASSED");
5897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
5907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
5917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
5927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
5937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Long3_1D(RenderScript mRS) {
5957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
5967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
5977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
5987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
5997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
6007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
6017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
6047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
6077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
6087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
6097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
6107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
6117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
6127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
6147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
6167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
6177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
6187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
6197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
6207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
6227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Long1D TEST PASSED");
6237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
6247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
6257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
6277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Long3_2D(RenderScript mRS) {
6297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
6307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
6317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
6327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * height * 3;
6337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
6357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
6367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
6397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
6427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
6437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
6447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
6457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
6467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
6477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
6497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
6517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
6527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
6537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
6547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
6557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
6577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Long2D TEST PASSED");
6587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
6597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
6607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
6627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_Long3_3D(RenderScript mRS) {
6647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
6657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int w = random.nextInt(32);
6667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int h = random.nextInt(32);
6677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int d = random.nextInt(32);
6687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = w * d * h * 3;
6697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
6717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
6727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
6757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
6787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(w).setY(h).setZ(d);
6797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
6807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
6817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyFrom(inArray);
6827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copyTo(outArray);
6837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
6857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
6867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
6877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
6887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
6897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
6907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
6917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
6937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "Long3D TEST PASSED");
6947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
6957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
6967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
6977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
6987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
6997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeTo_Byte3(RenderScript mRS) {
7017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
7027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
7037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
7047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
7067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
7077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
7087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
7107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
7117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
7127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
7137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
7147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
7157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
7167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeTo(offset, count, outArray);
7177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
7197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
7207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
7217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
7227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
7237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
7247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
7257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
7277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
7287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
7297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
7307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
7317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
7327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
7347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Byte TEST PASSED");
7357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
7367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
7377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
7397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeTo_Short3(RenderScript mRS) {
7417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
7427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
7437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
7447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
7467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
7477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
7497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
7507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
7537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
7547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
7557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
7567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
7577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
7587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
7597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeTo(offset, count, outArray);
7607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
7627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
7637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
7647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
7657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
7667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
7677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
7687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
7707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
7717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
7727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
7737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
7747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
7757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
7777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Short TEST PASSED");
7787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
7797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
7807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
7827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeTo_Int3(RenderScript mRS) {
7847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
7857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
7867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
7877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
7897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
7907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
7927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
7937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
7947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
7957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
7967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
7977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
7987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
7997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
8007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
8017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
8027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeTo(offset, count, outArray);
8037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
8057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
8067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
8077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
8087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
8097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
8107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
8117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
8137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
8147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
8157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
8167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
8177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
8187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
8207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Int TEST PASSED");
8217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
8227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
8237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
8257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeTo_Float3(RenderScript mRS) {
8277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
8287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
8297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
8307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
8327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
8337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
8357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
8367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
8397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
8407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
8417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
8427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
8437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
8447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
8457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeTo(offset, count, outArray);
8467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
8487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
8497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
8507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
8517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
8527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
8537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
8547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
8567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0f) {
8577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
8587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
8597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
8607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
8617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
8637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Float TEST PASSED");
8647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
8657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
8667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
8687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeTo_Long3(RenderScript mRS) {
8707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
8717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
8727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
8737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
8757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
8767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
8787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
8797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
8827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
8837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
8847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
8857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
8867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
8877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
8887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeTo(offset, count, outArray);
8897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
8907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
8917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
8927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
8937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
8947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
8957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
8967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
8977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
8987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
8997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
9007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
9017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
9027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
9037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
9047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
9067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Long TEST PASSED");
9077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
9087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
9097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
9117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy2DRangeTo_Byte3(RenderScript mRS) {
9137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
9147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
9157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
9167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xoff = random.nextInt(width);
9177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int yoff = random.nextInt(height);
9187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xcount = width - xoff;
9197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int ycount = height - yoff;
9207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = xcount * ycount * 3;
9217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
9237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
9247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
9257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
9277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
9287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
9297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
9307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
9317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
9327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
9347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
9357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
9367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
9377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
9387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
9397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
9407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
9427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Byte TEST PASSED");
9437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
9447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
9457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
9477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy2DRangeTo_Short3(RenderScript mRS) {
9497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
9507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
9517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
9527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xoff = random.nextInt(width);
9537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int yoff = random.nextInt(height);
9547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xcount = width - xoff;
9557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int ycount = height - yoff;
9567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = xcount * ycount * 3;
9577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
9597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
9607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
9627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
9637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
9667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
9677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
9687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
9697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
9707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
9717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
9737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
9747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
9757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
9767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
9777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
9787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
9797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
9817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Short TEST PASSED");
9827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
9837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
9847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
9857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
9867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy2DRangeTo_Int3(RenderScript mRS) {
9887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
9897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
9907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
9917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xoff = random.nextInt(width);
9927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int yoff = random.nextInt(height);
9937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xcount = width - xoff;
9947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int ycount = height - yoff;
9957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = xcount * ycount * 3;
9967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
9977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
9987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
9997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
10027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
10057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
10067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
10077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
10087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
10097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
10107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
10127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
10147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
10157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
10167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
10177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
10187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
10207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Int TEST PASSED");
10217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
10227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
10237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
10257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy2DRangeTo_Float3(RenderScript mRS) {
10277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
10287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
10297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
10307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xoff = random.nextInt(width);
10317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int yoff = random.nextInt(height);
10327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xcount = width - xoff;
10337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int ycount = height - yoff;
10347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = xcount * ycount * 3;
10357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
10377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
10387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
10417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
10447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
10457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
10467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
10477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
10487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
10497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
10517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
10537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
10547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
10557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
10567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
10577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
10597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Float TEST PASSED");
10607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
10617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
10627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
10647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy2DRangeTo_Long3(RenderScript mRS) {
10667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
10677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(128);
10687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int height = random.nextInt(128);
10697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xoff = random.nextInt(width);
10707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int yoff = random.nextInt(height);
10717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int xcount = width - xoff;
10727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int ycount = height - yoff;
10737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = xcount * ycount * 3;
10747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
10767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
10777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
10807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
10837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width).setY(height);
10847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
10857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
10867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
10877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
10887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
10897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
10907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
10917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
10927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
10937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
10947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
10957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
10967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
10977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
10987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Long TEST PASSED");
10997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
11007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
11017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
11037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeToUnchecked_Byte3(RenderScript mRS) {
11067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
11077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
11087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
11097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] inArray = new byte[arr_len];
11117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        byte[] outArray = new byte[arr_len];
11127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        random.nextBytes(inArray);
11137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
11157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
11167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
11177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
11187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
11197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
11207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
11217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeToUnchecked(offset, count, outArray);
11227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
11247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
11257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
11267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
11277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
11287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
11297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
11307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
11327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
11337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
11347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
11357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
11367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
11377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
11397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Byte TEST PASSED");
11407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
11417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
11427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
11447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeToUnchecked_Short3(RenderScript mRS) {
11467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
11477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
11487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
11497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] inArray = new short[arr_len];
11517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        short[] outArray = new short[arr_len];
11527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
11547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = (short)random.nextInt();
11557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
11587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
11597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
11607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
11617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
11627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
11637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
11647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeToUnchecked(offset, count, outArray);
11657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
11677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
11687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
11697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
11707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
11717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
11727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
11737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
11757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
11767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
11777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
11787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
11797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
11807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
11827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Short TEST PASSED");
11837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
11847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
11857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
11877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeToUnchecked_Int3(RenderScript mRS) {
11897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
11907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
11917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
11927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] inArray = new int[arr_len];
11947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int[] outArray = new int[arr_len];
11957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
11967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
11977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextInt();
11987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
11997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
12017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
12027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
12037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
12047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
12057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
12067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
12077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeToUnchecked(offset, count, outArray);
12087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
12107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
12117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
12127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
12137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
12147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
12157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
12167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
12187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
12197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
12207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
12217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
12227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
12237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
12257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Int TEST PASSED");
12267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
12277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
12287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
12307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeToUnchecked_Float3(RenderScript mRS) {
12327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
12337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
12347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
12357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] inArray = new float[arr_len];
12377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        float[] outArray = new float[arr_len];
12387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
12407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextFloat();
12417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
12447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
12457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
12467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
12477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
12487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
12497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
12507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeToUnchecked(offset, count, outArray);
12517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
12537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
12547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
12557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
12567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
12577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
12587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
12597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
12617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0f) {
12627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
12637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
12647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
12657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
12667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
12687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Float TEST PASSED");
12697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
12707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
12717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
12737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    public void testAllocation_copy1DRangeToUnchecked_Long3(RenderScript mRS) {
12757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Random random = new Random(0x172d8ab9);
12767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int width = random.nextInt(512);
12777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int arr_len = width * 3;
12787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] inArray = new long[arr_len];
12807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        long[] outArray = new long[arr_len];
12817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < arr_len; i++) {
12837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            inArray[i] = random.nextLong();
12847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
12857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
12877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        typeBuilder.setX(width);
12887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
12897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.setAutoPadding(true);
12907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int offset = random.nextInt(width);
12917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        int count = width - offset;
12927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeFrom(offset, count, inArray);
12937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        alloc.copy1DRangeToUnchecked(offset, count, outArray);
12947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang
12957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        boolean result = true;
12967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = 0; i < count * 3; i++) {
12977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (inArray[i] != outArray[i]) {
12987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
12997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
13007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
13017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
13027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
13037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        for (int i = count * 3; i < arr_len; i++) {
13047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            if (outArray[i] != 0) {
13057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                result = false;
13067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
13077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang                break;
13087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            }
13097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
13107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        if (result) {
13117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Long TEST PASSED");
13127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        } else {
13137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang            failTest();
13147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang        }
13157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang    }
13167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang}
1317