/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "shared.rsh"

uint32_t x;
uint32_t y;
uint32_t z;

rs_element elemNull;
rs_element elemNonNull;
rs_type typeNull;
rs_type typeNonNull;
rs_allocation allocNull;
rs_allocation allocNonNull;
rs_sampler samplerNull;
rs_sampler samplerNonNull;
rs_script scriptNull;
rs_script scriptNonNull;

volatile rs_data_type dt;
volatile rs_data_kind dk;

volatile rs_sampler_value rsv;

volatile static rs_time_t rst;
volatile static rs_tm rstm;

char *allocPtr;
rs_allocation allocDst;

volatile bool b;
volatile char c;
volatile char2 c2;
volatile char3 c3;
volatile char4 c4;
volatile uchar uc;
volatile uchar2 uc2;
volatile uchar3 uc3;
volatile uchar4 uc4;
volatile short s;
volatile short2 s2;
volatile short3 s3;
volatile short4 s4;
volatile ushort us;
volatile ushort2 us2;
volatile ushort3 us3;
volatile ushort4 us4;
volatile int i;
volatile int2 i2;
volatile int3 i3;
volatile int4 i4;
volatile uint ui;
volatile uint2 ui2;
volatile uint3 ui3;
volatile uint4 ui4;
volatile long l;
volatile long2 l2;
volatile long3 l3;
volatile long4 l4;
volatile ulong ul;
volatile ulong2 ul2;
volatile ulong3 ul3;
volatile ulong4 ul4;
volatile long long ll;
volatile unsigned long long ull;
volatile float f;
volatile float2 f2;
volatile float3 f3;
volatile float4 f4;
volatile double d;
volatile double2 d2;
volatile double3 d3;
volatile double4 d4;
float fa[16];

rs_allocation aChar;
rs_allocation aChar2;
rs_allocation aChar3;
rs_allocation aChar4;
rs_allocation aUChar;
rs_allocation aUChar2;
rs_allocation aUChar3;
rs_allocation aUChar4;
rs_allocation aShort;
rs_allocation aShort2;
rs_allocation aShort3;
rs_allocation aShort4;
rs_allocation aUShort;
rs_allocation aUShort2;
rs_allocation aUShort3;
rs_allocation aUShort4;
rs_allocation aInt;
rs_allocation aInt2;
rs_allocation aInt3;
rs_allocation aInt4;
rs_allocation aUInt;
rs_allocation aUInt2;
rs_allocation aUInt3;
rs_allocation aUInt4;
rs_allocation aLong;
rs_allocation aLong2;
rs_allocation aLong3;
rs_allocation aLong4;
rs_allocation aULong;
rs_allocation aULong2;
rs_allocation aULong3;
rs_allocation aULong4;
rs_allocation aFloat;
rs_allocation aFloat2;
rs_allocation aFloat3;
rs_allocation aFloat4;
rs_allocation aDouble;
rs_allocation aDouble2;
rs_allocation aDouble3;
rs_allocation aDouble4;

rs_matrix2x2 m2x2;
rs_matrix3x3 m3x3;
rs_matrix4x4 m4x4;

int RS_KERNEL testKernel(int v) { return v; }

