/*
 * 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/gen_runtime.

/*
 * rs_allocation_data.rsh: Allocation routines
 *
 * TODO Adjust documentation.
 *
 * Functions that can be used to query the characteristics of an allocation,
 * to set and get elements of the allocation.
 */
#ifndef RENDERSCRIPT_RS_ALLOCATION_DATA_RSH
#define RENDERSCRIPT_RS_ALLOCATION_DATA_RSH

/*
 * rsAllocationCopy1DRange: Copy consecutive values between allocations
 *
 * Copies part of an allocation into another allocation.
 *
 * The two allocations must be different.  Using this function to copy whithin
 * the same allocation yields undefined results.
 *
 * Parameters:
 *   dstAlloc Allocation to copy data into.
 *   dstOff The offset of the first element to be copied in the destination allocation.
 *   dstMip Mip level in the destination allocation.
 *   count The number of elements to be copied.
 *   srcAlloc The source data allocation.
 *   srcOff The offset of the first element in data to be copied in the source allocation.
 *   srcMip Mip level in the source allocation.
 */
#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 between allocations
 *
 * Copy a rectangular region into the allocation from another allocation.
 *
 * The two allocations must be different.  Using this function to copy whithin
 * the same allocation yields undefined results.
 *
 * Parameters:
 *   dstAlloc Allocation to copy data into.
 *   dstXoff X offset of the region to update in the destination allocation.
 *   dstYoff Y offset of the region to update in the destination allocation.
 *   dstMip Mip level in the destination allocation.
 *   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 The source data allocation.
 *   srcXoff X offset in data of the source allocation.
 *   srcYoff Y offset in data of the source allocation.
 *   srcMip Mip level in the source allocation.
 *   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

/*
 * Get a single element from an allocation.
 */
#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

/*
 * Set a single element of an allocation.
 */
#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: Get an element
 *
 * Extract a single element from an allocation.
 */
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

/*
 * Extract a single element from an allocation.
 *
 * Coordinates are in the dimensions of the Y plane
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_U(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * Extract a single element from an allocation.
 *
 * Coordinates are in the dimensions of the Y plane
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_V(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * Extract a single element from an allocation.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 18))
extern uchar __attribute__((overloadable))
    rsGetElementAtYuv_uchar_Y(rs_allocation a, uint32_t x, uint32_t y);
#endif

/*
 * Fetch 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.
 *
 * 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 an element
 *
 * Set single element of an allocation.
 */
#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

#endif // RENDERSCRIPT_RS_ALLOCATION_DATA_RSH
