198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/*
298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Copyright (C) 2012 The Android Open Source Project
398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * you may not use this file except in compliance with the License.
698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * You may obtain a copy of the License at
798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
1098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Unless required by applicable law or agreed to in writing, software
1198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * See the License for the specific language governing permissions and
1498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * limitations under the License.
1598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */
1698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
1798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspackage android.support.v8.renderscript;
1898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
190f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hinesimport android.support.v8.renderscript.RenderScript;
2098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/**
2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Utility class for packing arguments and structures from Android system objects to
237d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * RenderScript objects.
247d435ae5ba100be5710b685653cc351cab159c11Stephen Hines *
257d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * This class is only intended to be used to support the
267d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * reflected code generated by the RS tool chain.  It should not
277d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * be called directly.
2898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
2998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/
3098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class FieldPacker {
31eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray    private FieldPackerThunker mN;
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
3398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public FieldPacker(int len) {
3498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
3598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mLen = len;
3698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData = new byte[len];
370f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
38eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN = new FieldPackerThunker(len);
39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
4198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
4298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void align(int v) {
430f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.align(v);
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v <= 0) || ((v & (v - 1)) != 0)) {
4898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
4998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        while ((mPos & (v - 1)) != 0) {
5298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            mData[mPos++] = 0;
5398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
5598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset() {
570f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset();
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
6298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
6398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset(int i) {
640f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset(i);
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((i < 0) || (i >= mLen)) {
6998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
7098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
7198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = i;
7298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
7398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
7498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void skip(int i) {
750f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.skip(i);
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
7998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        int res = mPos + i;
8098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((res < 0) || (res > mLen)) {
8198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
8298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
8398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = res;
8498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
8598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
8698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(byte v) {
870f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(v);
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
9198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = v;
9298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
9398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
9498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(short v) {
950f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
96ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(v);
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
9998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
10098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
10198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
10298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
10398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
10498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(int v) {
1050f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(v);
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
10998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
11098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
11198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
11298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
11398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
11498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
11598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
11698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(long v) {
1170f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
118ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(v);
119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
12198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(short v) {
1330f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
134ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(v);
135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
13798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xff)) {
13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)v;
14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(int v) {
1440f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
145ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(v);
146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
147ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
14898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffff)) {
14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(long v) {
1580f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
159ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(v);
160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
16298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffffffffL)) {
16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(long v) {
1740f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
175ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(v);
176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
17898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (v < 0) {
17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(float v) {
1940f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
195ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(v);
196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
197ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
19898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(Float.floatToRawIntBits(v));
19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(double v) {
2020f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
203ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(v);
204ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
205ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
20698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(Double.doubleToRawLongBits(v));
20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addObj(BaseObj obj) {
2100f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
211eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addObj(obj);
212ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
213ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
21498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (obj != null) {
21598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(obj.getID(null));
21698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        } else {
21798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(0);
21898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float2 v) {
2220f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
223eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
224ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
225ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
22698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
22798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
22898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
22998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float3 v) {
2300f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
231eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
232ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
233ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
23498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
23598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
23698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
23798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
23898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float4 v) {
2390f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
240eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
241ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
242ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
24398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
24498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
24598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
24698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.w);
24798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double2 v) {
2500f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
251eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
252ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
253ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
25498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
25598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
25698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
25798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double3 v) {
2580f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
259eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
260ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
261ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
26298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
26398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
26498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
26598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
26698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double4 v) {
2670f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
268eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
269ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
270ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
27198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
27298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
27398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
27498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.w);
27598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
27698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
27798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte2 v) {
2780f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
279eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
280ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
281ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
28298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
28398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
28498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
28598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte3 v) {
2860f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
287eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
288ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
289ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
29098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
29198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
29298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
29398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
29498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte4 v) {
2950f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
296eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
297ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
298ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
29998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
30098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
30198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
30298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.w);
30398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
30498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
30598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short2 v) {
3060f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
307eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
308ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
309ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
31098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
31198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
31298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
31398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short3 v) {
3140f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
315eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
316ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
317ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
31898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
31998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
32098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
32198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
32298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short4 v) {
3230f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
324eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
325ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
326ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
32798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
32898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
32998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
33098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.w);
33198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
33298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
33398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short2 v) {
3340f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
335eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
336ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
337ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
33898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
33998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
34098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
34198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short3 v) {
3420f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
343eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
344ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
345ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
34698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
34798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
34898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
34998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
35098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short4 v) {
3510f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
352eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
353ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
354ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
35598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
35698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
35798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
35898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.w);
35998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
36098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
36198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int2 v) {
3620f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
363eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
364ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
365ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
36698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
36798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
36898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
36998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int3 v) {
3700f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
371eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
372ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
373ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
37498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
37598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
37698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
37798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
37898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int4 v) {
3790f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
380eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
381ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
382ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
38398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
38498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
38598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
38698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.w);
38798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
38898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
38998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int2 v) {
3900f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
391eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
392ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
393ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
39498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
39598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
39698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
39798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int3 v) {
3980f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
399eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
400ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
401ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
40298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
40398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
40498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
40598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
40698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int4 v) {
4070f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
408eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
409ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
410ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
41198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
41298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
41398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
41498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.w);
41598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
41698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
41798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long2 v) {
4180f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
419eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
420ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
421ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
42298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
42398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
42498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
42598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long3 v) {
4260f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
427eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
428ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
429ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
43098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
43198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
43298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
43398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
43498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long4 v) {
4350f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
436eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
437ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
438ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
43998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
44098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
44198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
44298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.w);
44398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
44498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
44598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long2 v) {
4460f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
447eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
448ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
449ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
45098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
45198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
45298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
45398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long3 v) {
4540f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
455eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
456ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
457ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
45898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
45998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
46098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
46198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
46298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long4 v) {
4630f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
464eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
465ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
466ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
46798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
46898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
46998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
47098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.w);
47198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
47298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
47398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long2 v) {
4740f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
475eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
476ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
477ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
47898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
47998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
48098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
48198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long3 v) {
4820f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
483eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
484ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
485ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
48698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
48798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
48898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
48998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
49098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long4 v) {
4910f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
492eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
493ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
494ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
49598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
49698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
49798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
49898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.w);
49998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
50098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
50198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix4f v) {
5020f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
503eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
504ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
505ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
50698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
50798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
50898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
50998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
51098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
51198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix3f v) {
5120f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
513eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
514ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
515ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
51698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
51798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
51898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
51998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
52098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
52198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix2f v) {
5220f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
523eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
524ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
525ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
52698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
52798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
52898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
52998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
53098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
53198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addBoolean(boolean v) {
5320f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
533ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addBoolean(v);
534ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
535ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
53698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8((byte)(v ? 1 : 0));
53798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
53898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
53998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public final byte[] getData() {
5400f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
541ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return mN.getData();
542ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
54398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        return mData;
54498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
54598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
54695730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines    public int getPos() {
54795730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines        if (RenderScript.shouldThunk()) {
54895730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            return mN.getPos();
54995730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines        }
55095730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines        return mPos;
55195730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines    }
55295730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines
55398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private final byte mData[];
55498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mPos;
55598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mLen;
55698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams}
55898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
560