// This function just checks that all of the called functions are
// able to be linked. It is not intended to be executed!
void check_api_presence() {
    /********************************
     * DO NOT EXECUTE THIS FUNCTION *
     ********************************/
    rsSendToClientBlocking(RS_MSG_TEST_FAILED);

    // rs_allocation.rsh
    c = rsGetElementAt_char(aChar, 0);
    rsSetElementAt_char(aChar, c, 0);
    c = rsGetElementAt_char(aChar, 0, 0);
    rsSetElementAt_char(aChar, c, 0, 0);
    c = rsGetElementAt_char(aChar, 0, 0, 0);
    rsSetElementAt_char(aChar, c, 0, 0, 0);
    c2 = rsGetElementAt_char2(aChar2, 0);
    rsSetElementAt_char2(aChar2, c2, 0);
    c2 = rsGetElementAt_char2(aChar2, 0, 0);
    rsSetElementAt_char2(aChar2, c2, 0, 0);
    c2 = rsGetElementAt_char2(aChar2, 0, 0, 0);
    rsSetElementAt_char2(aChar2, c2, 0, 0, 0);
    c3 = rsGetElementAt_char3(aChar3, 0);
    rsSetElementAt_char3(aChar3, c3, 0);
    c3 = rsGetElementAt_char3(aChar3, 0, 0);
    rsSetElementAt_char3(aChar3, c3, 0, 0);
    c3 = rsGetElementAt_char3(aChar3, 0, 0, 0);
    rsSetElementAt_char3(aChar3, c3, 0, 0, 0);
    c4 = rsGetElementAt_char4(aChar4, 0);
    rsSetElementAt_char4(aChar4, c4, 0);
    c4 = rsGetElementAt_char4(aChar4, 0, 0);
    rsSetElementAt_char4(aChar4, c4, 0, 0);
    c4 = rsGetElementAt_char4(aChar4, 0, 0, 0);
    rsSetElementAt_char4(aChar4, c4, 0, 0, 0);

    uc = rsGetElementAt_uchar(aUChar, 0);
    rsSetElementAt_uchar(aUChar, uc, 0);
    uc = rsGetElementAt_uchar(aUChar, 0, 0);
    rsSetElementAt_uchar(aUChar, uc, 0, 0);
    uc = rsGetElementAt_uchar(aUChar, 0, 0, 0);
    rsSetElementAt_uchar(aUChar, uc, 0, 0, 0);
    uc2 = rsGetElementAt_uchar2(aUChar2, 0);
    rsSetElementAt_uchar2(aUChar2, uc2, 0);
    uc2 = rsGetElementAt_uchar2(aUChar2, 0, 0);
    rsSetElementAt_uchar2(aUChar2, uc2, 0, 0);
    uc2 = rsGetElementAt_uchar2(aUChar2, 0, 0, 0);
    rsSetElementAt_uchar2(aUChar2, uc2, 0, 0, 0);
    uc3 = rsGetElementAt_uchar3(aUChar3, 0);
    rsSetElementAt_uchar3(aUChar3, uc3, 0);
    uc3 = rsGetElementAt_uchar3(aUChar3, 0, 0);
    rsSetElementAt_uchar3(aUChar3, uc3, 0, 0);
    uc3 = rsGetElementAt_uchar3(aUChar3, 0, 0, 0);
    rsSetElementAt_uchar3(aUChar3, uc3, 0, 0, 0);
    uc4 = rsGetElementAt_uchar4(aUChar4, 0);
    rsSetElementAt_uchar4(aUChar4, uc4, 0);
    uc4 = rsGetElementAt_uchar4(aUChar4, 0, 0);
    rsSetElementAt_uchar4(aUChar4, uc4, 0, 0);
    uc4 = rsGetElementAt_uchar4(aUChar4, 0, 0, 0);
    rsSetElementAt_uchar4(aUChar4, uc4, 0, 0, 0);

    s = rsGetElementAt_short(aShort, 0);
    rsSetElementAt_short(aShort, s, 0);
    s = rsGetElementAt_short(aShort, 0, 0);
    rsSetElementAt_short(aShort, s, 0, 0);
    s = rsGetElementAt_short(aShort, 0, 0, 0);
    rsSetElementAt_short(aShort, s, 0, 0, 0);
    s2 = rsGetElementAt_short2(aShort2, 0);
    rsSetElementAt_short2(aShort2, s2, 0);
    s2 = rsGetElementAt_short2(aShort2, 0, 0);
    rsSetElementAt_short2(aShort2, s2, 0, 0);
    s2 = rsGetElementAt_short2(aShort2, 0, 0, 0);
    rsSetElementAt_short2(aShort2, s2, 0, 0, 0);
    s3 = rsGetElementAt_short3(aShort3, 0);
    rsSetElementAt_short3(aShort3, s3, 0);
    s3 = rsGetElementAt_short3(aShort3, 0, 0);
    rsSetElementAt_short3(aShort3, s3, 0, 0);
    s3 = rsGetElementAt_short3(aShort3, 0, 0, 0);
    rsSetElementAt_short3(aShort3, s3, 0, 0, 0);
    s4 = rsGetElementAt_short4(aShort4, 0);
    rsSetElementAt_short4(aShort4, s4, 0);
    s4 = rsGetElementAt_short4(aShort4, 0, 0);
    rsSetElementAt_short4(aShort4, s4, 0, 0);
    s4 = rsGetElementAt_short4(aShort4, 0, 0, 0);
    rsSetElementAt_short4(aShort4, s4, 0, 0, 0);

    us = rsGetElementAt_ushort(aUShort, 0);
    rsSetElementAt_ushort(aUShort, us, 0);
    us = rsGetElementAt_ushort(aUShort, 0, 0);
    rsSetElementAt_ushort(aUShort, us, 0, 0);
    us = rsGetElementAt_ushort(aUShort, 0, 0, 0);
    rsSetElementAt_ushort(aUShort, us, 0, 0, 0);
    us2 = rsGetElementAt_ushort2(aUShort2, 0);
    rsSetElementAt_ushort2(aUShort2, us2, 0);
    us2 = rsGetElementAt_ushort2(aUShort2, 0, 0);
    rsSetElementAt_ushort2(aUShort2, us2, 0, 0);
    us2 = rsGetElementAt_ushort2(aUShort2, 0, 0, 0);
    rsSetElementAt_ushort2(aUShort2, us2, 0, 0, 0);
    us3 = rsGetElementAt_ushort3(aUShort3, 0);
    rsSetElementAt_ushort3(aUShort3, us3, 0);
    us3 = rsGetElementAt_ushort3(aUShort3, 0, 0);
    rsSetElementAt_ushort3(aUShort3, us3, 0, 0);
    us3 = rsGetElementAt_ushort3(aUShort3, 0, 0, 0);
    rsSetElementAt_ushort3(aUShort3, us3, 0, 0, 0);
    us4 = rsGetElementAt_ushort4(aUShort4, 0);
    rsSetElementAt_ushort4(aUShort4, us4, 0);
    us4 = rsGetElementAt_ushort4(aUShort4, 0, 0);
    rsSetElementAt_ushort4(aUShort4, us4, 0, 0);
    us4 = rsGetElementAt_ushort4(aUShort4, 0, 0, 0);
    rsSetElementAt_ushort4(aUShort4, us4, 0, 0, 0);

    i = rsGetElementAt_int(aInt, 0);
    rsSetElementAt_int(aInt, i, 0);
    i = rsGetElementAt_int(aInt, 0, 0);
    rsSetElementAt_int(aInt, i, 0, 0);
    i = rsGetElementAt_int(aInt, 0, 0, 0);
    rsSetElementAt_int(aInt, i, 0, 0, 0);
    i2 = rsGetElementAt_int2(aInt2, 0);
    rsSetElementAt_int2(aInt2, i2, 0);
    i2 = rsGetElementAt_int2(aInt2, 0, 0);
    rsSetElementAt_int2(aInt2, i2, 0, 0);
    i2 = rsGetElementAt_int2(aInt2, 0, 0, 0);
    rsSetElementAt_int2(aInt2, i2, 0, 0, 0);
    i3 = rsGetElementAt_int3(aInt3, 0);
    rsSetElementAt_int3(aInt3, i3, 0);
    i3 = rsGetElementAt_int3(aInt3, 0, 0);
    rsSetElementAt_int3(aInt3, i3, 0, 0);
    i3 = rsGetElementAt_int3(aInt3, 0, 0, 0);
    rsSetElementAt_int3(aInt3, i3, 0, 0, 0);
    i4 = rsGetElementAt_int4(aInt4, 0);
    rsSetElementAt_int4(aInt4, i4, 0);
    i4 = rsGetElementAt_int4(aInt4, 0, 0);
    rsSetElementAt_int4(aInt4, i4, 0, 0);
    i4 = rsGetElementAt_int4(aInt4, 0, 0, 0);
    rsSetElementAt_int4(aInt4, i4, 0, 0, 0);

    ui = rsGetElementAt_uint(aUInt, 0);
    rsSetElementAt_uint(aUInt, ui, 0);
    ui = rsGetElementAt_uint(aUInt, 0, 0);
    rsSetElementAt_uint(aUInt, ui, 0, 0);
    ui = rsGetElementAt_uint(aUInt, 0, 0, 0);
    rsSetElementAt_uint(aUInt, ui, 0, 0, 0);
    ui2 = rsGetElementAt_uint2(aUInt2, 0);
    rsSetElementAt_uint2(aUInt2, ui2, 0);
    ui2 = rsGetElementAt_uint2(aUInt2, 0, 0);
    rsSetElementAt_uint2(aUInt2, ui2, 0, 0);
    ui2 = rsGetElementAt_uint2(aUInt2, 0, 0, 0);
    rsSetElementAt_uint2(aUInt2, ui2, 0, 0, 0);
    ui3 = rsGetElementAt_uint3(aUInt3, 0);
    rsSetElementAt_uint3(aUInt3, ui3, 0);
    ui3 = rsGetElementAt_uint3(aUInt3, 0, 0);
    rsSetElementAt_uint3(aUInt3, ui3, 0, 0);
    ui3 = rsGetElementAt_uint3(aUInt3, 0, 0, 0);
    rsSetElementAt_uint3(aUInt3, ui3, 0, 0, 0);
    ui4 = rsGetElementAt_uint4(aUInt4, 0);
    rsSetElementAt_uint4(aUInt4, ui4, 0);
    ui4 = rsGetElementAt_uint4(aUInt4, 0, 0);
    rsSetElementAt_uint4(aUInt4, ui4, 0, 0);
    ui4 = rsGetElementAt_uint4(aUInt4, 0, 0, 0);
    rsSetElementAt_uint4(aUInt4, ui4, 0, 0, 0);

    l = rsGetElementAt_long(aLong, 0);
    rsSetElementAt_long(aLong, l, 0);
    l = rsGetElementAt_long(aLong, 0, 0);
    rsSetElementAt_long(aLong, l, 0, 0);
    l = rsGetElementAt_long(aLong, 0, 0, 0);
    rsSetElementAt_long(aLong, l, 0, 0, 0);
    l2 = rsGetElementAt_long2(aLong2, 0);
    rsSetElementAt_long2(aLong2, l2, 0);
    l2 = rsGetElementAt_long2(aLong2, 0, 0);
    rsSetElementAt_long2(aLong2, l2, 0, 0);
    l2 = rsGetElementAt_long2(aLong2, 0, 0, 0);
    rsSetElementAt_long2(aLong2, l2, 0, 0, 0);
    l3 = rsGetElementAt_long3(aLong3, 0);
    rsSetElementAt_long3(aLong3, l3, 0);
    l3 = rsGetElementAt_long3(aLong3, 0, 0);
    rsSetElementAt_long3(aLong3, l3, 0, 0);
    l3 = rsGetElementAt_long3(aLong3, 0, 0, 0);
    rsSetElementAt_long3(aLong3, l3, 0, 0, 0);
    l4 = rsGetElementAt_long4(aLong4, 0);
    rsSetElementAt_long4(aLong4, l4, 0);
    l4 = rsGetElementAt_long4(aLong4, 0, 0);
    rsSetElementAt_long4(aLong4, l4, 0, 0);
    l4 = rsGetElementAt_long4(aLong4, 0, 0, 0);
    rsSetElementAt_long4(aLong4, l4, 0, 0, 0);

    ul = rsGetElementAt_ulong(aULong, 0);
    rsSetElementAt_ulong(aULong, ul, 0);
    ul = rsGetElementAt_ulong(aULong, 0, 0);
    rsSetElementAt_ulong(aULong, ul, 0, 0);
    ul = rsGetElementAt_ulong(aULong, 0, 0, 0);
    rsSetElementAt_ulong(aULong, ul, 0, 0, 0);
    ul2 = rsGetElementAt_ulong2(aULong2, 0);
    rsSetElementAt_ulong2(aULong2, ul2, 0);
    ul2 = rsGetElementAt_ulong2(aULong2, 0, 0);
    rsSetElementAt_ulong2(aULong2, ul2, 0, 0);
    ul2 = rsGetElementAt_ulong2(aULong2, 0, 0, 0);
    rsSetElementAt_ulong2(aULong2, ul2, 0, 0, 0);
    ul3 = rsGetElementAt_ulong3(aULong3, 0);
    rsSetElementAt_ulong3(aULong3, ul3, 0);
    ul3 = rsGetElementAt_ulong3(aULong3, 0, 0);
    rsSetElementAt_ulong3(aULong3, ul3, 0, 0);
    ul3 = rsGetElementAt_ulong3(aULong3, 0, 0, 0);
    rsSetElementAt_ulong3(aULong3, ul3, 0, 0, 0);
    ul4 = rsGetElementAt_ulong4(aULong4, 0);
    rsSetElementAt_ulong4(aULong4, ul4, 0);
    ul4 = rsGetElementAt_ulong4(aULong4, 0, 0);
    rsSetElementAt_ulong4(aULong4, ul4, 0, 0);
    ul4 = rsGetElementAt_ulong4(aULong4, 0, 0, 0);
    rsSetElementAt_ulong4(aULong4, ul4, 0, 0, 0);

    f = rsGetElementAt_float(aFloat, 0);
    rsSetElementAt_float(aFloat, f, 0);
    f = rsGetElementAt_float(aFloat, 0, 0);
    rsSetElementAt_float(aFloat, f, 0, 0);
    f = rsGetElementAt_float(aFloat, 0, 0, 0);
    rsSetElementAt_float(aFloat, f, 0, 0, 0);
    f2 = rsGetElementAt_float2(aFloat2, 0);
    rsSetElementAt_float2(aFloat2, f2, 0);
    f2 = rsGetElementAt_float2(aFloat2, 0, 0);
    rsSetElementAt_float2(aFloat2, f2, 0, 0);
    f2 = rsGetElementAt_float2(aFloat2, 0, 0, 0);
    rsSetElementAt_float2(aFloat2, f2, 0, 0, 0);
    f3 = rsGetElementAt_float3(aFloat3, 0);
    rsSetElementAt_float3(aFloat3, f3, 0);
    f3 = rsGetElementAt_float3(aFloat3, 0, 0);
    rsSetElementAt_float3(aFloat3, f3, 0, 0);
    f3 = rsGetElementAt_float3(aFloat3, 0, 0, 0);
    rsSetElementAt_float3(aFloat3, f3, 0, 0, 0);
    f4 = rsGetElementAt_float4(aFloat4, 0);
    rsSetElementAt_float4(aFloat4, f4, 0);
    f4 = rsGetElementAt_float4(aFloat4, 0, 0);
    rsSetElementAt_float4(aFloat4, f4, 0, 0);
    f4 = rsGetElementAt_float4(aFloat4, 0, 0, 0);
    rsSetElementAt_float4(aFloat4, f4, 0, 0, 0);

    d = rsGetElementAt_double(aDouble, 0);
    rsSetElementAt_double(aDouble, d, 0);
    d = rsGetElementAt_double(aDouble, 0, 0);
    rsSetElementAt_double(aDouble, d, 0, 0);
    d = rsGetElementAt_double(aDouble, 0, 0, 0);
    rsSetElementAt_double(aDouble, d, 0, 0, 0);
    d2 = rsGetElementAt_double2(aDouble2, 0);
    rsSetElementAt_double2(aDouble2, d2, 0);
    d2 = rsGetElementAt_double2(aDouble2, 0, 0);
    rsSetElementAt_double2(aDouble2, d2, 0, 0);
    d2 = rsGetElementAt_double2(aDouble2, 0, 0, 0);
    rsSetElementAt_double2(aDouble2, d2, 0, 0, 0);
    d3 = rsGetElementAt_double3(aDouble3, 0);
    rsSetElementAt_double3(aDouble3, d3, 0);
    d3 = rsGetElementAt_double3(aDouble3, 0, 0);
    rsSetElementAt_double3(aDouble3, d3, 0, 0);
    d3 = rsGetElementAt_double3(aDouble3, 0, 0, 0);
    rsSetElementAt_double3(aDouble3, d3, 0, 0, 0);
    d4 = rsGetElementAt_double4(aDouble4, 0);
    rsSetElementAt_double4(aDouble4, d4, 0);
    d4 = rsGetElementAt_double4(aDouble4, 0, 0);
    rsSetElementAt_double4(aDouble4, d4, 0, 0);
    d4 = rsGetElementAt_double4(aDouble4, 0, 0, 0);
    rsSetElementAt_double4(aDouble4, d4, 0, 0, 0);

    uc3.x = rsGetElementAtYuv_uchar_Y(aUChar4, 0, 0);
    uc3.y = rsGetElementAtYuv_uchar_U(aUChar4, 0, 0);
    uc3.z = rsGetElementAtYuv_uchar_V(aUChar4, 0, 0);

    c3.x = *(char*)rsGetElementAt(aChar3, 0);
    c3.y = *(char*)rsGetElementAt(aChar3, 0, 0);
    c3.z = *(char*)rsGetElementAt(aChar3, 0, 0, 0);

    rsAllocationIoSend(aInt);
    rsAllocationIoReceive(aInt);

    elemNonNull = rsAllocationGetElement(aInt);

    rsAllocationCopy1DRange(allocDst, 0, 0, 0, allocDst, 0, 0);
    rsAllocationCopy2DRange(allocDst, 0, 0, 0, 0, 0, 0, allocDst, 0, 0, 0, 0);

    // rsSample routines
    f4 += rsSample(allocDst, samplerNonNull, f);
    f4 += rsSample(allocDst, samplerNonNull, f, f);
    f4 += rsSample(allocDst, samplerNonNull, f2);
    f4 += rsSample(allocDst, samplerNonNull, f2, f);

    // rs_atomic.rsh
    rsAtomicInc(&i);
    rsAtomicDec(&i);
    rsAtomicAdd(&i, 1);
    rsAtomicSub(&i, 2);
    rsAtomicAnd(&i, 3);
    rsAtomicOr(&i, 4);
    rsAtomicXor(&i, 5);
    rsAtomicMin(&i, 6);
    rsAtomicMin(&ui, 6);
    rsAtomicMax(&i, 7);
    rsAtomicMax(&ui, 7);
    rsAtomicCas(&i, 8, 9);
    rsAtomicCas(&ui, 8, 9);

    // rs_cl.rsh
    c2 = convert_char2(c2);
    c2 = convert_char2(uc2);
    c2 = convert_char2(s2);
    c2 = convert_char2(us2);
    c2 = convert_char2(i2);
    c2 = convert_char2(ui2);
    c2 = convert_char2(f2);
    c3 = convert_char3(c3);
    c3 = convert_char3(uc3);
    c3 = convert_char3(s3);
    c3 = convert_char3(us3);
    c3 = convert_char3(i3);
    c3 = convert_char3(ui3);
    c3 = convert_char3(f3);
    c4 = convert_char4(c4);
    c4 = convert_char4(uc4);
    c4 = convert_char4(s4);
    c4 = convert_char4(us4);
    c4 = convert_char4(i4);
    c4 = convert_char4(ui4);
    c4 = convert_char4(f4);

    uc2 = convert_uchar2(c2);
    uc2 = convert_uchar2(uc2);
    uc2 = convert_uchar2(s2);
    uc2 = convert_uchar2(us2);
    uc2 = convert_uchar2(i2);
    uc2 = convert_uchar2(ui2);
    uc2 = convert_uchar2(f2);
    uc3 = convert_uchar3(c3);
    uc3 = convert_uchar3(uc3);
    uc3 = convert_uchar3(s3);
    uc3 = convert_uchar3(us3);
    uc3 = convert_uchar3(i3);
    uc3 = convert_uchar3(ui3);
    uc3 = convert_uchar3(f3);
    uc4 = convert_uchar4(c4);
    uc4 = convert_uchar4(uc4);
    uc4 = convert_uchar4(s4);
    uc4 = convert_uchar4(us4);
    uc4 = convert_uchar4(i4);
    uc4 = convert_uchar4(ui4);
    uc4 = convert_uchar4(f4);

    s2 = convert_short2(c2);
    s2 = convert_short2(uc2);
    s2 = convert_short2(s2);
    s2 = convert_short2(us2);
    s2 = convert_short2(i2);
    s2 = convert_short2(ui2);
    s2 = convert_short2(f2);
    s3 = convert_short3(c3);
    s3 = convert_short3(uc3);
    s3 = convert_short3(s3);
    s3 = convert_short3(us3);
    s3 = convert_short3(i3);
    s3 = convert_short3(ui3);
    s3 = convert_short3(f3);
    s4 = convert_short4(c4);
    s4 = convert_short4(uc4);
    s4 = convert_short4(s4);
    s4 = convert_short4(us4);
    s4 = convert_short4(i4);
    s4 = convert_short4(ui4);
    s4 = convert_short4(f4);

    us2 = convert_ushort2(c2);
    us2 = convert_ushort2(uc2);
    us2 = convert_ushort2(s2);
    us2 = convert_ushort2(us2);
    us2 = convert_ushort2(i2);
    us2 = convert_ushort2(ui2);
    us2 = convert_ushort2(f2);
    us3 = convert_ushort3(c3);
    us3 = convert_ushort3(uc3);
    us3 = convert_ushort3(s3);
    us3 = convert_ushort3(us3);
    us3 = convert_ushort3(i3);
    us3 = convert_ushort3(ui3);
    us3 = convert_ushort3(f3);
    us4 = convert_ushort4(c4);
    us4 = convert_ushort4(uc4);
    us4 = convert_ushort4(s4);
    us4 = convert_ushort4(us4);
    us4 = convert_ushort4(i4);
    us4 = convert_ushort4(ui4);
    us4 = convert_ushort4(f4);

    i2 = convert_int2(c2);
    i2 = convert_int2(uc2);
    i2 = convert_int2(s2);
    i2 = convert_int2(us2);
    i2 = convert_int2(i2);
    i2 = convert_int2(ui2);
    i2 = convert_int2(f2);
    i3 = convert_int3(c3);
    i3 = convert_int3(uc3);
    i3 = convert_int3(s3);
    i3 = convert_int3(us3);
    i3 = convert_int3(i3);
    i3 = convert_int3(ui3);
    i3 = convert_int3(f3);
    i4 = convert_int4(c4);
    i4 = convert_int4(uc4);
    i4 = convert_int4(s4);
    i4 = convert_int4(us4);
    i4 = convert_int4(i4);
    i4 = convert_int4(ui4);
    i4 = convert_int4(f4);

    ui2 = convert_uint2(c2);
    ui2 = convert_uint2(uc2);
    ui2 = convert_uint2(s2);
    ui2 = convert_uint2(us2);
    ui2 = convert_uint2(i2);
    ui2 = convert_uint2(ui2);
    ui2 = convert_uint2(f2);
    ui3 = convert_uint3(c3);
    ui3 = convert_uint3(uc3);
    ui3 = convert_uint3(s3);
    ui3 = convert_uint3(us3);
    ui3 = convert_uint3(i3);
    ui3 = convert_uint3(ui3);
    ui3 = convert_uint3(f3);
    ui4 = convert_uint4(c4);
    ui4 = convert_uint4(uc4);
    ui4 = convert_uint4(s4);
    ui4 = convert_uint4(us4);
    ui4 = convert_uint4(i4);
    ui4 = convert_uint4(ui4);
    ui4 = convert_uint4(f4);

    f2 = convert_float2(c2);
    f2 = convert_float2(uc2);
    f2 = convert_float2(s2);
    f2 = convert_float2(us2);
    f2 = convert_float2(i2);
    f2 = convert_float2(ui2);
    f2 = convert_float2(f2);
    f3 = convert_float3(c3);
    f3 = convert_float3(uc3);
    f3 = convert_float3(s3);
    f3 = convert_float3(us3);
    f3 = convert_float3(i3);
    f3 = convert_float3(ui3);
    f3 = convert_float3(f3);
    f4 = convert_float4(c4);
    f4 = convert_float4(uc4);
    f4 = convert_float4(s4);
    f4 = convert_float4(us4);
    f4 = convert_float4(i4);
    f4 = convert_float4(ui4);
    f4 = convert_float4(f4);

    // FIXME: No support for long/double (either from/to).

    // math
    f = acos(f);
    f2 = acos(f2);
    f3 = acos(f3);
    f4 = acos(f4);
    f = acosh(f);
    f2 = acosh(f2);
    f3 = acosh(f3);
    f4 = acosh(f4);
    f = acospi(f);
    f2 = acospi(f2);
    f3 = acospi(f3);
    f4 = acospi(f4);

    f = asin(f);
    f2 = asin(f2);
    f3 = asin(f3);
    f4 = asin(f4);
    f = asinh(f);
    f2 = asinh(f2);
    f3 = asinh(f3);
    f4 = asinh(f4);
    f = asinpi(f);
    f2 = asinpi(f2);
    f3 = asinpi(f3);
    f4 = asinpi(f4);

    f = atan(f);
    f2 = atan(f2);
    f3 = atan(f3);
    f4 = atan(f4);
    f = atanh(f);
    f2 = atanh(f2);
    f3 = atanh(f3);
    f4 = atanh(f4);
    f = atanpi(f);
    f2 = atanpi(f2);
    f3 = atanpi(f3);
    f4 = atanpi(f4);

    f = atan2(f, f);
    f2 = atan2(f2, f2);
    f3 = atan2(f3, f3);
    f4 = atan2(f4, f4);
    f = atan2pi(f, f);
    f2 = atan2pi(f2, f2);
    f3 = atan2pi(f3, f3);
    f4 = atan2(f4, f4);

    f = cbrt(f);
    f2 = cbrt(f2);
    f3 = cbrt(f3);
    f4 = cbrt(f4);

    f = ceil(f);
    f2 = ceil(f2);
    f3 = ceil(f3);
    f4 = ceil(f4);

    f = copysign(f, f);
    f2 = copysign(f2, f2);
    f3 = copysign(f3, f3);
    f4 = copysign(f4, f4);

    f = cos(f);
    f2 = cos(f2);
    f3 = cos(f3);
    f4 = cos(f4);
    f = cosh(f);
    f2 = cosh(f2);
    f3 = cosh(f3);
    f4 = cosh(f4);
    f = cospi(f);
    f2 = cospi(f2);
    f3 = cospi(f3);
    f4 = cospi(f4);

    f = erfc(f);
    f2 = erfc(f2);
    f3 = erfc(f3);
    f4 = erfc(f4);
    f = erf(f);
    f2 = erf(f2);
    f3 = erf(f3);
    f4 = erf(f4);

    f = exp(f);
    f2 = exp(f2);
    f3 = exp(f3);
    f4 = exp(f4);
    f = exp2(f);
    f2 = exp2(f2);
    f3 = exp2(f3);
    f4 = exp2(f4);

    f = pow(f, f);
    f2 = pow(f2, f2);
    f3 = pow(f3, f3);
    f4 = pow(f4, f4);

    f = exp10(f);
    f2 = exp10(f2);
    f3 = exp10(f3);
    f4 = exp10(f4);

    f = expm1(f);
    f2 = expm1(f2);
    f3 = expm1(f3);
    f4 = expm1(f4);

    f = fabs(f);
    f2 = fabs(f2);
    f3 = fabs(f3);
    f4 = fabs(f4);

    f = fabs(f);
    f2 = fabs(f2);
    f3 = fabs(f3);
    f4 = fabs(f4);

    f = fdim(f, f);
    f2 = fdim(f2, f2);
    f3 = fdim(f3, f3);
    f4 = fdim(f4, f4);

    f = floor(f);
    f2 = floor(f2);
    f3 = floor(f3);
    f4 = floor(f4);

    f = fma(f, f, f);
    f2 = fma(f2, f2, f2);
    f3 = fma(f3, f3, f3);
    f4 = fma(f4, f4, f4);

    f = fmax(f, f);
    f2 = fmax(f2, f2);
    f3 = fmax(f3, f3);
    f4 = fmax(f4, f4);

    f = fmin(f, f);
    f2 = fmin(f2, f2);
    f3 = fmin(f3, f3);
    f4 = fmin(f4, f4);

    f = fmod(f, f);
    f2 = fmod(f2, f2);
    f3 = fmod(f3, f3);
    f4 = fmod(f4, f4);

    f = fract(f, (float *)&f);
    f2 = fract(f2, (float2 *)&f2);
    f3 = fract(f3, (float3 *)&f3);
    f4 = fract(f4, (float4 *)&f4);
    f = fract(f);
    f2 = fract(f2);
    f3 = fract(f3);
    f4 = fract(f4);

    f = frexp(f, (int *)&i);
    f2 = frexp(f2, (int2 *)&i2);
    f3 = frexp(f3, (int3 *)&i3);
    f4 = frexp(f4, (int4 *)&i4);

    f = hypot(f, f);
    f2 = hypot(f2, f2);
    f3 = hypot(f3, f3);
    f4 = hypot(f4, f4);

    i = ilogb(f);
    i2 = ilogb(f2);
    i3 = ilogb(f3);
    i4 = ilogb(f4);

    f = ldexp(f, i);
    f2 = ldexp(f2, i2);
    f3 = ldexp(f3, i3);
    f4 = ldexp(f4, i4);
    f2 = ldexp(f2, i);
    f3 = ldexp(f3, i);
    f4 = ldexp(f4, i);

    f = lgamma(f);
    f2 = lgamma(f2);
    f3 = lgamma(f3);
    f4 = lgamma(f4);
    f = lgamma(f, (int *)&i);
    f2 = lgamma(f2, (int2 *)&i2);
    f3 = lgamma(f3, (int3 *)&i3);
    f4 = lgamma(f4, (int4 *)&i4);

    f = log(f);
    f2 = log(f2);
    f3 = log(f3);
    f4 = log(f4);

    f = log10(f);
    f2 = log10(f2);
    f3 = log10(f3);
    f4 = log10(f4);

    f = log2(f);
    f2 = log2(f2);
    f3 = log2(f3);
    f4 = log2(f4);

    f = log1p(f);
    f2 = log1p(f2);
    f3 = log1p(f3);
    f4 = log1p(f4);

    f = logb(f);
    f2 = logb(f2);
    f3 = logb(f3);
    f4 = logb(f4);

    f = mad(f, f, f);
    f2 = mad(f2, f2, f2);
    f3 = mad(f3, f3, f3);
    f4 = mad(f4, f4, f4);

    f = modf(f, (float *)&f);
    f2 = modf(f2, (float2 *)&f2);
    f3 = modf(f3, (float3 *)&f3);
    f4 = modf(f4, (float4 *)&f4);

    f = nan(ui);

    f = nextafter(f, f);
    f2 = nextafter(f2, f2);
    f3 = nextafter(f3, f3);
    f4 = nextafter(f4, f4);

    f = pown(f, i);
    f2 = pown(f2, i2);
    f3 = pown(f3, i3);
    f4 = pown(f4, i4);

    f = powr(f, f);
    f2 = powr(f2, f2);
    f3 = powr(f3, f3);
    f4 = powr(f4, f4);

    f = remainder(f, f);
    f2 = remainder(f2, f2);
    f3 = remainder(f3, f3);
    f4 = remainder(f4, f4);

    f = remquo(f, f, (int *)&i);
    f2 = remquo(f2, f2, (int2 *)&i2);
    f3 = remquo(f3, f3, (int3 *)&i3);
    f4 = remquo(f4, f4, (int4 *)&i4);

    f = rint(f);
    f2 = rint(f2);
    f3 = rint(f3);
    f4 = rint(f4);

    f = rootn(f, i);
    f2 = rootn(f2, i2);
    f3 = rootn(f3, i3);
    f4 = rootn(f4, i4);

    f = round(f);
    f2 = round(f2);
    f3 = round(f3);
    f4 = round(f4);

    f = rsqrt(f);
    f2 = rsqrt(f2);
    f3 = rsqrt(f3);
    f4 = rsqrt(f4);

    f = sin(f);
    f2 = sin(f2);
    f3 = sin(f3);
    f4 = sin(f4);
    f = sinh(f);
    f2 = sinh(f2);
    f3 = sinh(f3);
    f4 = sinh(f4);
    f = sinpi(f);
    f2 = sinpi(f2);
    f3 = sinpi(f3);
    f4 = sinpi(f4);

    f = sincos(f, (float *)&f);
    f2 = sincos(f2, (float2 *)&f2);
    f3 = sincos(f3, (float3 *)&f3);
    f4 = sincos(f4, (float4 *)&f4);

    f = tan(f);
    f2 = tan(f2);
    f3 = tan(f3);
    f4 = tan(f4);
    f = tanh(f);
    f2 = tanh(f2);
    f3 = tanh(f3);
    f4 = tanh(f4);
    f = tanpi(f);
    f2 = tanpi(f2);
    f3 = tanpi(f3);
    f4 = tanpi(f4);

    f = tgamma(f);
    f2 = tgamma(f2);
    f3 = tgamma(f3);
    f4 = tgamma(f4);

    f = trunc(f);
    f2 = trunc(f2);
    f3 = trunc(f3);
    f4 = trunc(f4);

    uc = abs(c);
    uc2 = abs(c2);
    uc3 = abs(c3);
    uc4 = abs(c4);
    us = abs(s);
    us2 = abs(s2);
    us3 = abs(s3);
    us4 = abs(s4);
    ui = abs(i);
    ui2 = abs(i2);
    ui3 = abs(i3);
    ui4 = abs(i4);

    c = clz(c);
    c2 = clz(c2);
    c3 = clz(c3);
    c4 = clz(c4);
    uc = clz(uc);
    uc2 = clz(uc2);
    uc3 = clz(uc3);
    uc4 = clz(uc4);
    s = clz(s);
    s2 = clz(s2);
    s3 = clz(s3);
    s4 = clz(s4);
    us = clz(us);
    us2 = clz(us2);
    us3 = clz(us3);
    us4 = clz(us4);
    i = clz(i);
    i2 = clz(i2);
    i3 = clz(i3);
    i4 = clz(i4);
    ui = clz(ui);
    ui2 = clz(ui2);
    ui3 = clz(ui3);
    ui4 = clz(ui4);

    c = min(c, c);
    c2 = min(c2, c2);
    c3 = min(c3, c3);
    c4 = min(c4, c4);
    uc = min(uc, uc);
    uc2 = min(uc2, uc2);
    uc3 = min(uc3, uc3);
    uc4 = min(uc4, uc4);
    s = min(s, s);
    s2 = min(s2, s2);
    s3 = min(s3, s3);
    s4 = min(s4, s4);
    us = min(us, us);
    us2 = min(us2, us2);
    us3 = min(us3, us3);
    us4 = min(us4, us4);
    i = min(i, i);
    i2 = min(i2, i2);
    i3 = min(i3, i3);
    i4 = min(i4, i4);
    ui = min(ui, ui);
    ui2 = min(ui2, ui2);
    ui3 = min(ui3, ui3);
    ui4 = min(ui4, ui4);
    f = min(f, f);
    f2 = min(f2, f2);
    f3 = min(f3, f3);
    f4 = min(f4, f4);
    f2 = min(f2, f);
    f3 = min(f3, f);
    f4 = min(f4, f);

    c = max(c, c);
    c2 = max(c2, c2);
    c3 = max(c3, c3);
    c4 = max(c4, c4);
    uc = max(uc, uc);
    uc2 = max(uc2, uc2);
    uc3 = max(uc3, uc3);
    uc4 = max(uc4, uc4);
    s = max(s, s);
    s2 = max(s2, s2);
    s3 = max(s3, s3);
    s4 = max(s4, s4);
    us = max(us, us);
    us2 = max(us2, us2);
    us3 = max(us3, us3);
    us4 = max(us4, us4);
    i = max(i, i);
    i2 = max(i2, i2);
    i3 = max(i3, i3);
    i4 = max(i4, i4);
    ui = max(ui, ui);
    ui2 = max(ui2, ui2);
    ui3 = max(ui3, ui3);
    ui4 = max(ui4, ui4);
    f = max(f, f);
    f2 = max(f2, f2);
    f3 = max(f3, f3);
    f4 = max(f4, f4);
    f2 = max(f2, f);
    f3 = max(f3, f);
    f4 = max(f4, f);

    f = clamp(f, f, f);
    f2 = clamp(f2, f2, f2);
    f3 = clamp(f3, f3, f3);
    f4 = clamp(f4, f4, f4);
    f2 = clamp(f2, f, f);
    f3 = clamp(f3, f, f);
    f4 = clamp(f4, f, f);
    // FIXME: other clamps only in 19+

    f = degrees(f);
    f2 = degrees(f2);
    f3 = degrees(f3);
    f4 = degrees(f4);

    f = mix(f, f, f);
    f2 = mix(f2, f2, f2);
    f3 = mix(f3, f3, f3);
    f4 = mix(f4, f4, f4);
    f2 = mix(f2, f2, f);
    f3 = mix(f3, f3, f);
    f4 = mix(f4, f4, f);

    f = radians(f);
    f2 = radians(f2);
    f3 = radians(f3);
    f4 = radians(f4);

    f = step(f, f);
    f2 = step(f2, f2);
    f3 = step(f3, f3);
    f4 = step(f4, f4);
    f2 = step(f2, f);
    f3 = step(f3, f);
    f4 = step(f4, f);

    f = sign(f);
    f2 = sign(f2);
    f3 = sign(f3);
    f4 = sign(f4);

    f3 = cross(f3, f3);
    f4 = cross(f4, f4);

    f = dot(f, f);
    f = dot(f2, f2);
    f = dot(f3, f3);
    f = dot(f4, f4);

    f = length(f);
    f = length(f2);
    f = length(f3);
    f = length(f4);

    f = distance(f, f);
    f = distance(f2, f2);
    f = distance(f3, f3);
    f = distance(f4, f4);

    f = normalize(f);
    f2 = normalize(f2);
    f3 = normalize(f3);
    f4 = normalize(f4);

    f = half_recip(f);
    f2 = half_recip(f2);
    f3 = half_recip(f3);
    f4 = half_recip(f4);

    f = half_sqrt(f);
    f2 = half_sqrt(f2);
    f3 = half_sqrt(f3);
    f4 = half_sqrt(f4);

    f = half_rsqrt(f);
    f2 = half_rsqrt(f2);
    f3 = half_rsqrt(f3);
    f4 = half_rsqrt(f4);

    f = fast_length(f);
    f = fast_length(f2);
    f = fast_length(f3);
    f = fast_length(f4);

    f = fast_distance(f, f);
    f = fast_distance(f2, f2);
    f = fast_distance(f3, f3);
    f = fast_distance(f4, f4);

    f = fast_normalize(f);
    f2 = fast_normalize(f2);
    f3 = fast_normalize(f3);
    f4 = fast_normalize(f4);

    f = native_exp2(f);
    f2 = native_exp2(f2);
    f3 = native_exp2(f3);
    f4 = native_exp2(f4);

    f = native_exp(f);
    f2 = native_exp(f2);
    f3 = native_exp(f3);
    f4 = native_exp(f4);

    f = native_exp10(f);
    f2 = native_exp10(f2);
    f3 = native_exp10(f3);
    f4 = native_exp10(f4);

    f = native_log2(f);
    f2 = native_log2(f2);
    f3 = native_log2(f3);
    f4 = native_log2(f4);

    f = native_log(f);
    f2 = native_log(f2);
    f3 = native_log(f3);
    f4 = native_log(f4);

    f = native_log10(f);
    f2 = native_log10(f2);
    f3 = native_log10(f3);
    f4 = native_log10(f4);

    f = native_powr(f, f);
    f2 = native_powr(f2, f2);
    f3 = native_powr(f3, f3);
    f4 = native_powr(f4, f4);

    // rs_core.rsh
    b = rsSendToClient(0);
    b = rsSendToClient(0, NULL, 0);
    rsSendToClientBlocking(0);
    rsSendToClientBlocking(0, NULL, 0);

    rsForEach(testKernel, allocNonNull, allocNonNull);

    // rs_debug.rsh
    rsDebug("", f);
    rsDebug("", f, f);
    rsDebug("", f, f, f);
    rsDebug("", f, f, f, f);
    rsDebug("", f2);
    rsDebug("", f3);
    rsDebug("", f4);
    rsDebug("", d);
    rsDebug("", &m4x4);
    rsDebug("", &m3x3);
    rsDebug("", &m2x2);
    rsDebug("", i);
    rsDebug("", ui);
    rsDebug("", l);
    rsDebug("", ul);
    rsDebug("", ll);
    rsDebug("", ull);
    rsDebug("", (const void *)&i);
    rsDebug("", c);
    rsDebug("", c2);
    rsDebug("", c3);
    rsDebug("", c4);
    rsDebug("", uc);
    rsDebug("", uc2);
    rsDebug("", uc3);
    rsDebug("", uc4);
    rsDebug("", s);
    rsDebug("", s2);
    rsDebug("", s3);
    rsDebug("", s4);
    rsDebug("", us);
    rsDebug("", us2);
    rsDebug("", us3);
    rsDebug("", us4);
    rsDebug("", i2);
    rsDebug("", i3);
    rsDebug("", i4);
    rsDebug("", ui2);
    rsDebug("", ui3);
    rsDebug("", ui4);
    rsDebug("", l2);
    rsDebug("", l3);
    rsDebug("", l4);
    rsDebug("", ul2);
    rsDebug("", ul3);
    rsDebug("", ul4);

    // rs_element.rsh
    ui = rsElementGetSubElementCount(elemNonNull);
    elemNull = rsElementGetSubElement(elemNonNull, 0);
    ui = rsElementGetSubElementNameLength(elemNonNull, 0);
    ui = rsElementGetSubElementName(elemNonNull, 0, NULL, 0);
    ui = rsElementGetSubElementArraySize(elemNonNull, 0);
    ui = rsElementGetSubElementOffsetBytes(elemNonNull, 0);
    ui = rsElementGetBytesSize(elemNonNull);

    dt = rsElementGetDataType(elemNonNull);
    dk = rsElementGetDataKind(elemNonNull);

    ui = rsElementGetVectorSize(elemNonNull);

    // rs_math.rsh
    i = rsRand(i);
    i = rsRand(i, i);
    f = rsRand(f);
    f = fract(f);
    ui = clamp(ui, ui, ui);
    i = clamp(i, i, i);
    us = clamp(us, us, us);
    s = clamp(s, s, s);
    uc = clamp(uc, uc, uc);
    c = clamp(c, c, c);

    // skip always-inlined rsExtractFrustumPlanes
    // skip always-inlined rsIsSphereInFrustum

    uc4 = rsPackColorTo8888(f, f, f);
    uc4 = rsPackColorTo8888(f, f, f, f);
    uc4 = rsPackColorTo8888(f3);
    uc4 = rsPackColorTo8888(f4);
    f4 = rsUnpackColor8888(uc4);
    uc4 = rsYuvToRGBA_uchar4(uc, uc, uc);
    f4 = rsYuvToRGBA_float4(uc, uc, uc);

    // rs_matrix.rsh
    rsMatrixSet(&m4x4, ui, ui, f);
    rsMatrixSet(&m3x3, ui, ui, f);
    rsMatrixSet(&m2x2, ui, ui, f);
    f = rsMatrixGet(&m4x4, ui, ui);
    f = rsMatrixGet(&m3x3, ui, ui);
    f = rsMatrixGet(&m2x2, ui, ui);
    rsMatrixLoadIdentity(&m4x4);
    rsMatrixLoadIdentity(&m3x3);
    rsMatrixLoadIdentity(&m2x2);
    rsMatrixLoad(&m4x4, fa);
    rsMatrixLoad(&m3x3, fa);
    rsMatrixLoad(&m2x2, fa);
    rsMatrixLoad(&m4x4, &m4x4);
    rsMatrixLoad(&m4x4, &m3x3);
    rsMatrixLoad(&m4x4, &m2x2);
    rsMatrixLoad(&m3x3, &m3x3);
    rsMatrixLoad(&m2x2, &m2x2);
    rsMatrixLoadRotate(&m4x4, f, f, f, f);
    rsMatrixLoadScale(&m4x4, f, f, f);
    rsMatrixLoadTranslate(&m4x4, f, f, f);
    rsMatrixLoadMultiply(&m4x4, &m4x4, &m4x4);
    rsMatrixLoadMultiply(&m3x3, &m3x3, &m3x3);
    rsMatrixLoadMultiply(&m2x2, &m2x2, &m2x2);
    rsMatrixMultiply(&m4x4, &m4x4);
    rsMatrixMultiply(&m3x3, &m3x3);
    rsMatrixMultiply(&m2x2, &m2x2);
    rsMatrixRotate(&m4x4, f, f, f, f);
    rsMatrixScale(&m4x4, f, f, f);
    rsMatrixTranslate(&m4x4, f, f, f);
    rsMatrixLoadOrtho(&m4x4, f, f, f, f, f, f);
    rsMatrixLoadFrustum(&m4x4, f, f, f, f, f, f);
    rsMatrixLoadPerspective(&m4x4, f, f, f, f);
    f4 = rsMatrixMultiply(&m4x4, f4);
    f4 = rsMatrixMultiply(&m4x4, f3);
    f4 = rsMatrixMultiply(&m4x4, f2);
    f3 = rsMatrixMultiply(&m3x3, f3);
    f3 = rsMatrixMultiply(&m3x3, f2);
    f2 = rsMatrixMultiply(&m2x2, f2);
    b = rsMatrixInverse(&m4x4);
    b = rsMatrixInverseTranspose(&m4x4);
    rsMatrixTranspose(&m4x4);
    rsMatrixTranspose(&m3x3);
    rsMatrixTranspose(&m2x2);

    // rs_object.rsh
    rsSetObject(&elemNonNull, elemNonNull);
    rsSetObject(&typeNonNull, typeNonNull);
    rsSetObject(&allocNonNull, allocNonNull);
    rsSetObject(&samplerNonNull, samplerNonNull);
    rsSetObject(&scriptNonNull, scriptNonNull);
    rsClearObject(&elemNonNull);
    rsClearObject(&typeNonNull);
    rsClearObject(&allocNonNull);
    rsClearObject(&samplerNonNull);
    rsClearObject(&scriptNonNull);
    b = rsIsObject(elemNonNull);
    b = rsIsObject(typeNonNull);
    b = rsIsObject(allocNonNull);
    b = rsIsObject(samplerNonNull);
    b = rsIsObject(scriptNonNull);

    // rs_quaternion.rsh skipped because all functions are static.

    // rs_sampler.rsh
    rsv = rsSamplerGetMinification(samplerNonNull);
    rsv = rsSamplerGetMagnification(samplerNonNull);
    rsv = rsSamplerGetWrapS(samplerNonNull);
    rsv = rsSamplerGetWrapT(samplerNonNull);
    f = rsSamplerGetAnisotropy(samplerNonNull);

    // rs_time.rsh
    rst = rsTime(NULL);
    rsLocaltime((rs_tm *) &rstm, (rs_time_t *) &rst);
    ll = rsUptimeMillis();
    ll = rsUptimeNanos();
    f = rsGetDt();

    /********************************
     * DO NOT EXECUTE THIS FUNCTION *
     ********************************/
}

