FieldPacker.java revision 908f238ae73283a7f3d49ddf7a562ccbd1a9ac44
145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/*
245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Copyright (C) 2012 The Android Open Source Project
345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * you may not use this file except in compliance with the License.
645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * You may obtain a copy of the License at
745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
1045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Unless required by applicable law or agreed to in writing, software
1145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * See the License for the specific language governing permissions and
1445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * limitations under the License.
1545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */
1645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
1745d443665f5ce7efa934706a89883f0cc87f3513Jason Samspackage android.support.v8.renderscript;
1845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
196a2a5e0e083881c7a7b78892c03b49eece99d9fcTim Murrayimport android.os.SystemProperties;
20257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hinesimport android.support.v8.renderscript.RenderScript;
2145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
2245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/**
2345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Utility class for packing arguments and structures from Android system objects to
24032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * RenderScript objects.
25032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines *
26032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * This class is only intended to be used to support the
27032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * reflected code generated by the RS tool chain.  It should not
28032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * be called directly.
2945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
3045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams **/
3145d443665f5ce7efa934706a89883f0cc87f3513Jason Samspublic class FieldPacker {
329cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray    private FieldPackerThunker mN;
33baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray
3445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public FieldPacker(int len) {
3545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = 0;
3645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mLen = len;
3745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData = new byte[len];
38257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
399cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN = new FieldPackerThunker(len);
40baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
4145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
4245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
4345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void align(int v) {
44257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
45baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.align(v);
46baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
47baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
4845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v <= 0) || ((v & (v - 1)) != 0)) {
4945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
5045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
5145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
5245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        while ((mPos & (v - 1)) != 0) {
5345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            mData[mPos++] = 0;
5445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
5545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
5645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
5745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void reset() {
58257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
59baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.reset();
60baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
61baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
6245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = 0;
6345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
6445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void reset(int i) {
65257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
66baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.reset(i);
67baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
68baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
6945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((i < 0) || (i >= mLen)) {
7045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
7145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
7245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = i;
7345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
7445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
7545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void skip(int i) {
76257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
77baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.skip(i);
78baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
79baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
8045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        int res = mPos + i;
8145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((res < 0) || (res > mLen)) {
8245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
8345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
8445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = res;
8545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
8645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
8745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(byte v) {
88257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
89baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI8(v);
90baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
91baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
9245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = v;
9345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
9445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
9545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(short v) {
96257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
97baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI16(v);
98baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
99baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
10045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(2);
10145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
10245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v >> 8);
10345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
10445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
10545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(int v) {
106257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
107baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI32(v);
108baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
109baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
11045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(4);
11145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
11245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
11345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
11445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
11545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
11645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
11745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(long v) {
118257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
119baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI64(v);
120baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
121baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
12245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(8);
12345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
12445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
12545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
12645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
12745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
12845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
12945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
13045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
13145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
13245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
13345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(short v) {
134257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
135baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU8(v);
136baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
137baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
13845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xff)) {
13945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
14045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
14145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)v;
14245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
14345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
14445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(int v) {
145257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
146baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU16(v);
147baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
148baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
14945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xffff)) {
15045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
15145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
15245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
15345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(2);
15445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
15545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v >> 8);
15645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
15745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
15845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(long v) {
159257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
160baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU32(v);
161baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
162baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
16345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xffffffffL)) {
16445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
16545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
16645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
16745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(4);
16845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
16945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
17045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
17145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
17245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
17345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
17445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(long v) {
175257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
176baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU64(v);
177baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
178baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
17945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if (v < 0) {
18045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
18145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
18245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
18345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(8);
18445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
18545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
18645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
18745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
18845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
18945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
19045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
19145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
19245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
19345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
19445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(float v) {
195257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
196baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF32(v);
197baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
198baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
19945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(Float.floatToRawIntBits(v));
20045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
20145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
20245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(double v) {
203257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
204baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF64(v);
205baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
206baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
20745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(Double.doubleToRawLongBits(v));
20845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
20945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
21045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addObj(BaseObj obj) {
211257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2129cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addObj(obj);
213baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
214baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
21545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if (obj != null) {
21645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addI32(obj.getID(null));
21745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        } else {
21845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addI32(0);
21945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
22045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
22145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
22245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float2 v) {
223257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2249cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF32(v);
225baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
226baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
22745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
22845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
22945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
23045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float3 v) {
231257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2329cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF32(v);
233baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
234baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
23545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
23645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
23745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.z);
23845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
23945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float4 v) {
240257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2419cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF32(v);
242baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
243baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
24445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
24545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
24645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.z);
24745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.w);
24845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
24945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
25045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double2 v) {
251257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2529cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF64(v);
253baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
254baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
25545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
25645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
25745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
25845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double3 v) {
259257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2609cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF64(v);
261baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
262baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
26345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
26445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
26545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.z);
26645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
26745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double4 v) {
268257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2699cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addF64(v);
270baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
271baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
27245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
27345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
27445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.z);
27545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.w);
27645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
27745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
27845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte2 v) {
279257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2809cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI8(v);
281baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
282baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
28345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
28445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
28545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
28645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte3 v) {
287257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2889cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI8(v);
289baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
290baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
29145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
29245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
29345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.z);
29445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
29545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte4 v) {
296257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
2979cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI8(v);
298baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
299baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
30045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
30145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
30245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.z);
30345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.w);
30445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
30545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
30645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short2 v) {
307257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3089cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU8(v);
309baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
310baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
31145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
31245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
31345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
31445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short3 v) {
315257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3169cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU8(v);
317baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
318baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
31945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
32045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
32145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.z);
32245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
32345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short4 v) {
324257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3259cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU8(v);
326baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
327baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
32845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
32945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
33045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.z);
33145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.w);
33245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
33345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
33445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short2 v) {
335257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3369cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI16(v);
337baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
338baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
33945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
34045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
34145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
34245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short3 v) {
343257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3449cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI16(v);
345baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
346baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
34745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
34845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
34945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.z);
35045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
35145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short4 v) {
352257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3539cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI16(v);
354baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
355baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
35645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
35745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
35845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.z);
35945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.w);
36045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
36145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
36245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int2 v) {
363257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3649cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU16(v);
365baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
366baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
36745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
36845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
36945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
37045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int3 v) {
371257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3729cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU16(v);
373baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
374baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
37545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
37645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
37745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.z);
37845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
37945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int4 v) {
380257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3819cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU16(v);
382baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
383baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
38445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
38545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
38645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.z);
38745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.w);
38845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
38945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
39045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int2 v) {
391257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
3929cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI32(v);
393baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
394baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
39545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
39645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
39745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
39845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int3 v) {
399257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4009cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI32(v);
401baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
402baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
40345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
40445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
40545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.z);
40645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
40745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int4 v) {
408257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4099cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI32(v);
410baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
411baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
41245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
41345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
41445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.z);
41545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.w);
41645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
41745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
41845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long2 v) {
419257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4209cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU32(v);
421baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
422baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
42345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
42445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
42545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
42645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long3 v) {
427257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4289cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU32(v);
429baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
430baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
43145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
43245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
43345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.z);
43445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
43545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long4 v) {
436257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4379cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU32(v);
438baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
439baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
44045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
44145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
44245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.z);
44345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.w);
44445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
44545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
44645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long2 v) {
447257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4489cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI64(v);
449baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
450baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
45145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
45245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
45345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
45445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long3 v) {
455257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4569cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI64(v);
457baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
458baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
45945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
46045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
46145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.z);
46245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
46345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long4 v) {
464257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4659cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addI64(v);
466baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
467baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
46845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
46945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
47045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.z);
47145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.w);
47245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
47345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
47445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long2 v) {
475257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4769cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU64(v);
477baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
478baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
47945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
48045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
48145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
48245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long3 v) {
483257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4849cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU64(v);
485baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
486baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
48745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
48845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
48945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.z);
49045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
49145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long4 v) {
492257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
4939cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addU64(v);
494baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
495baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
49645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
49745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
49845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.z);
49945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.w);
50045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
50145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
50245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix4f v) {
503257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
5049cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addMatrix(v);
505baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
506baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
50745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
50845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
50945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
51045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
51145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
51245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix3f v) {
513257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
5149cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addMatrix(v);
515baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
516baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
51745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
51845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
51945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
52045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
52145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
52245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix2f v) {
523257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
5249cc2e8df196039de183aa1e1cc0ff443b474154dTim Murray            mN.addMatrix(v);
525baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
526baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
52745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
52845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
52945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
53045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
53145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
53245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addBoolean(boolean v) {
533257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
534baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addBoolean(v);
535baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
536baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
53745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8((byte)(v ? 1 : 0));
53845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
53945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
54045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public final byte[] getData() {
541257cecb5e24c9af71ba4d621887e88e46b0ac411Stephen Hines        if (RenderScript.shouldThunk()) {
542baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return mN.getData();
543baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
54445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        return mData;
54545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
54645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
547908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines    public int getPos() {
548908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines        if (RenderScript.shouldThunk()) {
549908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines            return mN.getPos();
550908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines        }
551908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines        return mPos;
552908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines    }
553908f238ae73283a7f3d49ddf7a562ccbd1a9ac44Stephen Hines
55445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private final byte mData[];
55545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private int mPos;
55645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private int mLen;
55745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
55845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams}
55945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
56045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
561