/*
 * Copyright (C) 2015 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.
 */

// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.

/*
 * rs_allocation_data.rsh: Allocation Data Access Functions
 *
 * The functions below can be used to get and set the cells that comprise
 * an allocation.
 *
 * - Individual cells are accessed using the rsGetElementAt* and
 *   rsSetElementAt functions.
 * - Multiple cells can be copied using the rsAllocationCopy* and
 *   rsAllocationV* functions.
 * - For getting values through a sampler, use rsSample.
 *
 * The rsGetElementAt and rsSetElement* functions are somewhat misnamed.
 * They don't get or set elements, which are akin to data types; they get
 * or set cells.  Think of them as rsGetCellAt and and rsSetCellAt.
 */

#ifndef RENDERSCRIPT_RS_ALLOCATION_DATA_RSH
#define RENDERSCRIPT_RS_ALLOCATION_DATA_RSH

/*
 * rsAllocationCopy1DRange: Copy consecutive cells between allocations
 *
 * Copies the specified number of cells from one allocation to another.
 *
 * The two allocations must be different.  Using this function to copy whithin
 * the same allocation yields undefined results.
 *
 * The function does not validate whether the offset plus count exceeds the size
 * of either allocation.  Be careful!
 *
 * This function should only be called between 1D allocations.  Calling it
 * on other allocations is undefined.
 *
 * Parameters:
 *   dstAlloc: Allocation to copy cells into.
 *   dstOff: Offset in the destination of the first cell to be copied into.
 *   dstMip: Mip level in the destination allocation.  0 if mip mapping is not used.
 *   count: Number of cells to be copied.
 *   srcAlloc: Source allocation.
 *   srcOff: Offset in the source of the first cell to be copied.
 *   srcMip: Mip level in the source allocation.  0 if mip mapping is not used.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 14))
extern 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);
#endif

/*
 * rsAllocationCopy2DRange: Copy a rectangular region of cells between allocations
 *
 * Copies a rectangular region of cells from one allocation to another.
 * (width * heigth) cells are copied.
 *
 * The two allocations must be different.  Using this function to copy whithin
 * the same allocation yields undefined results.
 *
 * The function does not validate whether the the source or destination region
 * exceeds the size of its respective allocation.  Be careful!
 *
 * This function should only be called between 2D allocations.  Calling it
 * on other allocations is undefined.
 *
 * Parameters:
 *   dstAlloc: Allocation to copy cells into.
 *   dstXoff: X offset in the destination of the region to be set.
 *   dstYoff: Y offset in the destination of the region to be set.
 *   dstMip: Mip level in the destination allocation.  0 if mip mapping is not used.
 *   dstFace: Cubemap face of the destination allocation.  Ignored for allocations that aren't cubemaps.
 *   width: Width of the incoming region to update.
 *   height: Height of the incoming region to update.
 *   srcAlloc: Source allocation.
 *   srcXoff: X offset in the source.
 *   srcYoff: Y offset in the source.
 *   srcMip: Mip level in the source allocation.  0 if mip mapping is not used.
 *   srcFace: Cubemap face of the source allocation.  Ignored for allocations that aren't cubemaps.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 14))
extern 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);
#endif

/*
 * rsAllocationVLoadX: Get a vector from an allocation of scalars
 *
 * This function returns a vector composed of successive cells of the allocation.
 * It assumes that the allocation contains scalars.
 *
 * The "X" in the name indicates that successive values are extracted by
 * increasing the X index.  There are currently no functions to get successive
 * values incrementing other dimensions.  Use multiple calls to rsGetElementAt()
 * instead.
 *
 * For example, when calling rsAllocationVLoadX_int4(a, 20, 30), an int4 composed
 * of a[20, 30], a[21, 30], a[22, 30], and a[23, 30] is returned.
 *
 * When retrieving from a three dimensional allocations, use the x, y, z variant.
 * Similarly, use the x, y variant for two dimensional allocations and x for the
 * mono dimensional allocations.
 *
 * For efficiency, this function does not validate the inputs.  Trying to wrap
 * the X index, exceeding the size of the allocation, or using indices incompatible
 * with the dimensionality of the allocation yields undefined results.
 *
 * See also rsAllocationVStoreX().
 *
 * Parameters:
 *   a: Allocation to get the data from.
 *   x: X offset in the allocation of the first cell to be copied from.
 *   y: Y offset in the allocation of the first cell to be copied from.
 *   z: Z offset in the allocation of the first cell to be copied from.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float2 __attribute__((overloadable))
    rsAllocationVLoadX_float2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float3 __attribute__((overloadable))
    rsAllocationVLoadX_float3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float4 __attribute__((overloadable))
    rsAllocationVLoadX_float4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double2 __attribute__((overloadable))
    rsAllocationVLoadX_double2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double3 __attribute__((overloadable))
    rsAllocationVLoadX_double3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double4 __attribute__((overloadable))
    rsAllocationVLoadX_double4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char2 __attribute__((overloadable))
    rsAllocationVLoadX_char2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char3 __attribute__((overloadable))
    rsAllocationVLoadX_char3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char4 __attribute__((overloadable))
    rsAllocationVLoadX_char4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar2 __attribute__((overloadable))
    rsAllocationVLoadX_uchar2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar3 __attribute__((overloadable))
    rsAllocationVLoadX_uchar3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar4 __attribute__((overloadable))
    rsAllocationVLoadX_uchar4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short2 __attribute__((overloadable))
    rsAllocationVLoadX_short2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short3 __attribute__((overloadable))
    rsAllocationVLoadX_short3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short4 __attribute__((overloadable))
    rsAllocationVLoadX_short4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort2 __attribute__((overloadable))
    rsAllocationVLoadX_ushort2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort3 __attribute__((overloadable))
    rsAllocationVLoadX_ushort3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort4 __attribute__((overloadable))
    rsAllocationVLoadX_ushort4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int2 __attribute__((overloadable))
    rsAllocationVLoadX_int2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int3 __attribute__((overloadable))
    rsAllocationVLoadX_int3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int4 __attribute__((overloadable))
    rsAllocationVLoadX_int4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint2 __attribute__((overloadable))
    rsAllocationVLoadX_uint2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint3 __attribute__((overloadable))
    rsAllocationVLoadX_uint3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint4 __attribute__((overloadable))
    rsAllocationVLoadX_uint4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long2 __attribute__((overloadable))
    rsAllocationVLoadX_long2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long3 __attribute__((overloadable))
    rsAllocationVLoadX_long3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long4 __attribute__((overloadable))
    rsAllocationVLoadX_long4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong2 __attribute__((overloadable))
    rsAllocationVLoadX_ulong2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong3 __attribute__((overloadable))
    rsAllocationVLoadX_ulong3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong4 __attribute__((overloadable))
    rsAllocationVLoadX_ulong4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float2 __attribute__((overloadable))
    rsAllocationVLoadX_float2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float3 __attribute__((overloadable))
    rsAllocationVLoadX_float3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float4 __attribute__((overloadable))
    rsAllocationVLoadX_float4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double2 __attribute__((overloadable))
    rsAllocationVLoadX_double2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double3 __attribute__((overloadable))
    rsAllocationVLoadX_double3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double4 __attribute__((overloadable))
    rsAllocationVLoadX_double4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char2 __attribute__((overloadable))
    rsAllocationVLoadX_char2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char3 __attribute__((overloadable))
    rsAllocationVLoadX_char3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char4 __attribute__((overloadable))
    rsAllocationVLoadX_char4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar2 __attribute__((overloadable))
    rsAllocationVLoadX_uchar2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar3 __attribute__((overloadable))
    rsAllocationVLoadX_uchar3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar4 __attribute__((overloadable))
    rsAllocationVLoadX_uchar4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short2 __attribute__((overloadable))
    rsAllocationVLoadX_short2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short3 __attribute__((overloadable))
    rsAllocationVLoadX_short3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short4 __attribute__((overloadable))
    rsAllocationVLoadX_short4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort2 __attribute__((overloadable))
    rsAllocationVLoadX_ushort2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort3 __attribute__((overloadable))
    rsAllocationVLoadX_ushort3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort4 __attribute__((overloadable))
    rsAllocationVLoadX_ushort4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int2 __attribute__((overloadable))
    rsAllocationVLoadX_int2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int3 __attribute__((overloadable))
    rsAllocationVLoadX_int3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int4 __attribute__((overloadable))
    rsAllocationVLoadX_int4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint2 __attribute__((overloadable))
    rsAllocationVLoadX_uint2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint3 __attribute__((overloadable))
    rsAllocationVLoadX_uint3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint4 __attribute__((overloadable))
    rsAllocationVLoadX_uint4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long2 __attribute__((overloadable))
    rsAllocationVLoadX_long2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long3 __attribute__((overloadable))
    rsAllocationVLoadX_long3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long4 __attribute__((overloadable))
    rsAllocationVLoadX_long4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong2 __attribute__((overloadable))
    rsAllocationVLoadX_ulong2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong3 __attribute__((overloadable))
    rsAllocationVLoadX_ulong3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong4 __attribute__((overloadable))
    rsAllocationVLoadX_ulong4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float2 __attribute__((overloadable))
    rsAllocationVLoadX_float2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float3 __attribute__((overloadable))
    rsAllocationVLoadX_float3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern float4 __attribute__((overloadable))
    rsAllocationVLoadX_float4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double2 __attribute__((overloadable))
    rsAllocationVLoadX_double2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double3 __attribute__((overloadable))
    rsAllocationVLoadX_double3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern double4 __attribute__((overloadable))
    rsAllocationVLoadX_double4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char2 __attribute__((overloadable))
    rsAllocationVLoadX_char2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char3 __attribute__((overloadable))
    rsAllocationVLoadX_char3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern char4 __attribute__((overloadable))
    rsAllocationVLoadX_char4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar2 __attribute__((overloadable))
    rsAllocationVLoadX_uchar2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar3 __attribute__((overloadable))
    rsAllocationVLoadX_uchar3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uchar4 __attribute__((overloadable))
    rsAllocationVLoadX_uchar4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short2 __attribute__((overloadable))
    rsAllocationVLoadX_short2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short3 __attribute__((overloadable))
    rsAllocationVLoadX_short3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern short4 __attribute__((overloadable))
    rsAllocationVLoadX_short4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort2 __attribute__((overloadable))
    rsAllocationVLoadX_ushort2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort3 __attribute__((overloadable))
    rsAllocationVLoadX_ushort3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ushort4 __attribute__((overloadable))
    rsAllocationVLoadX_ushort4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int2 __attribute__((overloadable))
    rsAllocationVLoadX_int2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int3 __attribute__((overloadable))
    rsAllocationVLoadX_int3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern int4 __attribute__((overloadable))
    rsAllocationVLoadX_int4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint2 __attribute__((overloadable))
    rsAllocationVLoadX_uint2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint3 __attribute__((overloadable))
    rsAllocationVLoadX_uint3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern uint4 __attribute__((overloadable))
    rsAllocationVLoadX_uint4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long2 __attribute__((overloadable))
    rsAllocationVLoadX_long2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long3 __attribute__((overloadable))
    rsAllocationVLoadX_long3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern long4 __attribute__((overloadable))
    rsAllocationVLoadX_long4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong2 __attribute__((overloadable))
    rsAllocationVLoadX_ulong2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong3 __attribute__((overloadable))
    rsAllocationVLoadX_ulong3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern ulong4 __attribute__((overloadable))
    rsAllocationVLoadX_ulong4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

/*
 * rsAllocationVStoreX: Store a vector into an allocation of scalars
 *
 * This function stores the entries of a vector into successive cells of an allocation.
 * It assumes that the allocation contains scalars.
 *
 * The "X" in the name indicates that successive values are stored by increasing
 * the X index.  There are currently no functions to store successive values
 * incrementing other dimensions.  Use multiple calls to rsSetElementAt() instead.
 *
 * For example, when calling rsAllocationVStoreX_int3(a, v, 20, 30), v.x is stored
 * at a[20, 30], v.y at a[21, 30], and v.z at a[22, 30].
 *
 * When storing into a three dimensional allocations, use the x, y, z variant.
 * Similarly, use the x, y variant for two dimensional allocations and x for the
 * mono dimensional allocations.
 *
 * For efficiency, this function does not validate the inputs.  Trying to wrap the
 * X index, exceeding the size of the allocation, or using indexes incompatible
 * with the dimensionality of the allocation yiels undefined results.
 *
 * See also rsAllocationVLoadX().
 *
 * Parameters:
 *   a: Allocation to store the data into.
 *   val: Value to be stored.
 *   x: X offset in the allocation of the first cell to be copied into.
 *   y: Y offset in the allocation of the first cell to be copied into.
 *   z: Z offset in the allocation of the first cell to be copied into.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float2(rs_allocation a, float2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float3(rs_allocation a, float3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float4(rs_allocation a, float4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double2(rs_allocation a, double2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double3(rs_allocation a, double3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double4(rs_allocation a, double4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char2(rs_allocation a, char2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char3(rs_allocation a, char3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char4(rs_allocation a, char4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar2(rs_allocation a, uchar2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar3(rs_allocation a, uchar3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar4(rs_allocation a, uchar4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short2(rs_allocation a, short2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short3(rs_allocation a, short3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short4(rs_allocation a, short4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort2(rs_allocation a, ushort2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort3(rs_allocation a, ushort3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort4(rs_allocation a, ushort4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int2(rs_allocation a, int2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int3(rs_allocation a, int3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int4(rs_allocation a, int4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint2(rs_allocation a, uint2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint3(rs_allocation a, uint3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint4(rs_allocation a, uint4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long2(rs_allocation a, long2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long3(rs_allocation a, long3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long4(rs_allocation a, long4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong2(rs_allocation a, ulong2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong3(rs_allocation a, ulong3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong4(rs_allocation a, ulong4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float2(rs_allocation a, float2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float3(rs_allocation a, float3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float4(rs_allocation a, float4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double2(rs_allocation a, double2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double3(rs_allocation a, double3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double4(rs_allocation a, double4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char2(rs_allocation a, char2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char3(rs_allocation a, char3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char4(rs_allocation a, char4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar2(rs_allocation a, uchar2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar3(rs_allocation a, uchar3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar4(rs_allocation a, uchar4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short2(rs_allocation a, short2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short3(rs_allocation a, short3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short4(rs_allocation a, short4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort2(rs_allocation a, ushort2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort3(rs_allocation a, ushort3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort4(rs_allocation a, ushort4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int2(rs_allocation a, int2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int3(rs_allocation a, int3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int4(rs_allocation a, int4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint2(rs_allocation a, uint2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint3(rs_allocation a, uint3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint4(rs_allocation a, uint4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long2(rs_allocation a, long2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long3(rs_allocation a, long3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long4(rs_allocation a, long4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong2(rs_allocation a, ulong2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong3(rs_allocation a, ulong3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong4(rs_allocation a, ulong4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float2(rs_allocation a, float2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float3(rs_allocation a, float3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_float4(rs_allocation a, float4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double2(rs_allocation a, double2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double3(rs_allocation a, double3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_double4(rs_allocation a, double4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char2(rs_allocation a, char2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char3(rs_allocation a, char3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_char4(rs_allocation a, char4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar2(rs_allocation a, uchar2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar3(rs_allocation a, uchar3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uchar4(rs_allocation a, uchar4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short2(rs_allocation a, short2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short3(rs_allocation a, short3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_short4(rs_allocation a, short4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort2(rs_allocation a, ushort2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort3(rs_allocation a, ushort3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ushort4(rs_allocation a, ushort4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int2(rs_allocation a, int2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int3(rs_allocation a, int3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_int4(rs_allocation a, int4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint2(rs_allocation a, uint2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint3(rs_allocation a, uint3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_uint4(rs_allocation a, uint4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long2(rs_allocation a, long2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long3(rs_allocation a, long3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_long4(rs_allocation a, long4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong2(rs_allocation a, ulong2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong3(rs_allocation a, ulong3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 22))
extern void __attribute__((overloadable))
    rsAllocationVStoreX_ulong4(rs_allocation a, ulong4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

/*
 * rsGetElementAt: Return a cell from an allocation
 *
 * This function extracts a single cell from an allocation.
 *
 * When retrieving from a three dimensional allocations, use the x, y, z variant.
 * Similarly, use the x, y variant for two dimensional allocations and x for the
 * mono dimensional allocations.
 *
 * This function has two styles.  One returns the address of the value using a void*,
 * the other returns the actual value, e.g. rsGetElementAt() vs. rsGetElementAt_int4().
 * For primitive types, always use the latter as it is more efficient.
 */
