diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index 4788a12..2a3ebc9 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -84,6 +84,10 @@
 OPAQUETYPE(rs_script_call)
 #undef OPAQUETYPE
 
+typedef enum {
+    // Empty to avoid conflicting definitions with RsAllocationCubemapFace
+} rs_allocation_cubemap_face;
+
 typedef struct {
     int tm_sec;     ///< seconds
     int tm_min;     ///< minutes
@@ -138,7 +142,6 @@
                              srcXoff, srcYoff, srcMip, srcFace);
 }
 
-#ifndef RS_COMPATIBILITY_LIB
 static void SC_AllocationIoSend(Allocation *alloc) {
     Context *rsc = RsdCpuReference::getTlsContext();
     rsrAllocationIoSend(rsc, alloc);
@@ -150,7 +153,7 @@
     rsrAllocationIoReceive(rsc, alloc);
 }
 
-
+#ifndef RS_COMPATIBILITY_LIB
 
 //////////////////////////////////////////////////////////////////////////////
 // Context
@@ -1244,6 +1247,38 @@
     return SC_GetAllocation(ptr);
 }
 
+void __attribute__((overloadable)) rsAllocationIoSend(rs_allocation a) {
+    SC_AllocationIoSend((Allocation *)a.p);
+}
+
+void __attribute__((overloadable)) rsAllocationIoReceive(rs_allocation a) {
+    SC_AllocationIoReceive((Allocation *)a.p);
+}
+
+
+void __attribute__((overloadable)) rsAllocationCopy1DRange(
+        rs_allocation dstAlloc,
+        uint32_t dstOff, uint32_t dstMip, uint32_t count,
+        rs_allocation srcAlloc,
+        uint32_t srcOff, uint32_t srcMip) {
+    SC_AllocationCopy1DRange((Allocation *)dstAlloc.p, dstOff, dstMip, count,
+                             (Allocation *)srcAlloc.p, srcOff, srcMip);
+}
+
+void __attribute__((overloadable)) rsAllocationCopy2DRange(
+        rs_allocation dstAlloc,
+        uint32_t dstXoff, uint32_t dstYoff,
+        uint32_t dstMip, rs_allocation_cubemap_face dstFace,
+        uint32_t width, uint32_t height,
+        rs_allocation srcAlloc,
+        uint32_t srcXoff, uint32_t srcYoff,
+        uint32_t srcMip, rs_allocation_cubemap_face srcFace) {
+    SC_AllocationCopy2DRange((Allocation *)dstAlloc.p, dstXoff, dstYoff,
+                             dstMip, dstFace, width, height,
+                             (Allocation *)srcAlloc.p, srcXoff, srcYoff,
+                             srcMip, srcFace);
+}
+
 void __attribute__((overloadable)) rsForEach(rs_script script,
                                              rs_allocation in,
                                              rs_allocation out,
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java b/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
index 6c5a1ce..1b2cd05 100644
--- a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
+++ b/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
@@ -34,15 +34,25 @@
         pRS.setMessageHandler(mRsMessage);
         Element elem = Element.I8(pRS);
         Type.Builder typeBuilder = new Type.Builder(pRS, elem);
-        typeBuilder.setX(1);
+
+        int x = 5;
+        int y = 7;
+        int z = 0;  // Don't actually setZ()
+        s.set_x(x);
+        s.set_y(y);
+        s.set_z(z);
+        typeBuilder.setX(x).setY(y);
         Type type = typeBuilder.create();
         Allocation alloc = Allocation.createTyped(pRS, type);
+        Allocation allocDst = Allocation.createTyped(pRS, type);
         Sampler sampler = Sampler.CLAMP_NEAREST(pRS);
         s.set_elemNonNull(elem);
         s.set_typeNonNull(type);
         s.set_allocNonNull(alloc);
+        s.set_allocDst(allocDst);
         s.set_samplerNonNull(sampler);
         s.set_scriptNonNull(s);
+        s.bind_allocPtr(alloc);
 
         s.invoke_api_test();
         pRS.finish();
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs b/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
index 9499cbd..ae46f14 100644
--- a/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
+++ b/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
@@ -1,5 +1,9 @@
 #include "shared.rsh"
 
+uint32_t x;
+uint32_t y;
+uint32_t z;
+
 rs_element elemNull;
 rs_element elemNonNull;
 rs_type typeNull;
@@ -11,6 +15,374 @@
 rs_script scriptNull;
 rs_script scriptNonNull;
 
+char *allocPtr;
+rs_allocation allocDst;
+
+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 float f;
+volatile float2 f2;
+volatile float3 f3;
+volatile float4 f4;
+volatile double d;
+volatile double2 d2;
+volatile double3 d3;
+volatile double4 d4;
+
+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;
+
+// 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);
+
+    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);
+    /********************************
+     * DO NOT EXECUTE THIS FUNCTION *
+     ********************************/
+}
 
 static bool test_obj_api() {
     bool failed = false;
@@ -60,9 +432,36 @@
     return failed;
 }
 
+
+static bool test_rs_alloc_api() {
+    bool failed = false;
+    rs_allocation a = rsGetAllocation(allocPtr);
+    _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);
+    rsAllocationCopy1DRange(allocDst, 0, 0, x, a, 0, 0);
+    _RS_ASSERT(rsGetElementAt_char(allocDst, 1, 0) == 5);
+
+    if (failed) {
+        rsDebug("test_obj_api FAILED", -1);
+    }
+    else {
+        rsDebug("test_obj_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);
diff --git a/rsRuntime.h b/rsRuntime.h
index 1d81ffb..be78245 100644
--- a/rsRuntime.h
+++ b/rsRuntime.h
@@ -109,11 +109,11 @@
 void rsrBindFont(Context *, Font *);
 void rsrFontColor(Context *, float r, float g, float b, float a);
 
+#endif
+
 void rsrAllocationIoSend(Context *, Allocation *);
 void rsrAllocationIoReceive(Context *, Allocation *);
 
-#endif
-
 //////////////////////////////////////////////////////////////////////////////
 // Time routines
 //////////////////////////////////////////////////////////////////////////////