static bool test_obj_api() {
    bool failed = false;

    _RS_ASSERT(!rsIsObject(elemNull));
    _RS_ASSERT(rsIsObject(elemNonNull));
    rsSetObject(&elemNull, elemNonNull);
    _RS_ASSERT(rsIsObject(elemNull));
    rsClearObject(&elemNull);
    _RS_ASSERT(!rsIsObject(elemNull));

    _RS_ASSERT(!rsIsObject(typeNull));
    _RS_ASSERT(rsIsObject(typeNonNull));
    rsSetObject(&typeNull, typeNonNull);
    _RS_ASSERT(rsIsObject(typeNull));
    rsClearObject(&typeNull);
    _RS_ASSERT(!rsIsObject(typeNull));

    _RS_ASSERT(!rsIsObject(allocNull));
    _RS_ASSERT(rsIsObject(allocNonNull));
    rsSetObject(&allocNull, allocNonNull);
    _RS_ASSERT(rsIsObject(allocNull));
    rsClearObject(&allocNull);
    _RS_ASSERT(!rsIsObject(allocNull));

    _RS_ASSERT(!rsIsObject(samplerNull));
    _RS_ASSERT(rsIsObject(samplerNonNull));
    rsSetObject(&samplerNull, samplerNonNull);
    _RS_ASSERT(rsIsObject(samplerNull));
    rsClearObject(&samplerNull);
    _RS_ASSERT(!rsIsObject(samplerNull));

    _RS_ASSERT(!rsIsObject(scriptNull));
    _RS_ASSERT(rsIsObject(scriptNonNull));
    rsSetObject(&scriptNull, scriptNonNull);
    _RS_ASSERT(rsIsObject(scriptNull));
    rsClearObject(&scriptNull);
    _RS_ASSERT(!rsIsObject(scriptNull));

    if (failed) {
        rsDebug("test_obj_api FAILED", -1);
    }
    else {
        rsDebug("test_obj_api PASSED", 0);
    }

    return failed;
}