extern const void* __attribute__((overloadable))
    rsGetElementAt(rs_allocation a, uint32_t x);

extern const void* __attribute__((overloadable))
    rsGetElementAt(rs_allocation a, uint32_t x, uint32_t y);

extern const void* __attribute__((overloadable))
    rsGetElementAt(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x) {
    return ((float *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x) {
    return ((float2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x) {
    return ((float3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x) {
    return ((float4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x) {
    return ((double *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x) {
    return ((double2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x) {
    return ((double3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x) {
    return ((double4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x) {
    return ((char *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x) {
    return ((char2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x) {
    return ((char3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x) {
    return ((char4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x) {
    return ((uchar *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x) {
    return ((uchar2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x) {
    return ((uchar3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x) {
    return ((uchar4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x) {
    return ((short *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x) {
    return ((short2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x) {
    return ((short3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x) {
    return ((short4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x) {
    return ((ushort *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x) {
    return ((ushort2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x) {
    return ((ushort3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x) {
    return ((ushort4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x) {
    return ((int *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x) {
    return ((int2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x) {
    return ((int3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x) {
    return ((int4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x) {
    return ((uint *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x) {
    return ((uint2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x) {
    return ((uint3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x) {
    return ((uint4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x) {
    return ((long *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x) {
    return ((long2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x) {
    return ((long3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x) {
    return ((long4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x) {
    return ((ulong *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x) {
    return ((ulong2 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x) {
    return ((ulong3 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x) {
    return ((ulong4 *)rsGetElementAt(a, x))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x, uint32_t y) {
    return ((float *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((float2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((float3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((float4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x, uint32_t y) {
    return ((double *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((double2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((double3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((double4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x, uint32_t y) {
    return ((char *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((char2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((char3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((char4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uchar *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uchar2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uchar3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uchar4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x, uint32_t y) {
    return ((short *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((short2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((short3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((short4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ushort *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ushort2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ushort3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ushort4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x, uint32_t y) {
    return ((int *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((int2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((int3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((int4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uint *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uint2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uint3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((uint4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x, uint32_t y) {
    return ((long *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((long2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((long3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((long4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ulong *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ulong2 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ulong3 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x, uint32_t y) {
    return ((ulong4 *)rsGetElementAt(a, x, y))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((float *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((float2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((float3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((float4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((double *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((double2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((double3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((double4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((char *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((char2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((char3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((char4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uchar *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uchar2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uchar3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uchar4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((short *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((short2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((short3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((short4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ushort *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ushort2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ushort3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ushort4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((int *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((int2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((int3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((int4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uint *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uint2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uint3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((uint4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((long *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((long2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((long3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((long4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ulong *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ulong2 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ulong3 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if !defined(RS_VERSION) || (RS_VERSION <= 17)
static inline ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
    return ((ulong4 *)rsGetElementAt(a, x, y, z))[0];
}
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float __attribute__((overloadable))
    rsGetElementAt_float(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float2 __attribute__((overloadable))
    rsGetElementAt_float2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float3 __attribute__((overloadable))
    rsGetElementAt_float3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern float4 __attribute__((overloadable))
    rsGetElementAt_float4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double __attribute__((overloadable))
    rsGetElementAt_double(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double2 __attribute__((overloadable))
    rsGetElementAt_double2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double3 __attribute__((overloadable))
    rsGetElementAt_double3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern double4 __attribute__((overloadable))
    rsGetElementAt_double4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char __attribute__((overloadable))
    rsGetElementAt_char(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char2 __attribute__((overloadable))
    rsGetElementAt_char2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char3 __attribute__((overloadable))
    rsGetElementAt_char3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern char4 __attribute__((overloadable))
    rsGetElementAt_char4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAt_uchar(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar2 __attribute__((overloadable))
    rsGetElementAt_uchar2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar3 __attribute__((overloadable))
    rsGetElementAt_uchar3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar4 __attribute__((overloadable))
    rsGetElementAt_uchar4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short __attribute__((overloadable))
    rsGetElementAt_short(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short2 __attribute__((overloadable))
    rsGetElementAt_short2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short3 __attribute__((overloadable))
    rsGetElementAt_short3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern short4 __attribute__((overloadable))
    rsGetElementAt_short4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort __attribute__((overloadable))
    rsGetElementAt_ushort(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort2 __attribute__((overloadable))
    rsGetElementAt_ushort2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort3 __attribute__((overloadable))
    rsGetElementAt_ushort3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ushort4 __attribute__((overloadable))
    rsGetElementAt_ushort4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int __attribute__((overloadable))
    rsGetElementAt_int(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int2 __attribute__((overloadable))
    rsGetElementAt_int2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int3 __attribute__((overloadable))
    rsGetElementAt_int3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern int4 __attribute__((overloadable))
    rsGetElementAt_int4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint __attribute__((overloadable))
    rsGetElementAt_uint(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint2 __attribute__((overloadable))
    rsGetElementAt_uint2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint3 __attribute__((overloadable))
    rsGetElementAt_uint3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uint4 __attribute__((overloadable))
    rsGetElementAt_uint4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long __attribute__((overloadable))
    rsGetElementAt_long(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long2 __attribute__((overloadable))
    rsGetElementAt_long2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long3 __attribute__((overloadable))
    rsGetElementAt_long3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern long4 __attribute__((overloadable))
    rsGetElementAt_long4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong __attribute__((overloadable))
    rsGetElementAt_ulong(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong2 __attribute__((overloadable))
    rsGetElementAt_ulong2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong3 __attribute__((overloadable))
    rsGetElementAt_ulong3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern ulong4 __attribute__((overloadable))
    rsGetElementAt_ulong4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half __attribute__((overloadable))
    rsGetElementAt_half(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half2 __attribute__((overloadable))
    rsGetElementAt_half2(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half3 __attribute__((overloadable))
    rsGetElementAt_half3(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half4 __attribute__((overloadable))
    rsGetElementAt_half4(rs_allocation a, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half __attribute__((overloadable))
    rsGetElementAt_half(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half2 __attribute__((overloadable))
    rsGetElementAt_half2(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half3 __attribute__((overloadable))
    rsGetElementAt_half3(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half4 __attribute__((overloadable))
    rsGetElementAt_half4(rs_allocation a, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half __attribute__((overloadable))
    rsGetElementAt_half(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half2 __attribute__((overloadable))
    rsGetElementAt_half2(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half3 __attribute__((overloadable))
    rsGetElementAt_half3(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern half4 __attribute__((overloadable))
    rsGetElementAt_half4(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
#endif

/*
 * rsGetElementAtYuv_uchar_U: Get the U component of an allocation of YUVs
 *
 * Extracts the U component of a single YUV value from a 2D allocation of YUVs.
 *
 * Inside an allocation, Y, U, and V components may be stored if different planes
 * and at different resolutions.  The x, y coordinates provided here are in the
 * dimensions of the Y plane.
 *
 * See rsGetElementAtYuv_uchar_Y().
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_U(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * rsGetElementAtYuv_uchar_V: Get the V component of an allocation of YUVs
 *
 * Extracts the V component of a single YUV value from a 2D allocation of YUVs.
 *
 * Inside an allocation, Y, U, and V components may be stored if different planes
 * and at different resolutions.  The x, y coordinates provided here are in the
 * dimensions of the Y plane.
 *
 * See rsGetElementAtYuv_uchar_Y().
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_V(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * rsGetElementAtYuv_uchar_Y: Get the Y component of an allocation of YUVs
 *
 * Extracts the Y component of a single YUV value from a 2D allocation of YUVs.
 *
 * Inside an allocation, Y, U, and V components may be stored if different planes
 * and at different resolutions.  The x, y coordinates provided here are in the
 * dimensions of the Y plane.
 *
 * See rsGetElementAtYuv_uchar_U() and rsGetElementAtYuv_uchar_V().
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_Y(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * rsSample: Sample a value from a texture allocation
 *
 * Fetches a value from a texture allocation in a way described by the sampler.
 *
 * If your allocation is 1D, use the variant with float for location.  For 2D,
 * use the float2 variant.
 *
 * See android.renderscript.Sampler for more details.
 *
 * Parameters:
 *   a: Allocation to sample from.
 *   s: Sampler state.
 *   location: Location to sample from.
 *   lod: Mip level to sample from, for fractional values mip levels will be interpolated if RS_SAMPLER_LINEAR_MIP_LINEAR is used.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern float4 __attribute__((overloadable))
    rsSample(rs_allocation a, rs_sampler s, float location);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern float4 __attribute__((overloadable))
    rsSample(rs_allocation a, rs_sampler s, float location, float lod);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern float4 __attribute__((overloadable))
    rsSample(rs_allocation a, rs_sampler s, float2 location);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern float4 __attribute__((overloadable))
    rsSample(rs_allocation a, rs_sampler s, float2 location, float lod);
#endif

/*
 * rsSetElementAt: Set a cell of an allocation
 *
 * This function stores a value into a single cell of an allocation.
 *
 * When storing into a three dimensional allocations, use the x, y, z variant.
 * Similarly, use the x, y variant for two dimensional allocations and x for
 * the mono dimensional allocations.
 *
 * This function has two styles.  One passes the value to be stored using a void*,
 * the other has the actual value as an argument, e.g. rsSetElementAt() vs.
 * rsSetElementAt_int4().  For primitive types, always use the latter as it is
 * more efficient.
 *
 * See also rsGetElementAt().
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt(rs_allocation a, void* ptr, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt(rs_allocation a, void* ptr, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float(rs_allocation a, float val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float2(rs_allocation a, float2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float3(rs_allocation a, float3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float4(rs_allocation a, float4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double(rs_allocation a, double val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double2(rs_allocation a, double2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double3(rs_allocation a, double3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double4(rs_allocation a, double4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char(rs_allocation a, char val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char2(rs_allocation a, char2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char3(rs_allocation a, char3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char4(rs_allocation a, char4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar(rs_allocation a, uchar val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar2(rs_allocation a, uchar2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar3(rs_allocation a, uchar3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar4(rs_allocation a, uchar4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short(rs_allocation a, short val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short2(rs_allocation a, short2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short3(rs_allocation a, short3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short4(rs_allocation a, short4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort(rs_allocation a, ushort val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort2(rs_allocation a, ushort2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort3(rs_allocation a, ushort3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort4(rs_allocation a, ushort4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int(rs_allocation a, int val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int2(rs_allocation a, int2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int3(rs_allocation a, int3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int4(rs_allocation a, int4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint(rs_allocation a, uint val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint2(rs_allocation a, uint2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint3(rs_allocation a, uint3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint4(rs_allocation a, uint4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long(rs_allocation a, long val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long2(rs_allocation a, long2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long3(rs_allocation a, long3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long4(rs_allocation a, long4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong(rs_allocation a, ulong val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong2(rs_allocation a, ulong2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong3(rs_allocation a, ulong3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong4(rs_allocation a, ulong4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float(rs_allocation a, float val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float2(rs_allocation a, float2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float3(rs_allocation a, float3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float4(rs_allocation a, float4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double(rs_allocation a, double val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double2(rs_allocation a, double2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double3(rs_allocation a, double3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double4(rs_allocation a, double4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char(rs_allocation a, char val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char2(rs_allocation a, char2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char3(rs_allocation a, char3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char4(rs_allocation a, char4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar(rs_allocation a, uchar val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar2(rs_allocation a, uchar2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar3(rs_allocation a, uchar3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar4(rs_allocation a, uchar4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short(rs_allocation a, short val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short2(rs_allocation a, short2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short3(rs_allocation a, short3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short4(rs_allocation a, short4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort(rs_allocation a, ushort val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort2(rs_allocation a, ushort2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort3(rs_allocation a, ushort3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort4(rs_allocation a, ushort4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int(rs_allocation a, int val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int2(rs_allocation a, int2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int3(rs_allocation a, int3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int4(rs_allocation a, int4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint(rs_allocation a, uint val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint2(rs_allocation a, uint2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint3(rs_allocation a, uint3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint4(rs_allocation a, uint4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long(rs_allocation a, long val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long2(rs_allocation a, long2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long3(rs_allocation a, long3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long4(rs_allocation a, long4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong(rs_allocation a, ulong val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong2(rs_allocation a, ulong2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong3(rs_allocation a, ulong3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong4(rs_allocation a, ulong4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float(rs_allocation a, float val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float2(rs_allocation a, float2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float3(rs_allocation a, float3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_float4(rs_allocation a, float4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double(rs_allocation a, double val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double2(rs_allocation a, double2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double3(rs_allocation a, double3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_double4(rs_allocation a, double4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char(rs_allocation a, char val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char2(rs_allocation a, char2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char3(rs_allocation a, char3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_char4(rs_allocation a, char4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar(rs_allocation a, uchar val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar2(rs_allocation a, uchar2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar3(rs_allocation a, uchar3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uchar4(rs_allocation a, uchar4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short(rs_allocation a, short val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short2(rs_allocation a, short2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short3(rs_allocation a, short3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_short4(rs_allocation a, short4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort(rs_allocation a, ushort val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort2(rs_allocation a, ushort2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort3(rs_allocation a, ushort3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ushort4(rs_allocation a, ushort4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int(rs_allocation a, int val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int2(rs_allocation a, int2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int3(rs_allocation a, int3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_int4(rs_allocation a, int4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint(rs_allocation a, uint val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint2(rs_allocation a, uint2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint3(rs_allocation a, uint3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_uint4(rs_allocation a, uint4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long(rs_allocation a, long val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long2(rs_allocation a, long2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long3(rs_allocation a, long3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_long4(rs_allocation a, long4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong(rs_allocation a, ulong val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong2(rs_allocation a, ulong2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong3(rs_allocation a, ulong3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern void __attribute__((overloadable))
    rsSetElementAt_ulong4(rs_allocation a, ulong4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half(rs_allocation a, half val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half2(rs_allocation a, half2 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half3(rs_allocation a, half3 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half4(rs_allocation a, half4 val, uint32_t x);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half(rs_allocation a, half val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half2(rs_allocation a, half2 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half3(rs_allocation a, half3 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half4(rs_allocation a, half4 val, uint32_t x, uint32_t y);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half(rs_allocation a, half val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half2(rs_allocation a, half2 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half3(rs_allocation a, half3 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#if (defined(RS_VERSION) && (RS_VERSION >= 23))
extern void __attribute__((overloadable))
    rsSetElementAt_half4(rs_allocation a, half4 val, uint32_t x, uint32_t y, uint32_t z);
#endif

#endif // RENDERSCRIPT_RS_ALLOCATION_DATA_RSH