static bool test_rs_alloc_api() {
    bool failed = false;
    rs_allocation a = allocDst;
    _RS_ASSERT(rsIsObject(a));
    _RS_ASSERT(rsAllocationGetDimX(a) == x);
    _RS_ASSERT(rsAllocationGetDimY(a) == y);
    _RS_ASSERT(rsAllocationGetDimZ(a) == z);
    _RS_ASSERT(rsAllocationGetDimLOD(a) == 0);
    _RS_ASSERT(rsAllocationGetDimFaces(a) == 0);
    rsSetElementAt_char(a, 5, 1, 0);
    if (y > 0)
        rsAllocationCopy2DRange(allocDst, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X,
                                x, 1, a, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
    else
        rsAllocationCopy1DRange(allocDst, 0, 0, x, a, 0, 0);
    _RS_ASSERT(rsGetElementAt_char(allocDst, 1, 0) == 5);
    if (failed) {
        rsDebug("test_rs_alloc_api FAILED", -1);
    }
    else {
        rsDebug("test_rs_alloc_api PASSED", 0);
    }

    return failed;
}


void api_test() {
    bool failed = false;
    failed |= test_obj_api();
    failed |= test_rs_alloc_api();

    if (failed) {
        rsSendToClientBlocking(RS_MSG_TEST_FAILED);
    }
    else {
        rsSendToClientBlocking(RS_MSG_TEST_PASSED);
    }
}

