clang 19.0.0git
opencl-c.h
Go to the documentation of this file.
1//===--- opencl-c.h - OpenCL C language builtin function header -----------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _OPENCL_H_
10#define _OPENCL_H_
11
12#include "opencl-c-base.h"
13
14#if defined(__opencl_c_images)
15#ifndef cl_khr_depth_images
16#define cl_khr_depth_images
17#endif //cl_khr_depth_images
18#endif //defined(__opencl_c_images)
19
20#if __OPENCL_C_VERSION__ < CL_VERSION_2_0
21#ifdef cl_khr_3d_image_writes
22#pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable
23#endif //cl_khr_3d_image_writes
24#endif //__OPENCL_C_VERSION__ < CL_VERSION_2_0
25
26#if (defined(__OPENCL_CPP_VERSION__) || \
27 (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)) && \
28 (defined(__SPIR__) || defined(__SPIRV__))
29#pragma OPENCL EXTENSION cl_intel_planar_yuv : begin
30#pragma OPENCL EXTENSION cl_intel_planar_yuv : end
31#endif // (defined(__OPENCL_CPP_VERSION__) ||
32 // (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)) &&
33 // (defined(__SPIR__) || defined(__SPIRV__))
34
35#define __ovld __attribute__((overloadable))
36#define __conv __attribute__((convergent))
37
38// Optimizations
39#define __purefn __attribute__((pure))
40#define __cnfn __attribute__((const))
41
42
43// OpenCL v1.1/1.2/2.0 s6.2.3 - Explicit conversions
44
225
4179ushort16 __ovld __cnfn convert_ushort16(ushort16);
4636
4637// Conversions with double data type parameters or return value.
4638
4639#ifdef cl_khr_fp64
4640#pragma OPENCL EXTENSION cl_khr_fp64 : enable
4641char __ovld __cnfn convert_char(double);
4642char __ovld __cnfn convert_char_rte(double);
4643char __ovld __cnfn convert_char_rtn(double);
4644char __ovld __cnfn convert_char_rtp(double);
4645char __ovld __cnfn convert_char_rtz(double);
4646char __ovld __cnfn convert_char_sat(double);
4651char2 __ovld __cnfn convert_char2(double2);
4652char2 __ovld __cnfn convert_char2_rte(double2);
4653char2 __ovld __cnfn convert_char2_rtn(double2);
4654char2 __ovld __cnfn convert_char2_rtp(double2);
4655char2 __ovld __cnfn convert_char2_rtz(double2);
4656char2 __ovld __cnfn convert_char2_sat(double2);
4657char2 __ovld __cnfn convert_char2_sat_rte(double2);
4658char2 __ovld __cnfn convert_char2_sat_rtn(double2);
4659char2 __ovld __cnfn convert_char2_sat_rtp(double2);
4660char2 __ovld __cnfn convert_char2_sat_rtz(double2);
4661char3 __ovld __cnfn convert_char3(double3);
4662char3 __ovld __cnfn convert_char3_rte(double3);
4663char3 __ovld __cnfn convert_char3_rtn(double3);
4664char3 __ovld __cnfn convert_char3_rtp(double3);
4665char3 __ovld __cnfn convert_char3_rtz(double3);
4666char3 __ovld __cnfn convert_char3_sat(double3);
4667char3 __ovld __cnfn convert_char3_sat_rte(double3);
4668char3 __ovld __cnfn convert_char3_sat_rtn(double3);
4669char3 __ovld __cnfn convert_char3_sat_rtp(double3);
4670char3 __ovld __cnfn convert_char3_sat_rtz(double3);
4671char4 __ovld __cnfn convert_char4(double4);
4672char4 __ovld __cnfn convert_char4_rte(double4);
4673char4 __ovld __cnfn convert_char4_rtn(double4);
4674char4 __ovld __cnfn convert_char4_rtp(double4);
4675char4 __ovld __cnfn convert_char4_rtz(double4);
4676char4 __ovld __cnfn convert_char4_sat(double4);
4677char4 __ovld __cnfn convert_char4_sat_rte(double4);
4678char4 __ovld __cnfn convert_char4_sat_rtn(double4);
4679char4 __ovld __cnfn convert_char4_sat_rtp(double4);
4680char4 __ovld __cnfn convert_char4_sat_rtz(double4);
4681char8 __ovld __cnfn convert_char8(double8);
4682char8 __ovld __cnfn convert_char8_rte(double8);
4683char8 __ovld __cnfn convert_char8_rtn(double8);
4684char8 __ovld __cnfn convert_char8_rtp(double8);
4685char8 __ovld __cnfn convert_char8_rtz(double8);
4686char8 __ovld __cnfn convert_char8_sat(double8);
4687char8 __ovld __cnfn convert_char8_sat_rte(double8);
4688char8 __ovld __cnfn convert_char8_sat_rtn(double8);
4689char8 __ovld __cnfn convert_char8_sat_rtp(double8);
4690char8 __ovld __cnfn convert_char8_sat_rtz(double8);
4691char16 __ovld __cnfn convert_char16(double16);
4692char16 __ovld __cnfn convert_char16_rte(double16);
4693char16 __ovld __cnfn convert_char16_rtn(double16);
4694char16 __ovld __cnfn convert_char16_rtp(double16);
4695char16 __ovld __cnfn convert_char16_rtz(double16);
4696char16 __ovld __cnfn convert_char16_sat(double16);
4697char16 __ovld __cnfn convert_char16_sat_rte(double16);
4698char16 __ovld __cnfn convert_char16_sat_rtn(double16);
4699char16 __ovld __cnfn convert_char16_sat_rtp(double16);
4700char16 __ovld __cnfn convert_char16_sat_rtz(double16);
4701
4712uchar2 __ovld __cnfn convert_uchar2(double2);
4713uchar2 __ovld __cnfn convert_uchar2_rte(double2);
4714uchar2 __ovld __cnfn convert_uchar2_rtn(double2);
4715uchar2 __ovld __cnfn convert_uchar2_rtp(double2);
4716uchar2 __ovld __cnfn convert_uchar2_rtz(double2);
4717uchar2 __ovld __cnfn convert_uchar2_sat(double2);
4718uchar2 __ovld __cnfn convert_uchar2_sat_rte(double2);
4719uchar2 __ovld __cnfn convert_uchar2_sat_rtn(double2);
4720uchar2 __ovld __cnfn convert_uchar2_sat_rtp(double2);
4721uchar2 __ovld __cnfn convert_uchar2_sat_rtz(double2);
4722uchar3 __ovld __cnfn convert_uchar3(double3);
4723uchar3 __ovld __cnfn convert_uchar3_rte(double3);
4724uchar3 __ovld __cnfn convert_uchar3_rtn(double3);
4725uchar3 __ovld __cnfn convert_uchar3_rtp(double3);
4726uchar3 __ovld __cnfn convert_uchar3_rtz(double3);
4727uchar3 __ovld __cnfn convert_uchar3_sat(double3);
4728uchar3 __ovld __cnfn convert_uchar3_sat_rte(double3);
4729uchar3 __ovld __cnfn convert_uchar3_sat_rtn(double3);
4730uchar3 __ovld __cnfn convert_uchar3_sat_rtp(double3);
4731uchar3 __ovld __cnfn convert_uchar3_sat_rtz(double3);
4732uchar4 __ovld __cnfn convert_uchar4(double4);
4733uchar4 __ovld __cnfn convert_uchar4_rte(double4);
4734uchar4 __ovld __cnfn convert_uchar4_rtn(double4);
4735uchar4 __ovld __cnfn convert_uchar4_rtp(double4);
4736uchar4 __ovld __cnfn convert_uchar4_rtz(double4);
4737uchar4 __ovld __cnfn convert_uchar4_sat(double4);
4738uchar4 __ovld __cnfn convert_uchar4_sat_rte(double4);
4739uchar4 __ovld __cnfn convert_uchar4_sat_rtn(double4);
4740uchar4 __ovld __cnfn convert_uchar4_sat_rtp(double4);
4741uchar4 __ovld __cnfn convert_uchar4_sat_rtz(double4);
4742uchar8 __ovld __cnfn convert_uchar8(double8);
4743uchar8 __ovld __cnfn convert_uchar8_rte(double8);
4744uchar8 __ovld __cnfn convert_uchar8_rtn(double8);
4745uchar8 __ovld __cnfn convert_uchar8_rtp(double8);
4746uchar8 __ovld __cnfn convert_uchar8_rtz(double8);
4747uchar8 __ovld __cnfn convert_uchar8_sat(double8);
4748uchar8 __ovld __cnfn convert_uchar8_sat_rte(double8);
4749uchar8 __ovld __cnfn convert_uchar8_sat_rtn(double8);
4750uchar8 __ovld __cnfn convert_uchar8_sat_rtp(double8);
4751uchar8 __ovld __cnfn convert_uchar8_sat_rtz(double8);
4752uchar16 __ovld __cnfn convert_uchar16(double16);
4753uchar16 __ovld __cnfn convert_uchar16_rte(double16);
4754uchar16 __ovld __cnfn convert_uchar16_rtn(double16);
4755uchar16 __ovld __cnfn convert_uchar16_rtp(double16);
4756uchar16 __ovld __cnfn convert_uchar16_rtz(double16);
4757uchar16 __ovld __cnfn convert_uchar16_sat(double16);
4758uchar16 __ovld __cnfn convert_uchar16_sat_rte(double16);
4759uchar16 __ovld __cnfn convert_uchar16_sat_rtn(double16);
4760uchar16 __ovld __cnfn convert_uchar16_sat_rtp(double16);
4761uchar16 __ovld __cnfn convert_uchar16_sat_rtz(double16);
4762
4763short __ovld __cnfn convert_short(double);
4764short __ovld __cnfn convert_short_rte(double);
4765short __ovld __cnfn convert_short_rtn(double);
4766short __ovld __cnfn convert_short_rtp(double);
4767short __ovld __cnfn convert_short_rtz(double);
4768short __ovld __cnfn convert_short_sat(double);
4769short __ovld __cnfn convert_short_sat_rte(double);
4770short __ovld __cnfn convert_short_sat_rtn(double);
4771short __ovld __cnfn convert_short_sat_rtp(double);
4772short __ovld __cnfn convert_short_sat_rtz(double);
4773short2 __ovld __cnfn convert_short2(double2);
4774short2 __ovld __cnfn convert_short2_rte(double2);
4775short2 __ovld __cnfn convert_short2_rtn(double2);
4776short2 __ovld __cnfn convert_short2_rtp(double2);
4777short2 __ovld __cnfn convert_short2_rtz(double2);
4778short2 __ovld __cnfn convert_short2_sat(double2);
4779short2 __ovld __cnfn convert_short2_sat_rte(double2);
4780short2 __ovld __cnfn convert_short2_sat_rtn(double2);
4781short2 __ovld __cnfn convert_short2_sat_rtp(double2);
4782short2 __ovld __cnfn convert_short2_sat_rtz(double2);
4783short3 __ovld __cnfn convert_short3(double3);
4784short3 __ovld __cnfn convert_short3_rte(double3);
4785short3 __ovld __cnfn convert_short3_rtn(double3);
4786short3 __ovld __cnfn convert_short3_rtp(double3);
4787short3 __ovld __cnfn convert_short3_rtz(double3);
4788short3 __ovld __cnfn convert_short3_sat(double3);
4789short3 __ovld __cnfn convert_short3_sat_rte(double3);
4790short3 __ovld __cnfn convert_short3_sat_rtn(double3);
4791short3 __ovld __cnfn convert_short3_sat_rtp(double3);
4792short3 __ovld __cnfn convert_short3_sat_rtz(double3);
4793short4 __ovld __cnfn convert_short4(double4);
4794short4 __ovld __cnfn convert_short4_rte(double4);
4795short4 __ovld __cnfn convert_short4_rtn(double4);
4796short4 __ovld __cnfn convert_short4_rtp(double4);
4797short4 __ovld __cnfn convert_short4_rtz(double4);
4798short4 __ovld __cnfn convert_short4_sat(double4);
4799short4 __ovld __cnfn convert_short4_sat_rte(double4);
4800short4 __ovld __cnfn convert_short4_sat_rtn(double4);
4801short4 __ovld __cnfn convert_short4_sat_rtp(double4);
4802short4 __ovld __cnfn convert_short4_sat_rtz(double4);
4803short8 __ovld __cnfn convert_short8(double8);
4804short8 __ovld __cnfn convert_short8_rte(double8);
4805short8 __ovld __cnfn convert_short8_rtn(double8);
4806short8 __ovld __cnfn convert_short8_rtp(double8);
4807short8 __ovld __cnfn convert_short8_rtz(double8);
4808short8 __ovld __cnfn convert_short8_sat(double8);
4809short8 __ovld __cnfn convert_short8_sat_rte(double8);
4810short8 __ovld __cnfn convert_short8_sat_rtn(double8);
4811short8 __ovld __cnfn convert_short8_sat_rtp(double8);
4812short8 __ovld __cnfn convert_short8_sat_rtz(double8);
4813short16 __ovld __cnfn convert_short16(double16);
4814short16 __ovld __cnfn convert_short16_rte(double16);
4815short16 __ovld __cnfn convert_short16_rtn(double16);
4816short16 __ovld __cnfn convert_short16_rtp(double16);
4817short16 __ovld __cnfn convert_short16_rtz(double16);
4818short16 __ovld __cnfn convert_short16_sat(double16);
4819short16 __ovld __cnfn convert_short16_sat_rte(double16);
4820short16 __ovld __cnfn convert_short16_sat_rtn(double16);
4821short16 __ovld __cnfn convert_short16_sat_rtp(double16);
4822short16 __ovld __cnfn convert_short16_sat_rtz(double16);
4823
4834ushort2 __ovld __cnfn convert_ushort2(double2);
4835ushort2 __ovld __cnfn convert_ushort2_rte(double2);
4836ushort2 __ovld __cnfn convert_ushort2_rtn(double2);
4837ushort2 __ovld __cnfn convert_ushort2_rtp(double2);
4838ushort2 __ovld __cnfn convert_ushort2_rtz(double2);
4839ushort2 __ovld __cnfn convert_ushort2_sat(double2);
4840ushort2 __ovld __cnfn convert_ushort2_sat_rte(double2);
4841ushort2 __ovld __cnfn convert_ushort2_sat_rtn(double2);
4842ushort2 __ovld __cnfn convert_ushort2_sat_rtp(double2);
4843ushort2 __ovld __cnfn convert_ushort2_sat_rtz(double2);
4844ushort3 __ovld __cnfn convert_ushort3(double3);
4845ushort3 __ovld __cnfn convert_ushort3_rte(double3);
4846ushort3 __ovld __cnfn convert_ushort3_rtn(double3);
4847ushort3 __ovld __cnfn convert_ushort3_rtp(double3);
4848ushort3 __ovld __cnfn convert_ushort3_rtz(double3);
4849ushort3 __ovld __cnfn convert_ushort3_sat(double3);
4850ushort3 __ovld __cnfn convert_ushort3_sat_rte(double3);
4851ushort3 __ovld __cnfn convert_ushort3_sat_rtn(double3);
4852ushort3 __ovld __cnfn convert_ushort3_sat_rtp(double3);
4853ushort3 __ovld __cnfn convert_ushort3_sat_rtz(double3);
4854ushort4 __ovld __cnfn convert_ushort4(double4);
4855ushort4 __ovld __cnfn convert_ushort4_rte(double4);
4856ushort4 __ovld __cnfn convert_ushort4_rtn(double4);
4857ushort4 __ovld __cnfn convert_ushort4_rtp(double4);
4858ushort4 __ovld __cnfn convert_ushort4_rtz(double4);
4859ushort4 __ovld __cnfn convert_ushort4_sat(double4);
4860ushort4 __ovld __cnfn convert_ushort4_sat_rte(double4);
4861ushort4 __ovld __cnfn convert_ushort4_sat_rtn(double4);
4862ushort4 __ovld __cnfn convert_ushort4_sat_rtp(double4);
4863ushort4 __ovld __cnfn convert_ushort4_sat_rtz(double4);
4864ushort8 __ovld __cnfn convert_ushort8(double8);
4865ushort8 __ovld __cnfn convert_ushort8_rte(double8);
4866ushort8 __ovld __cnfn convert_ushort8_rtn(double8);
4867ushort8 __ovld __cnfn convert_ushort8_rtp(double8);
4868ushort8 __ovld __cnfn convert_ushort8_rtz(double8);
4869ushort8 __ovld __cnfn convert_ushort8_sat(double8);
4870ushort8 __ovld __cnfn convert_ushort8_sat_rte(double8);
4871ushort8 __ovld __cnfn convert_ushort8_sat_rtn(double8);
4872ushort8 __ovld __cnfn convert_ushort8_sat_rtp(double8);
4873ushort8 __ovld __cnfn convert_ushort8_sat_rtz(double8);
4874ushort16 __ovld __cnfn convert_ushort16(double16);
4875ushort16 __ovld __cnfn convert_ushort16_rte(double16);
4876ushort16 __ovld __cnfn convert_ushort16_rtn(double16);
4877ushort16 __ovld __cnfn convert_ushort16_rtp(double16);
4878ushort16 __ovld __cnfn convert_ushort16_rtz(double16);
4879ushort16 __ovld __cnfn convert_ushort16_sat(double16);
4880ushort16 __ovld __cnfn convert_ushort16_sat_rte(double16);
4881ushort16 __ovld __cnfn convert_ushort16_sat_rtn(double16);
4882ushort16 __ovld __cnfn convert_ushort16_sat_rtp(double16);
4883ushort16 __ovld __cnfn convert_ushort16_sat_rtz(double16);
4884
4885int __ovld __cnfn convert_int(double);
4886int __ovld __cnfn convert_int_rte(double);
4887int __ovld __cnfn convert_int_rtn(double);
4888int __ovld __cnfn convert_int_rtp(double);
4889int __ovld __cnfn convert_int_rtz(double);
4890int __ovld __cnfn convert_int_sat(double);
4895int2 __ovld __cnfn convert_int2(double2);
4896int2 __ovld __cnfn convert_int2_rte(double2);
4897int2 __ovld __cnfn convert_int2_rtn(double2);
4898int2 __ovld __cnfn convert_int2_rtp(double2);
4899int2 __ovld __cnfn convert_int2_rtz(double2);
4900int2 __ovld __cnfn convert_int2_sat(double2);
4901int2 __ovld __cnfn convert_int2_sat_rte(double2);
4902int2 __ovld __cnfn convert_int2_sat_rtn(double2);
4903int2 __ovld __cnfn convert_int2_sat_rtp(double2);
4904int2 __ovld __cnfn convert_int2_sat_rtz(double2);
4905int3 __ovld __cnfn convert_int3(double3);
4906int3 __ovld __cnfn convert_int3_rte(double3);
4907int3 __ovld __cnfn convert_int3_rtn(double3);
4908int3 __ovld __cnfn convert_int3_rtp(double3);
4909int3 __ovld __cnfn convert_int3_rtz(double3);
4910int3 __ovld __cnfn convert_int3_sat(double3);
4911int3 __ovld __cnfn convert_int3_sat_rte(double3);
4912int3 __ovld __cnfn convert_int3_sat_rtn(double3);
4913int3 __ovld __cnfn convert_int3_sat_rtp(double3);
4914int3 __ovld __cnfn convert_int3_sat_rtz(double3);
4915int4 __ovld __cnfn convert_int4(double4);
4916int4 __ovld __cnfn convert_int4_rte(double4);
4917int4 __ovld __cnfn convert_int4_rtn(double4);
4918int4 __ovld __cnfn convert_int4_rtp(double4);
4919int4 __ovld __cnfn convert_int4_rtz(double4);
4920int4 __ovld __cnfn convert_int4_sat(double4);
4921int4 __ovld __cnfn convert_int4_sat_rte(double4);
4922int4 __ovld __cnfn convert_int4_sat_rtn(double4);
4923int4 __ovld __cnfn convert_int4_sat_rtp(double4);
4924int4 __ovld __cnfn convert_int4_sat_rtz(double4);
4925int8 __ovld __cnfn convert_int8(double8);
4926int8 __ovld __cnfn convert_int8_rte(double8);
4927int8 __ovld __cnfn convert_int8_rtn(double8);
4928int8 __ovld __cnfn convert_int8_rtp(double8);
4929int8 __ovld __cnfn convert_int8_rtz(double8);
4930int8 __ovld __cnfn convert_int8_sat(double8);
4931int8 __ovld __cnfn convert_int8_sat_rte(double8);
4932int8 __ovld __cnfn convert_int8_sat_rtn(double8);
4933int8 __ovld __cnfn convert_int8_sat_rtp(double8);
4934int8 __ovld __cnfn convert_int8_sat_rtz(double8);
4935int16 __ovld __cnfn convert_int16(double16);
4936int16 __ovld __cnfn convert_int16_rte(double16);
4937int16 __ovld __cnfn convert_int16_rtn(double16);
4938int16 __ovld __cnfn convert_int16_rtp(double16);
4939int16 __ovld __cnfn convert_int16_rtz(double16);
4940int16 __ovld __cnfn convert_int16_sat(double16);
4941int16 __ovld __cnfn convert_int16_sat_rte(double16);
4942int16 __ovld __cnfn convert_int16_sat_rtn(double16);
4943int16 __ovld __cnfn convert_int16_sat_rtp(double16);
4944int16 __ovld __cnfn convert_int16_sat_rtz(double16);
4945
4956uint2 __ovld __cnfn convert_uint2(double2);
4957uint2 __ovld __cnfn convert_uint2_rte(double2);
4958uint2 __ovld __cnfn convert_uint2_rtn(double2);
4959uint2 __ovld __cnfn convert_uint2_rtp(double2);
4960uint2 __ovld __cnfn convert_uint2_rtz(double2);
4961uint2 __ovld __cnfn convert_uint2_sat(double2);
4962uint2 __ovld __cnfn convert_uint2_sat_rte(double2);
4963uint2 __ovld __cnfn convert_uint2_sat_rtn(double2);
4964uint2 __ovld __cnfn convert_uint2_sat_rtp(double2);
4965uint2 __ovld __cnfn convert_uint2_sat_rtz(double2);
4966uint3 __ovld __cnfn convert_uint3(double3);
4967uint3 __ovld __cnfn convert_uint3_rte(double3);
4968uint3 __ovld __cnfn convert_uint3_rtn(double3);
4969uint3 __ovld __cnfn convert_uint3_rtp(double3);
4970uint3 __ovld __cnfn convert_uint3_rtz(double3);
4971uint3 __ovld __cnfn convert_uint3_sat(double3);
4972uint3 __ovld __cnfn convert_uint3_sat_rte(double3);
4973uint3 __ovld __cnfn convert_uint3_sat_rtn(double3);
4974uint3 __ovld __cnfn convert_uint3_sat_rtp(double3);
4975uint3 __ovld __cnfn convert_uint3_sat_rtz(double3);
4976uint4 __ovld __cnfn convert_uint4(double4);
4977uint4 __ovld __cnfn convert_uint4_rte(double4);
4978uint4 __ovld __cnfn convert_uint4_rtn(double4);
4979uint4 __ovld __cnfn convert_uint4_rtp(double4);
4980uint4 __ovld __cnfn convert_uint4_rtz(double4);
4981uint4 __ovld __cnfn convert_uint4_sat(double4);
4982uint4 __ovld __cnfn convert_uint4_sat_rte(double4);
4983uint4 __ovld __cnfn convert_uint4_sat_rtn(double4);
4984uint4 __ovld __cnfn convert_uint4_sat_rtp(double4);
4985uint4 __ovld __cnfn convert_uint4_sat_rtz(double4);
4986uint8 __ovld __cnfn convert_uint8(double8);
4987uint8 __ovld __cnfn convert_uint8_rte(double8);
4988uint8 __ovld __cnfn convert_uint8_rtn(double8);
4989uint8 __ovld __cnfn convert_uint8_rtp(double8);
4990uint8 __ovld __cnfn convert_uint8_rtz(double8);
4991uint8 __ovld __cnfn convert_uint8_sat(double8);
4992uint8 __ovld __cnfn convert_uint8_sat_rte(double8);
4993uint8 __ovld __cnfn convert_uint8_sat_rtn(double8);
4994uint8 __ovld __cnfn convert_uint8_sat_rtp(double8);
4995uint8 __ovld __cnfn convert_uint8_sat_rtz(double8);
4996uint16 __ovld __cnfn convert_uint16(double16);
4997uint16 __ovld __cnfn convert_uint16_rte(double16);
4998uint16 __ovld __cnfn convert_uint16_rtn(double16);
4999uint16 __ovld __cnfn convert_uint16_rtp(double16);
5000uint16 __ovld __cnfn convert_uint16_rtz(double16);
5001uint16 __ovld __cnfn convert_uint16_sat(double16);
5002uint16 __ovld __cnfn convert_uint16_sat_rte(double16);
5003uint16 __ovld __cnfn convert_uint16_sat_rtn(double16);
5004uint16 __ovld __cnfn convert_uint16_sat_rtp(double16);
5005uint16 __ovld __cnfn convert_uint16_sat_rtz(double16);
5006
5007long __ovld __cnfn convert_long(double);
5008long __ovld __cnfn convert_long_rte(double);
5009long __ovld __cnfn convert_long_rtn(double);
5010long __ovld __cnfn convert_long_rtp(double);
5011long __ovld __cnfn convert_long_rtz(double);
5012long __ovld __cnfn convert_long_sat(double);
5017long2 __ovld __cnfn convert_long2(double2);
5018long2 __ovld __cnfn convert_long2_rte(double2);
5019long2 __ovld __cnfn convert_long2_rtn(double2);
5020long2 __ovld __cnfn convert_long2_rtp(double2);
5021long2 __ovld __cnfn convert_long2_rtz(double2);
5022long2 __ovld __cnfn convert_long2_sat(double2);
5023long2 __ovld __cnfn convert_long2_sat_rte(double2);
5024long2 __ovld __cnfn convert_long2_sat_rtn(double2);
5025long2 __ovld __cnfn convert_long2_sat_rtp(double2);
5026long2 __ovld __cnfn convert_long2_sat_rtz(double2);
5027long3 __ovld __cnfn convert_long3(double3);
5028long3 __ovld __cnfn convert_long3_rte(double3);
5029long3 __ovld __cnfn convert_long3_rtn(double3);
5030long3 __ovld __cnfn convert_long3_rtp(double3);
5031long3 __ovld __cnfn convert_long3_rtz(double3);
5032long3 __ovld __cnfn convert_long3_sat(double3);
5033long3 __ovld __cnfn convert_long3_sat_rte(double3);
5034long3 __ovld __cnfn convert_long3_sat_rtn(double3);
5035long3 __ovld __cnfn convert_long3_sat_rtp(double3);
5036long3 __ovld __cnfn convert_long3_sat_rtz(double3);
5037long4 __ovld __cnfn convert_long4(double4);
5038long4 __ovld __cnfn convert_long4_rte(double4);
5039long4 __ovld __cnfn convert_long4_rtn(double4);
5040long4 __ovld __cnfn convert_long4_rtp(double4);
5041long4 __ovld __cnfn convert_long4_rtz(double4);
5042long4 __ovld __cnfn convert_long4_sat(double4);
5043long4 __ovld __cnfn convert_long4_sat_rte(double4);
5044long4 __ovld __cnfn convert_long4_sat_rtn(double4);
5045long4 __ovld __cnfn convert_long4_sat_rtp(double4);
5046long4 __ovld __cnfn convert_long4_sat_rtz(double4);
5047long8 __ovld __cnfn convert_long8(double8);
5048long8 __ovld __cnfn convert_long8_rte(double8);
5049long8 __ovld __cnfn convert_long8_rtn(double8);
5050long8 __ovld __cnfn convert_long8_rtp(double8);
5051long8 __ovld __cnfn convert_long8_rtz(double8);
5052long8 __ovld __cnfn convert_long8_sat(double8);
5053long8 __ovld __cnfn convert_long8_sat_rte(double8);
5054long8 __ovld __cnfn convert_long8_sat_rtn(double8);
5055long8 __ovld __cnfn convert_long8_sat_rtp(double8);
5056long8 __ovld __cnfn convert_long8_sat_rtz(double8);
5057long16 __ovld __cnfn convert_long16(double16);
5058long16 __ovld __cnfn convert_long16_rte(double16);
5059long16 __ovld __cnfn convert_long16_rtn(double16);
5060long16 __ovld __cnfn convert_long16_rtp(double16);
5061long16 __ovld __cnfn convert_long16_rtz(double16);
5062long16 __ovld __cnfn convert_long16_sat(double16);
5063long16 __ovld __cnfn convert_long16_sat_rte(double16);
5064long16 __ovld __cnfn convert_long16_sat_rtn(double16);
5065long16 __ovld __cnfn convert_long16_sat_rtp(double16);
5066long16 __ovld __cnfn convert_long16_sat_rtz(double16);
5067
5078ulong2 __ovld __cnfn convert_ulong2(double2);
5079ulong2 __ovld __cnfn convert_ulong2_rte(double2);
5080ulong2 __ovld __cnfn convert_ulong2_rtn(double2);
5081ulong2 __ovld __cnfn convert_ulong2_rtp(double2);
5082ulong2 __ovld __cnfn convert_ulong2_rtz(double2);
5083ulong2 __ovld __cnfn convert_ulong2_sat(double2);
5084ulong2 __ovld __cnfn convert_ulong2_sat_rte(double2);
5085ulong2 __ovld __cnfn convert_ulong2_sat_rtn(double2);
5086ulong2 __ovld __cnfn convert_ulong2_sat_rtp(double2);
5087ulong2 __ovld __cnfn convert_ulong2_sat_rtz(double2);
5088ulong3 __ovld __cnfn convert_ulong3(double3);
5089ulong3 __ovld __cnfn convert_ulong3_rte(double3);
5090ulong3 __ovld __cnfn convert_ulong3_rtn(double3);
5091ulong3 __ovld __cnfn convert_ulong3_rtp(double3);
5092ulong3 __ovld __cnfn convert_ulong3_rtz(double3);
5093ulong3 __ovld __cnfn convert_ulong3_sat(double3);
5094ulong3 __ovld __cnfn convert_ulong3_sat_rte(double3);
5095ulong3 __ovld __cnfn convert_ulong3_sat_rtn(double3);
5096ulong3 __ovld __cnfn convert_ulong3_sat_rtp(double3);
5097ulong3 __ovld __cnfn convert_ulong3_sat_rtz(double3);
5098ulong4 __ovld __cnfn convert_ulong4(double4);
5099ulong4 __ovld __cnfn convert_ulong4_rte(double4);
5100ulong4 __ovld __cnfn convert_ulong4_rtn(double4);
5101ulong4 __ovld __cnfn convert_ulong4_rtp(double4);
5102ulong4 __ovld __cnfn convert_ulong4_rtz(double4);
5103ulong4 __ovld __cnfn convert_ulong4_sat(double4);
5104ulong4 __ovld __cnfn convert_ulong4_sat_rte(double4);
5105ulong4 __ovld __cnfn convert_ulong4_sat_rtn(double4);
5106ulong4 __ovld __cnfn convert_ulong4_sat_rtp(double4);
5107ulong4 __ovld __cnfn convert_ulong4_sat_rtz(double4);
5108ulong8 __ovld __cnfn convert_ulong8(double8);
5109ulong8 __ovld __cnfn convert_ulong8_rte(double8);
5110ulong8 __ovld __cnfn convert_ulong8_rtn(double8);
5111ulong8 __ovld __cnfn convert_ulong8_rtp(double8);
5112ulong8 __ovld __cnfn convert_ulong8_rtz(double8);
5113ulong8 __ovld __cnfn convert_ulong8_sat(double8);
5114ulong8 __ovld __cnfn convert_ulong8_sat_rte(double8);
5115ulong8 __ovld __cnfn convert_ulong8_sat_rtn(double8);
5116ulong8 __ovld __cnfn convert_ulong8_sat_rtp(double8);
5117ulong8 __ovld __cnfn convert_ulong8_sat_rtz(double8);
5118ulong16 __ovld __cnfn convert_ulong16(double16);
5119ulong16 __ovld __cnfn convert_ulong16_rte(double16);
5120ulong16 __ovld __cnfn convert_ulong16_rtn(double16);
5121ulong16 __ovld __cnfn convert_ulong16_rtp(double16);
5122ulong16 __ovld __cnfn convert_ulong16_rtz(double16);
5123ulong16 __ovld __cnfn convert_ulong16_sat(double16);
5124ulong16 __ovld __cnfn convert_ulong16_sat_rte(double16);
5125ulong16 __ovld __cnfn convert_ulong16_sat_rtn(double16);
5126ulong16 __ovld __cnfn convert_ulong16_sat_rtp(double16);
5127ulong16 __ovld __cnfn convert_ulong16_sat_rtz(double16);
5128
5129float __ovld __cnfn convert_float(double);
5130float __ovld __cnfn convert_float_rte(double);
5131float __ovld __cnfn convert_float_rtn(double);
5132float __ovld __cnfn convert_float_rtp(double);
5133float __ovld __cnfn convert_float_rtz(double);
5134float2 __ovld __cnfn convert_float2(double2);
5135float2 __ovld __cnfn convert_float2_rte(double2);
5136float2 __ovld __cnfn convert_float2_rtn(double2);
5137float2 __ovld __cnfn convert_float2_rtp(double2);
5138float2 __ovld __cnfn convert_float2_rtz(double2);
5139float3 __ovld __cnfn convert_float3(double3);
5140float3 __ovld __cnfn convert_float3_rte(double3);
5141float3 __ovld __cnfn convert_float3_rtn(double3);
5142float3 __ovld __cnfn convert_float3_rtp(double3);
5143float3 __ovld __cnfn convert_float3_rtz(double3);
5144float4 __ovld __cnfn convert_float4(double4);
5145float4 __ovld __cnfn convert_float4_rte(double4);
5146float4 __ovld __cnfn convert_float4_rtn(double4);
5147float4 __ovld __cnfn convert_float4_rtp(double4);
5148float4 __ovld __cnfn convert_float4_rtz(double4);
5149float8 __ovld __cnfn convert_float8(double8);
5150float8 __ovld __cnfn convert_float8_rte(double8);
5151float8 __ovld __cnfn convert_float8_rtn(double8);
5152float8 __ovld __cnfn convert_float8_rtp(double8);
5153float8 __ovld __cnfn convert_float8_rtz(double8);
5154float16 __ovld __cnfn convert_float16(double16);
5155float16 __ovld __cnfn convert_float16_rte(double16);
5156float16 __ovld __cnfn convert_float16_rtn(double16);
5157float16 __ovld __cnfn convert_float16_rtp(double16);
5158float16 __ovld __cnfn convert_float16_rtz(double16);
5159
5160double __ovld __cnfn convert_double(char);
5161double __ovld __cnfn convert_double(double);
5162double __ovld __cnfn convert_double(float);
5163double __ovld __cnfn convert_double(int);
5164double __ovld __cnfn convert_double(long);
5165double __ovld __cnfn convert_double(short);
5166double __ovld __cnfn convert_double(uchar);
5167double __ovld __cnfn convert_double(uint);
5168double __ovld __cnfn convert_double(ulong);
5169double __ovld __cnfn convert_double(ushort);
5170double __ovld __cnfn convert_double_rte(char);
5171double __ovld __cnfn convert_double_rte(double);
5172double __ovld __cnfn convert_double_rte(float);
5173double __ovld __cnfn convert_double_rte(int);
5174double __ovld __cnfn convert_double_rte(long);
5175double __ovld __cnfn convert_double_rte(short);
5176double __ovld __cnfn convert_double_rte(uchar);
5177double __ovld __cnfn convert_double_rte(uint);
5178double __ovld __cnfn convert_double_rte(ulong);
5179double __ovld __cnfn convert_double_rte(ushort);
5180double __ovld __cnfn convert_double_rtn(char);
5181double __ovld __cnfn convert_double_rtn(double);
5182double __ovld __cnfn convert_double_rtn(float);
5183double __ovld __cnfn convert_double_rtn(int);
5184double __ovld __cnfn convert_double_rtn(long);
5185double __ovld __cnfn convert_double_rtn(short);
5186double __ovld __cnfn convert_double_rtn(uchar);
5187double __ovld __cnfn convert_double_rtn(uint);
5188double __ovld __cnfn convert_double_rtn(ulong);
5189double __ovld __cnfn convert_double_rtn(ushort);
5190double __ovld __cnfn convert_double_rtp(char);
5191double __ovld __cnfn convert_double_rtp(double);
5192double __ovld __cnfn convert_double_rtp(float);
5193double __ovld __cnfn convert_double_rtp(int);
5194double __ovld __cnfn convert_double_rtp(long);
5195double __ovld __cnfn convert_double_rtp(short);
5196double __ovld __cnfn convert_double_rtp(uchar);
5197double __ovld __cnfn convert_double_rtp(uint);
5198double __ovld __cnfn convert_double_rtp(ulong);
5199double __ovld __cnfn convert_double_rtp(ushort);
5200double __ovld __cnfn convert_double_rtz(char);
5201double __ovld __cnfn convert_double_rtz(double);
5202double __ovld __cnfn convert_double_rtz(float);
5203double __ovld __cnfn convert_double_rtz(int);
5204double __ovld __cnfn convert_double_rtz(long);
5205double __ovld __cnfn convert_double_rtz(short);
5206double __ovld __cnfn convert_double_rtz(uchar);
5207double __ovld __cnfn convert_double_rtz(uint);
5208double __ovld __cnfn convert_double_rtz(ulong);
5209double __ovld __cnfn convert_double_rtz(ushort);
5210double2 __ovld __cnfn convert_double2(char2);
5211double2 __ovld __cnfn convert_double2(double2);
5212double2 __ovld __cnfn convert_double2(float2);
5213double2 __ovld __cnfn convert_double2(int2);
5214double2 __ovld __cnfn convert_double2(long2);
5215double2 __ovld __cnfn convert_double2(short2);
5216double2 __ovld __cnfn convert_double2(uchar2);
5217double2 __ovld __cnfn convert_double2(uint2);
5218double2 __ovld __cnfn convert_double2(ulong2);
5219double2 __ovld __cnfn convert_double2(ushort2);
5220double2 __ovld __cnfn convert_double2_rte(char2);
5221double2 __ovld __cnfn convert_double2_rte(double2);
5222double2 __ovld __cnfn convert_double2_rte(float2);
5223double2 __ovld __cnfn convert_double2_rte(int2);
5224double2 __ovld __cnfn convert_double2_rte(long2);
5225double2 __ovld __cnfn convert_double2_rte(short2);
5226double2 __ovld __cnfn convert_double2_rte(uchar2);
5227double2 __ovld __cnfn convert_double2_rte(uint2);
5228double2 __ovld __cnfn convert_double2_rte(ulong2);
5229double2 __ovld __cnfn convert_double2_rte(ushort2);
5230double2 __ovld __cnfn convert_double2_rtn(char2);
5231double2 __ovld __cnfn convert_double2_rtn(double2);
5232double2 __ovld __cnfn convert_double2_rtn(float2);
5233double2 __ovld __cnfn convert_double2_rtn(int2);
5234double2 __ovld __cnfn convert_double2_rtn(long2);
5235double2 __ovld __cnfn convert_double2_rtn(short2);
5236double2 __ovld __cnfn convert_double2_rtn(uchar2);
5237double2 __ovld __cnfn convert_double2_rtn(uint2);
5238double2 __ovld __cnfn convert_double2_rtn(ulong2);
5239double2 __ovld __cnfn convert_double2_rtn(ushort2);
5240double2 __ovld __cnfn convert_double2_rtp(char2);
5241double2 __ovld __cnfn convert_double2_rtp(double2);
5242double2 __ovld __cnfn convert_double2_rtp(float2);
5243double2 __ovld __cnfn convert_double2_rtp(int2);
5244double2 __ovld __cnfn convert_double2_rtp(long2);
5245double2 __ovld __cnfn convert_double2_rtp(short2);
5246double2 __ovld __cnfn convert_double2_rtp(uchar2);
5247double2 __ovld __cnfn convert_double2_rtp(uint2);
5248double2 __ovld __cnfn convert_double2_rtp(ulong2);
5249double2 __ovld __cnfn convert_double2_rtp(ushort2);
5250double2 __ovld __cnfn convert_double2_rtz(char2);
5251double2 __ovld __cnfn convert_double2_rtz(double2);
5252double2 __ovld __cnfn convert_double2_rtz(float2);
5253double2 __ovld __cnfn convert_double2_rtz(int2);
5254double2 __ovld __cnfn convert_double2_rtz(long2);
5255double2 __ovld __cnfn convert_double2_rtz(short2);
5256double2 __ovld __cnfn convert_double2_rtz(uchar2);
5257double2 __ovld __cnfn convert_double2_rtz(uint2);
5258double2 __ovld __cnfn convert_double2_rtz(ulong2);
5259double2 __ovld __cnfn convert_double2_rtz(ushort2);
5260double3 __ovld __cnfn convert_double3(char3);
5261double3 __ovld __cnfn convert_double3(double3);
5262double3 __ovld __cnfn convert_double3(float3);
5263double3 __ovld __cnfn convert_double3(int3);
5264double3 __ovld __cnfn convert_double3(long3);
5265double3 __ovld __cnfn convert_double3(short3);
5266double3 __ovld __cnfn convert_double3(uchar3);
5267double3 __ovld __cnfn convert_double3(uint3);
5268double3 __ovld __cnfn convert_double3(ulong3);
5269double3 __ovld __cnfn convert_double3(ushort3);
5270double3 __ovld __cnfn convert_double3_rte(char3);
5271double3 __ovld __cnfn convert_double3_rte(double3);
5272double3 __ovld __cnfn convert_double3_rte(float3);
5273double3 __ovld __cnfn convert_double3_rte(int3);
5274double3 __ovld __cnfn convert_double3_rte(long3);
5275double3 __ovld __cnfn convert_double3_rte(short3);
5276double3 __ovld __cnfn convert_double3_rte(uchar3);
5277double3 __ovld __cnfn convert_double3_rte(uint3);
5278double3 __ovld __cnfn convert_double3_rte(ulong3);
5279double3 __ovld __cnfn convert_double3_rte(ushort3);
5280double3 __ovld __cnfn convert_double3_rtn(char3);
5281double3 __ovld __cnfn convert_double3_rtn(double3);
5282double3 __ovld __cnfn convert_double3_rtn(float3);
5283double3 __ovld __cnfn convert_double3_rtn(int3);
5284double3 __ovld __cnfn convert_double3_rtn(long3);
5285double3 __ovld __cnfn convert_double3_rtn(short3);
5286double3 __ovld __cnfn convert_double3_rtn(uchar3);
5287double3 __ovld __cnfn convert_double3_rtn(uint3);
5288double3 __ovld __cnfn convert_double3_rtn(ulong3);
5289double3 __ovld __cnfn convert_double3_rtn(ushort3);
5290double3 __ovld __cnfn convert_double3_rtp(char3);
5291double3 __ovld __cnfn convert_double3_rtp(double3);
5292double3 __ovld __cnfn convert_double3_rtp(float3);
5293double3 __ovld __cnfn convert_double3_rtp(int3);
5294double3 __ovld __cnfn convert_double3_rtp(long3);
5295double3 __ovld __cnfn convert_double3_rtp(short3);
5296double3 __ovld __cnfn convert_double3_rtp(uchar3);
5297double3 __ovld __cnfn convert_double3_rtp(uint3);
5298double3 __ovld __cnfn convert_double3_rtp(ulong3);
5299double3 __ovld __cnfn convert_double3_rtp(ushort3);
5300double3 __ovld __cnfn convert_double3_rtz(char3);
5301double3 __ovld __cnfn convert_double3_rtz(double3);
5302double3 __ovld __cnfn convert_double3_rtz(float3);
5303double3 __ovld __cnfn convert_double3_rtz(int3);
5304double3 __ovld __cnfn convert_double3_rtz(long3);
5305double3 __ovld __cnfn convert_double3_rtz(short3);
5306double3 __ovld __cnfn convert_double3_rtz(uchar3);
5307double3 __ovld __cnfn convert_double3_rtz(uint3);
5308double3 __ovld __cnfn convert_double3_rtz(ulong3);
5309double3 __ovld __cnfn convert_double3_rtz(ushort3);
5310double4 __ovld __cnfn convert_double4(char4);
5311double4 __ovld __cnfn convert_double4(double4);
5312double4 __ovld __cnfn convert_double4(float4);
5313double4 __ovld __cnfn convert_double4(int4);
5314double4 __ovld __cnfn convert_double4(long4);
5315double4 __ovld __cnfn convert_double4(short4);
5316double4 __ovld __cnfn convert_double4(uchar4);
5317double4 __ovld __cnfn convert_double4(uint4);
5318double4 __ovld __cnfn convert_double4(ulong4);
5319double4 __ovld __cnfn convert_double4(ushort4);
5320double4 __ovld __cnfn convert_double4_rte(char4);
5321double4 __ovld __cnfn convert_double4_rte(double4);
5322double4 __ovld __cnfn convert_double4_rte(float4);
5323double4 __ovld __cnfn convert_double4_rte(int4);
5324double4 __ovld __cnfn convert_double4_rte(long4);
5325double4 __ovld __cnfn convert_double4_rte(short4);
5326double4 __ovld __cnfn convert_double4_rte(uchar4);
5327double4 __ovld __cnfn convert_double4_rte(uint4);
5328double4 __ovld __cnfn convert_double4_rte(ulong4);
5329double4 __ovld __cnfn convert_double4_rte(ushort4);
5330double4 __ovld __cnfn convert_double4_rtn(char4);
5331double4 __ovld __cnfn convert_double4_rtn(double4);
5332double4 __ovld __cnfn convert_double4_rtn(float4);
5333double4 __ovld __cnfn convert_double4_rtn(int4);
5334double4 __ovld __cnfn convert_double4_rtn(long4);
5335double4 __ovld __cnfn convert_double4_rtn(short4);
5336double4 __ovld __cnfn convert_double4_rtn(uchar4);
5337double4 __ovld __cnfn convert_double4_rtn(uint4);
5338double4 __ovld __cnfn convert_double4_rtn(ulong4);
5339double4 __ovld __cnfn convert_double4_rtn(ushort4);
5340double4 __ovld __cnfn convert_double4_rtp(char4);
5341double4 __ovld __cnfn convert_double4_rtp(double4);
5342double4 __ovld __cnfn convert_double4_rtp(float4);
5343double4 __ovld __cnfn convert_double4_rtp(int4);
5344double4 __ovld __cnfn convert_double4_rtp(long4);
5345double4 __ovld __cnfn convert_double4_rtp(short4);
5346double4 __ovld __cnfn convert_double4_rtp(uchar4);
5347double4 __ovld __cnfn convert_double4_rtp(uint4);
5348double4 __ovld __cnfn convert_double4_rtp(ulong4);
5349double4 __ovld __cnfn convert_double4_rtp(ushort4);
5350double4 __ovld __cnfn convert_double4_rtz(char4);
5351double4 __ovld __cnfn convert_double4_rtz(double4);
5352double4 __ovld __cnfn convert_double4_rtz(float4);
5353double4 __ovld __cnfn convert_double4_rtz(int4);
5354double4 __ovld __cnfn convert_double4_rtz(long4);
5355double4 __ovld __cnfn convert_double4_rtz(short4);
5356double4 __ovld __cnfn convert_double4_rtz(uchar4);
5357double4 __ovld __cnfn convert_double4_rtz(uint4);
5358double4 __ovld __cnfn convert_double4_rtz(ulong4);
5359double4 __ovld __cnfn convert_double4_rtz(ushort4);
5360double8 __ovld __cnfn convert_double8(char8);
5361double8 __ovld __cnfn convert_double8(double8);
5362double8 __ovld __cnfn convert_double8(float8);
5363double8 __ovld __cnfn convert_double8(int8);
5364double8 __ovld __cnfn convert_double8(long8);
5365double8 __ovld __cnfn convert_double8(short8);
5366double8 __ovld __cnfn convert_double8(uchar8);
5367double8 __ovld __cnfn convert_double8(uint8);
5368double8 __ovld __cnfn convert_double8(ulong8);
5369double8 __ovld __cnfn convert_double8(ushort8);
5370double8 __ovld __cnfn convert_double8_rte(char8);
5371double8 __ovld __cnfn convert_double8_rte(double8);
5372double8 __ovld __cnfn convert_double8_rte(float8);
5373double8 __ovld __cnfn convert_double8_rte(int8);
5374double8 __ovld __cnfn convert_double8_rte(long8);
5375double8 __ovld __cnfn convert_double8_rte(short8);
5376double8 __ovld __cnfn convert_double8_rte(uchar8);
5377double8 __ovld __cnfn convert_double8_rte(uint8);
5378double8 __ovld __cnfn convert_double8_rte(ulong8);
5379double8 __ovld __cnfn convert_double8_rte(ushort8);
5380double8 __ovld __cnfn convert_double8_rtn(char8);
5381double8 __ovld __cnfn convert_double8_rtn(double8);
5382double8 __ovld __cnfn convert_double8_rtn(float8);
5383double8 __ovld __cnfn convert_double8_rtn(int8);
5384double8 __ovld __cnfn convert_double8_rtn(long8);
5385double8 __ovld __cnfn convert_double8_rtn(short8);
5386double8 __ovld __cnfn convert_double8_rtn(uchar8);
5387double8 __ovld __cnfn convert_double8_rtn(uint8);
5388double8 __ovld __cnfn convert_double8_rtn(ulong8);
5389double8 __ovld __cnfn convert_double8_rtn(ushort8);
5390double8 __ovld __cnfn convert_double8_rtp(char8);
5391double8 __ovld __cnfn convert_double8_rtp(double8);
5392double8 __ovld __cnfn convert_double8_rtp(float8);
5393double8 __ovld __cnfn convert_double8_rtp(int8);
5394double8 __ovld __cnfn convert_double8_rtp(long8);
5395double8 __ovld __cnfn convert_double8_rtp(short8);
5396double8 __ovld __cnfn convert_double8_rtp(uchar8);
5397double8 __ovld __cnfn convert_double8_rtp(uint8);
5398double8 __ovld __cnfn convert_double8_rtp(ulong8);
5399double8 __ovld __cnfn convert_double8_rtp(ushort8);
5400double8 __ovld __cnfn convert_double8_rtz(char8);
5401double8 __ovld __cnfn convert_double8_rtz(double8);
5402double8 __ovld __cnfn convert_double8_rtz(float8);
5403double8 __ovld __cnfn convert_double8_rtz(int8);
5404double8 __ovld __cnfn convert_double8_rtz(long8);
5405double8 __ovld __cnfn convert_double8_rtz(short8);
5406double8 __ovld __cnfn convert_double8_rtz(uchar8);
5407double8 __ovld __cnfn convert_double8_rtz(uint8);
5408double8 __ovld __cnfn convert_double8_rtz(ulong8);
5409double8 __ovld __cnfn convert_double8_rtz(ushort8);
5410double16 __ovld __cnfn convert_double16(char16);
5411double16 __ovld __cnfn convert_double16(double16);
5412double16 __ovld __cnfn convert_double16(float16);
5413double16 __ovld __cnfn convert_double16(int16);
5414double16 __ovld __cnfn convert_double16(long16);
5415double16 __ovld __cnfn convert_double16(short16);
5416double16 __ovld __cnfn convert_double16(uchar16);
5417double16 __ovld __cnfn convert_double16(uint16);
5418double16 __ovld __cnfn convert_double16(ulong16);
5419double16 __ovld __cnfn convert_double16(ushort16);
5420double16 __ovld __cnfn convert_double16_rte(char16);
5421double16 __ovld __cnfn convert_double16_rte(double16);
5422double16 __ovld __cnfn convert_double16_rte(float16);
5423double16 __ovld __cnfn convert_double16_rte(int16);
5424double16 __ovld __cnfn convert_double16_rte(long16);
5425double16 __ovld __cnfn convert_double16_rte(short16);
5426double16 __ovld __cnfn convert_double16_rte(uchar16);
5427double16 __ovld __cnfn convert_double16_rte(uint16);
5428double16 __ovld __cnfn convert_double16_rte(ulong16);
5429double16 __ovld __cnfn convert_double16_rte(ushort16);
5430double16 __ovld __cnfn convert_double16_rtn(char16);
5431double16 __ovld __cnfn convert_double16_rtn(double16);
5432double16 __ovld __cnfn convert_double16_rtn(float16);
5433double16 __ovld __cnfn convert_double16_rtn(int16);
5434double16 __ovld __cnfn convert_double16_rtn(long16);
5435double16 __ovld __cnfn convert_double16_rtn(short16);
5436double16 __ovld __cnfn convert_double16_rtn(uchar16);
5437double16 __ovld __cnfn convert_double16_rtn(uint16);
5438double16 __ovld __cnfn convert_double16_rtn(ulong16);
5439double16 __ovld __cnfn convert_double16_rtn(ushort16);
5440double16 __ovld __cnfn convert_double16_rtp(char16);
5441double16 __ovld __cnfn convert_double16_rtp(double16);
5442double16 __ovld __cnfn convert_double16_rtp(float16);
5443double16 __ovld __cnfn convert_double16_rtp(int16);
5444double16 __ovld __cnfn convert_double16_rtp(long16);
5445double16 __ovld __cnfn convert_double16_rtp(short16);
5446double16 __ovld __cnfn convert_double16_rtp(uchar16);
5447double16 __ovld __cnfn convert_double16_rtp(uint16);
5448double16 __ovld __cnfn convert_double16_rtp(ulong16);
5449double16 __ovld __cnfn convert_double16_rtp(ushort16);
5450double16 __ovld __cnfn convert_double16_rtz(char16);
5451double16 __ovld __cnfn convert_double16_rtz(double16);
5452double16 __ovld __cnfn convert_double16_rtz(float16);
5453double16 __ovld __cnfn convert_double16_rtz(int16);
5454double16 __ovld __cnfn convert_double16_rtz(long16);
5455double16 __ovld __cnfn convert_double16_rtz(short16);
5456double16 __ovld __cnfn convert_double16_rtz(uchar16);
5457double16 __ovld __cnfn convert_double16_rtz(uint16);
5458double16 __ovld __cnfn convert_double16_rtz(ulong16);
5459double16 __ovld __cnfn convert_double16_rtz(ushort16);
5460#endif //cl_khr_fp64
5461
5462#ifdef cl_khr_fp16
5463#pragma OPENCL EXTENSION cl_khr_fp16 : enable
5464// Convert half types to non-double types.
5475uchar2 __ovld __cnfn convert_uchar2(half2);
5476uchar2 __ovld __cnfn convert_uchar2_rte(half2);
5477uchar2 __ovld __cnfn convert_uchar2_rtp(half2);
5478uchar2 __ovld __cnfn convert_uchar2_rtn(half2);
5479uchar2 __ovld __cnfn convert_uchar2_rtz(half2);
5480uchar2 __ovld __cnfn convert_uchar2_sat(half2);
5485uchar3 __ovld __cnfn convert_uchar3(half3);
5486uchar3 __ovld __cnfn convert_uchar3_rte(half3);
5487uchar3 __ovld __cnfn convert_uchar3_rtp(half3);
5488uchar3 __ovld __cnfn convert_uchar3_rtn(half3);
5489uchar3 __ovld __cnfn convert_uchar3_rtz(half3);
5490uchar3 __ovld __cnfn convert_uchar3_sat(half3);
5495uchar4 __ovld __cnfn convert_uchar4(half4);
5496uchar4 __ovld __cnfn convert_uchar4_rte(half4);
5497uchar4 __ovld __cnfn convert_uchar4_rtp(half4);
5498uchar4 __ovld __cnfn convert_uchar4_rtn(half4);
5499uchar4 __ovld __cnfn convert_uchar4_rtz(half4);
5500uchar4 __ovld __cnfn convert_uchar4_sat(half4);
5505uchar8 __ovld __cnfn convert_uchar8(half8);
5506uchar8 __ovld __cnfn convert_uchar8_rte(half8);
5507uchar8 __ovld __cnfn convert_uchar8_rtp(half8);
5508uchar8 __ovld __cnfn convert_uchar8_rtn(half8);
5509uchar8 __ovld __cnfn convert_uchar8_rtz(half8);
5510uchar8 __ovld __cnfn convert_uchar8_sat(half8);
5515uchar16 __ovld __cnfn convert_uchar16(half16);
5516uchar16 __ovld __cnfn convert_uchar16_rte(half16);
5517uchar16 __ovld __cnfn convert_uchar16_rtp(half16);
5518uchar16 __ovld __cnfn convert_uchar16_rtn(half16);
5519uchar16 __ovld __cnfn convert_uchar16_rtz(half16);
5520uchar16 __ovld __cnfn convert_uchar16_sat(half16);
5521uchar16 __ovld __cnfn convert_uchar16_sat_rte(half16);
5522uchar16 __ovld __cnfn convert_uchar16_sat_rtp(half16);
5523uchar16 __ovld __cnfn convert_uchar16_sat_rtn(half16);
5524uchar16 __ovld __cnfn convert_uchar16_sat_rtz(half16);
5535ushort2 __ovld __cnfn convert_ushort2(half2);
5536ushort2 __ovld __cnfn convert_ushort2_rte(half2);
5537ushort2 __ovld __cnfn convert_ushort2_rtp(half2);
5538ushort2 __ovld __cnfn convert_ushort2_rtn(half2);
5539ushort2 __ovld __cnfn convert_ushort2_rtz(half2);
5540ushort2 __ovld __cnfn convert_ushort2_sat(half2);
5545ushort3 __ovld __cnfn convert_ushort3(half3);
5546ushort3 __ovld __cnfn convert_ushort3_rte(half3);
5547ushort3 __ovld __cnfn convert_ushort3_rtp(half3);
5548ushort3 __ovld __cnfn convert_ushort3_rtn(half3);
5549ushort3 __ovld __cnfn convert_ushort3_rtz(half3);
5550ushort3 __ovld __cnfn convert_ushort3_sat(half3);
5555ushort4 __ovld __cnfn convert_ushort4(half4);
5556ushort4 __ovld __cnfn convert_ushort4_rte(half4);
5557ushort4 __ovld __cnfn convert_ushort4_rtp(half4);
5558ushort4 __ovld __cnfn convert_ushort4_rtn(half4);
5559ushort4 __ovld __cnfn convert_ushort4_rtz(half4);
5560ushort4 __ovld __cnfn convert_ushort4_sat(half4);
5565ushort8 __ovld __cnfn convert_ushort8(half8);
5566ushort8 __ovld __cnfn convert_ushort8_rte(half8);
5567ushort8 __ovld __cnfn convert_ushort8_rtp(half8);
5568ushort8 __ovld __cnfn convert_ushort8_rtn(half8);
5569ushort8 __ovld __cnfn convert_ushort8_rtz(half8);
5570ushort8 __ovld __cnfn convert_ushort8_sat(half8);
5575ushort16 __ovld __cnfn convert_ushort16(half16);
5576ushort16 __ovld __cnfn convert_ushort16_rte(half16);
5577ushort16 __ovld __cnfn convert_ushort16_rtp(half16);
5578ushort16 __ovld __cnfn convert_ushort16_rtn(half16);
5579ushort16 __ovld __cnfn convert_ushort16_rtz(half16);
5580ushort16 __ovld __cnfn convert_ushort16_sat(half16);
5581ushort16 __ovld __cnfn convert_ushort16_sat_rte(half16);
5582ushort16 __ovld __cnfn convert_ushort16_sat_rtp(half16);
5583ushort16 __ovld __cnfn convert_ushort16_sat_rtn(half16);
5584ushort16 __ovld __cnfn convert_ushort16_sat_rtz(half16);
5595uint2 __ovld __cnfn convert_uint2(half2);
5596uint2 __ovld __cnfn convert_uint2_rte(half2);
5597uint2 __ovld __cnfn convert_uint2_rtp(half2);
5598uint2 __ovld __cnfn convert_uint2_rtn(half2);
5599uint2 __ovld __cnfn convert_uint2_rtz(half2);
5600uint2 __ovld __cnfn convert_uint2_sat(half2);
5605uint3 __ovld __cnfn convert_uint3(half3);
5606uint3 __ovld __cnfn convert_uint3_rte(half3);
5607uint3 __ovld __cnfn convert_uint3_rtp(half3);
5608uint3 __ovld __cnfn convert_uint3_rtn(half3);
5609uint3 __ovld __cnfn convert_uint3_rtz(half3);
5610uint3 __ovld __cnfn convert_uint3_sat(half3);
5615uint4 __ovld __cnfn convert_uint4(half4);
5616uint4 __ovld __cnfn convert_uint4_rte(half4);
5617uint4 __ovld __cnfn convert_uint4_rtp(half4);
5618uint4 __ovld __cnfn convert_uint4_rtn(half4);
5619uint4 __ovld __cnfn convert_uint4_rtz(half4);
5620uint4 __ovld __cnfn convert_uint4_sat(half4);
5625uint8 __ovld __cnfn convert_uint8(half8);
5626uint8 __ovld __cnfn convert_uint8_rte(half8);
5627uint8 __ovld __cnfn convert_uint8_rtp(half8);
5628uint8 __ovld __cnfn convert_uint8_rtn(half8);
5629uint8 __ovld __cnfn convert_uint8_rtz(half8);
5630uint8 __ovld __cnfn convert_uint8_sat(half8);
5635uint16 __ovld __cnfn convert_uint16(half16);
5636uint16 __ovld __cnfn convert_uint16_rte(half16);
5637uint16 __ovld __cnfn convert_uint16_rtp(half16);
5638uint16 __ovld __cnfn convert_uint16_rtn(half16);
5639uint16 __ovld __cnfn convert_uint16_rtz(half16);
5640uint16 __ovld __cnfn convert_uint16_sat(half16);
5641uint16 __ovld __cnfn convert_uint16_sat_rte(half16);
5642uint16 __ovld __cnfn convert_uint16_sat_rtp(half16);
5643uint16 __ovld __cnfn convert_uint16_sat_rtn(half16);
5644uint16 __ovld __cnfn convert_uint16_sat_rtz(half16);
5655ulong2 __ovld __cnfn convert_ulong2(half2);
5656ulong2 __ovld __cnfn convert_ulong2_rte(half2);
5657ulong2 __ovld __cnfn convert_ulong2_rtp(half2);
5658ulong2 __ovld __cnfn convert_ulong2_rtn(half2);
5659ulong2 __ovld __cnfn convert_ulong2_rtz(half2);
5660ulong2 __ovld __cnfn convert_ulong2_sat(half2);
5665ulong3 __ovld __cnfn convert_ulong3(half3);
5666ulong3 __ovld __cnfn convert_ulong3_rte(half3);
5667ulong3 __ovld __cnfn convert_ulong3_rtp(half3);
5668ulong3 __ovld __cnfn convert_ulong3_rtn(half3);
5669ulong3 __ovld __cnfn convert_ulong3_rtz(half3);
5670ulong3 __ovld __cnfn convert_ulong3_sat(half3);
5675ulong4 __ovld __cnfn convert_ulong4(half4);
5676ulong4 __ovld __cnfn convert_ulong4_rte(half4);
5677ulong4 __ovld __cnfn convert_ulong4_rtp(half4);
5678ulong4 __ovld __cnfn convert_ulong4_rtn(half4);
5679ulong4 __ovld __cnfn convert_ulong4_rtz(half4);
5680ulong4 __ovld __cnfn convert_ulong4_sat(half4);
5685ulong8 __ovld __cnfn convert_ulong8(half8);
5686ulong8 __ovld __cnfn convert_ulong8_rte(half8);
5687ulong8 __ovld __cnfn convert_ulong8_rtp(half8);
5688ulong8 __ovld __cnfn convert_ulong8_rtn(half8);
5689ulong8 __ovld __cnfn convert_ulong8_rtz(half8);
5690ulong8 __ovld __cnfn convert_ulong8_sat(half8);
5695ulong16 __ovld __cnfn convert_ulong16(half16);
5696ulong16 __ovld __cnfn convert_ulong16_rte(half16);
5697ulong16 __ovld __cnfn convert_ulong16_rtp(half16);
5698ulong16 __ovld __cnfn convert_ulong16_rtn(half16);
5699ulong16 __ovld __cnfn convert_ulong16_rtz(half16);
5700ulong16 __ovld __cnfn convert_ulong16_sat(half16);
5701ulong16 __ovld __cnfn convert_ulong16_sat_rte(half16);
5702ulong16 __ovld __cnfn convert_ulong16_sat_rtp(half16);
5703ulong16 __ovld __cnfn convert_ulong16_sat_rtn(half16);
5704ulong16 __ovld __cnfn convert_ulong16_sat_rtz(half16);
5705char __ovld __cnfn convert_char(half);
5706char __ovld __cnfn convert_char_rte(half);
5707char __ovld __cnfn convert_char_rtp(half);
5708char __ovld __cnfn convert_char_rtn(half);
5709char __ovld __cnfn convert_char_rtz(half);
5710char __ovld __cnfn convert_char_sat(half);
5715char2 __ovld __cnfn convert_char2(half2);
5716char2 __ovld __cnfn convert_char2_rte(half2);
5717char2 __ovld __cnfn convert_char2_rtp(half2);
5718char2 __ovld __cnfn convert_char2_rtn(half2);
5719char2 __ovld __cnfn convert_char2_rtz(half2);
5720char2 __ovld __cnfn convert_char2_sat(half2);
5725char3 __ovld __cnfn convert_char3(half3);
5726char3 __ovld __cnfn convert_char3_rte(half3);
5727char3 __ovld __cnfn convert_char3_rtp(half3);
5728char3 __ovld __cnfn convert_char3_rtn(half3);
5729char3 __ovld __cnfn convert_char3_rtz(half3);
5730char3 __ovld __cnfn convert_char3_sat(half3);
5735char4 __ovld __cnfn convert_char4(half4);
5736char4 __ovld __cnfn convert_char4_rte(half4);
5737char4 __ovld __cnfn convert_char4_rtp(half4);
5738char4 __ovld __cnfn convert_char4_rtn(half4);
5739char4 __ovld __cnfn convert_char4_rtz(half4);
5740char4 __ovld __cnfn convert_char4_sat(half4);
5745char8 __ovld __cnfn convert_char8(half8);
5746char8 __ovld __cnfn convert_char8_rte(half8);
5747char8 __ovld __cnfn convert_char8_rtp(half8);
5748char8 __ovld __cnfn convert_char8_rtn(half8);
5749char8 __ovld __cnfn convert_char8_rtz(half8);
5750char8 __ovld __cnfn convert_char8_sat(half8);
5755char16 __ovld __cnfn convert_char16(half16);
5756char16 __ovld __cnfn convert_char16_rte(half16);
5757char16 __ovld __cnfn convert_char16_rtp(half16);
5758char16 __ovld __cnfn convert_char16_rtn(half16);
5759char16 __ovld __cnfn convert_char16_rtz(half16);
5760char16 __ovld __cnfn convert_char16_sat(half16);
5761char16 __ovld __cnfn convert_char16_sat_rte(half16);
5762char16 __ovld __cnfn convert_char16_sat_rtp(half16);
5763char16 __ovld __cnfn convert_char16_sat_rtn(half16);
5764char16 __ovld __cnfn convert_char16_sat_rtz(half16);
5765short __ovld __cnfn convert_short(half);
5766short __ovld __cnfn convert_short_rte(half);
5767short __ovld __cnfn convert_short_rtp(half);
5768short __ovld __cnfn convert_short_rtn(half);
5769short __ovld __cnfn convert_short_rtz(half);
5770short __ovld __cnfn convert_short_sat(half);
5775short2 __ovld __cnfn convert_short2(half2);
5776short2 __ovld __cnfn convert_short2_rte(half2);
5777short2 __ovld __cnfn convert_short2_rtp(half2);
5778short2 __ovld __cnfn convert_short2_rtn(half2);
5779short2 __ovld __cnfn convert_short2_rtz(half2);
5780short2 __ovld __cnfn convert_short2_sat(half2);
5785short3 __ovld __cnfn convert_short3(half3);
5786short3 __ovld __cnfn convert_short3_rte(half3);
5787short3 __ovld __cnfn convert_short3_rtp(half3);
5788short3 __ovld __cnfn convert_short3_rtn(half3);
5789short3 __ovld __cnfn convert_short3_rtz(half3);
5790short3 __ovld __cnfn convert_short3_sat(half3);
5795short4 __ovld __cnfn convert_short4(half4);
5796short4 __ovld __cnfn convert_short4_rte(half4);
5797short4 __ovld __cnfn convert_short4_rtp(half4);
5798short4 __ovld __cnfn convert_short4_rtn(half4);
5799short4 __ovld __cnfn convert_short4_rtz(half4);
5800short4 __ovld __cnfn convert_short4_sat(half4);
5805short8 __ovld __cnfn convert_short8(half8);
5806short8 __ovld __cnfn convert_short8_rte(half8);
5807short8 __ovld __cnfn convert_short8_rtp(half8);
5808short8 __ovld __cnfn convert_short8_rtn(half8);
5809short8 __ovld __cnfn convert_short8_rtz(half8);
5810short8 __ovld __cnfn convert_short8_sat(half8);
5815short16 __ovld __cnfn convert_short16(half16);
5816short16 __ovld __cnfn convert_short16_rte(half16);
5817short16 __ovld __cnfn convert_short16_rtp(half16);
5818short16 __ovld __cnfn convert_short16_rtn(half16);
5819short16 __ovld __cnfn convert_short16_rtz(half16);
5820short16 __ovld __cnfn convert_short16_sat(half16);
5821short16 __ovld __cnfn convert_short16_sat_rte(half16);
5822short16 __ovld __cnfn convert_short16_sat_rtp(half16);
5823short16 __ovld __cnfn convert_short16_sat_rtn(half16);
5824short16 __ovld __cnfn convert_short16_sat_rtz(half16);
5825int __ovld __cnfn convert_int(half);
5826int __ovld __cnfn convert_int_rte(half);
5827int __ovld __cnfn convert_int_rtp(half);
5828int __ovld __cnfn convert_int_rtn(half);
5829int __ovld __cnfn convert_int_rtz(half);
5830int __ovld __cnfn convert_int_sat(half);
5835int2 __ovld __cnfn convert_int2(half2);
5836int2 __ovld __cnfn convert_int2_rte(half2);
5837int2 __ovld __cnfn convert_int2_rtp(half2);
5838int2 __ovld __cnfn convert_int2_rtn(half2);
5839int2 __ovld __cnfn convert_int2_rtz(half2);
5840int2 __ovld __cnfn convert_int2_sat(half2);
5845int3 __ovld __cnfn convert_int3(half3);
5846int3 __ovld __cnfn convert_int3_rte(half3);
5847int3 __ovld __cnfn convert_int3_rtp(half3);
5848int3 __ovld __cnfn convert_int3_rtn(half3);
5849int3 __ovld __cnfn convert_int3_rtz(half3);
5850int3 __ovld __cnfn convert_int3_sat(half3);
5855int4 __ovld __cnfn convert_int4(half4);
5856int4 __ovld __cnfn convert_int4_rte(half4);
5857int4 __ovld __cnfn convert_int4_rtp(half4);
5858int4 __ovld __cnfn convert_int4_rtn(half4);
5859int4 __ovld __cnfn convert_int4_rtz(half4);
5860int4 __ovld __cnfn convert_int4_sat(half4);
5865int8 __ovld __cnfn convert_int8(half8);
5866int8 __ovld __cnfn convert_int8_rte(half8);
5867int8 __ovld __cnfn convert_int8_rtp(half8);
5868int8 __ovld __cnfn convert_int8_rtn(half8);
5869int8 __ovld __cnfn convert_int8_rtz(half8);
5870int8 __ovld __cnfn convert_int8_sat(half8);
5875int16 __ovld __cnfn convert_int16(half16);
5876int16 __ovld __cnfn convert_int16_rte(half16);
5877int16 __ovld __cnfn convert_int16_rtp(half16);
5878int16 __ovld __cnfn convert_int16_rtn(half16);
5879int16 __ovld __cnfn convert_int16_rtz(half16);
5880int16 __ovld __cnfn convert_int16_sat(half16);
5881int16 __ovld __cnfn convert_int16_sat_rte(half16);
5882int16 __ovld __cnfn convert_int16_sat_rtp(half16);
5883int16 __ovld __cnfn convert_int16_sat_rtn(half16);
5884int16 __ovld __cnfn convert_int16_sat_rtz(half16);
5885long __ovld __cnfn convert_long(half);
5886long __ovld __cnfn convert_long_rte(half);
5887long __ovld __cnfn convert_long_rtp(half);
5888long __ovld __cnfn convert_long_rtn(half);
5889long __ovld __cnfn convert_long_rtz(half);
5890long __ovld __cnfn convert_long_sat(half);
5895long2 __ovld __cnfn convert_long2(half2);
5896long2 __ovld __cnfn convert_long2_rte(half2);
5897long2 __ovld __cnfn convert_long2_rtp(half2);
5898long2 __ovld __cnfn convert_long2_rtn(half2);
5899long2 __ovld __cnfn convert_long2_rtz(half2);
5900long2 __ovld __cnfn convert_long2_sat(half2);
5905long3 __ovld __cnfn convert_long3(half3);
5906long3 __ovld __cnfn convert_long3_rte(half3);
5907long3 __ovld __cnfn convert_long3_rtp(half3);
5908long3 __ovld __cnfn convert_long3_rtn(half3);
5909long3 __ovld __cnfn convert_long3_rtz(half3);
5910long3 __ovld __cnfn convert_long3_sat(half3);
5915long4 __ovld __cnfn convert_long4(half4);
5916long4 __ovld __cnfn convert_long4_rte(half4);
5917long4 __ovld __cnfn convert_long4_rtp(half4);
5918long4 __ovld __cnfn convert_long4_rtn(half4);
5919long4 __ovld __cnfn convert_long4_rtz(half4);
5920long4 __ovld __cnfn convert_long4_sat(half4);
5925long8 __ovld __cnfn convert_long8(half8);
5926long8 __ovld __cnfn convert_long8_rte(half8);
5927long8 __ovld __cnfn convert_long8_rtp(half8);
5928long8 __ovld __cnfn convert_long8_rtn(half8);
5929long8 __ovld __cnfn convert_long8_rtz(half8);
5930long8 __ovld __cnfn convert_long8_sat(half8);
5935long16 __ovld __cnfn convert_long16(half16);
5936long16 __ovld __cnfn convert_long16_rte(half16);
5937long16 __ovld __cnfn convert_long16_rtp(half16);
5938long16 __ovld __cnfn convert_long16_rtn(half16);
5939long16 __ovld __cnfn convert_long16_rtz(half16);
5940long16 __ovld __cnfn convert_long16_sat(half16);
5941long16 __ovld __cnfn convert_long16_sat_rte(half16);
5942long16 __ovld __cnfn convert_long16_sat_rtp(half16);
5943long16 __ovld __cnfn convert_long16_sat_rtn(half16);
5944long16 __ovld __cnfn convert_long16_sat_rtz(half16);
5945float __ovld __cnfn convert_float(half);
5946float __ovld __cnfn convert_float_rte(half);
5947float __ovld __cnfn convert_float_rtp(half);
5948float __ovld __cnfn convert_float_rtn(half);
5949float __ovld __cnfn convert_float_rtz(half);
5950float2 __ovld __cnfn convert_float2(half2);
5951float2 __ovld __cnfn convert_float2_rte(half2);
5952float2 __ovld __cnfn convert_float2_rtp(half2);
5953float2 __ovld __cnfn convert_float2_rtn(half2);
5954float2 __ovld __cnfn convert_float2_rtz(half2);
5955float3 __ovld __cnfn convert_float3(half3);
5956float3 __ovld __cnfn convert_float3_rte(half3);
5957float3 __ovld __cnfn convert_float3_rtp(half3);
5958float3 __ovld __cnfn convert_float3_rtn(half3);
5959float3 __ovld __cnfn convert_float3_rtz(half3);
5960float4 __ovld __cnfn convert_float4(half4);
5961float4 __ovld __cnfn convert_float4_rte(half4);
5962float4 __ovld __cnfn convert_float4_rtp(half4);
5963float4 __ovld __cnfn convert_float4_rtn(half4);
5964float4 __ovld __cnfn convert_float4_rtz(half4);
5965float8 __ovld __cnfn convert_float8(half8);
5966float8 __ovld __cnfn convert_float8_rte(half8);
5967float8 __ovld __cnfn convert_float8_rtp(half8);
5968float8 __ovld __cnfn convert_float8_rtn(half8);
5969float8 __ovld __cnfn convert_float8_rtz(half8);
5970float16 __ovld __cnfn convert_float16(half16);
5971float16 __ovld __cnfn convert_float16_rte(half16);
5972float16 __ovld __cnfn convert_float16_rtp(half16);
5973float16 __ovld __cnfn convert_float16_rtn(half16);
5974float16 __ovld __cnfn convert_float16_rtz(half16);
5975
5976// Convert non-double types to half types.
5977half __ovld __cnfn convert_half(uchar);
5978half __ovld __cnfn convert_half(ushort);
5979half __ovld __cnfn convert_half(uint);
5980half __ovld __cnfn convert_half(ulong);
5981half __ovld __cnfn convert_half(char);
5982half __ovld __cnfn convert_half(short);
5983half __ovld __cnfn convert_half(int);
5984half __ovld __cnfn convert_half(long);
5985half __ovld __cnfn convert_half(float);
5986half __ovld __cnfn convert_half(half);
5987half __ovld __cnfn convert_half_rte(uchar);
5988half __ovld __cnfn convert_half_rte(ushort);
5989half __ovld __cnfn convert_half_rte(uint);
5990half __ovld __cnfn convert_half_rte(ulong);
5991half __ovld __cnfn convert_half_rte(char);
5992half __ovld __cnfn convert_half_rte(short);
5993half __ovld __cnfn convert_half_rte(int);
5994half __ovld __cnfn convert_half_rte(long);
5995half __ovld __cnfn convert_half_rte(float);
5996half __ovld __cnfn convert_half_rte(half);
5997half __ovld __cnfn convert_half_rtp(uchar);
5998half __ovld __cnfn convert_half_rtp(ushort);
5999half __ovld __cnfn convert_half_rtp(uint);
6000half __ovld __cnfn convert_half_rtp(ulong);
6001half __ovld __cnfn convert_half_rtp(char);
6002half __ovld __cnfn convert_half_rtp(short);
6003half __ovld __cnfn convert_half_rtp(int);
6004half __ovld __cnfn convert_half_rtp(long);
6005half __ovld __cnfn convert_half_rtp(float);
6006half __ovld __cnfn convert_half_rtp(half);
6007half __ovld __cnfn convert_half_rtn(uchar);
6008half __ovld __cnfn convert_half_rtn(ushort);
6009half __ovld __cnfn convert_half_rtn(uint);
6010half __ovld __cnfn convert_half_rtn(ulong);
6011half __ovld __cnfn convert_half_rtn(char);
6012half __ovld __cnfn convert_half_rtn(short);
6013half __ovld __cnfn convert_half_rtn(int);
6014half __ovld __cnfn convert_half_rtn(long);
6015half __ovld __cnfn convert_half_rtn(float);
6016half __ovld __cnfn convert_half_rtn(half);
6017half __ovld __cnfn convert_half_rtz(uchar);
6018half __ovld __cnfn convert_half_rtz(ushort);
6019half __ovld __cnfn convert_half_rtz(uint);
6020half __ovld __cnfn convert_half_rtz(ulong);
6021half __ovld __cnfn convert_half_rtz(char);
6022half __ovld __cnfn convert_half_rtz(short);
6023half __ovld __cnfn convert_half_rtz(int);
6024half __ovld __cnfn convert_half_rtz(long);
6025half __ovld __cnfn convert_half_rtz(float);
6026half __ovld __cnfn convert_half_rtz(half);
6027half2 __ovld __cnfn convert_half2(char2);
6028half2 __ovld __cnfn convert_half2(uchar2);
6029half2 __ovld __cnfn convert_half2(short2);
6030half2 __ovld __cnfn convert_half2(ushort2);
6031half2 __ovld __cnfn convert_half2(int2);
6032half2 __ovld __cnfn convert_half2(uint2);
6033half2 __ovld __cnfn convert_half2(long2);
6034half2 __ovld __cnfn convert_half2(ulong2);
6035half2 __ovld __cnfn convert_half2(float2);
6036half2 __ovld __cnfn convert_half2(half2);
6037half2 __ovld __cnfn convert_half2_rte(char2);
6038half2 __ovld __cnfn convert_half2_rte(uchar2);
6039half2 __ovld __cnfn convert_half2_rte(short2);
6040half2 __ovld __cnfn convert_half2_rte(ushort2);
6041half2 __ovld __cnfn convert_half2_rte(int2);
6042half2 __ovld __cnfn convert_half2_rte(uint2);
6043half2 __ovld __cnfn convert_half2_rte(long2);
6044half2 __ovld __cnfn convert_half2_rte(ulong2);
6045half2 __ovld __cnfn convert_half2_rte(float2);
6046half2 __ovld __cnfn convert_half2_rte(half2);
6047half2 __ovld __cnfn convert_half2_rtp(char2);
6048half2 __ovld __cnfn convert_half2_rtp(uchar2);
6049half2 __ovld __cnfn convert_half2_rtp(short2);
6050half2 __ovld __cnfn convert_half2_rtp(ushort2);
6051half2 __ovld __cnfn convert_half2_rtp(int2);
6052half2 __ovld __cnfn convert_half2_rtp(uint2);
6053half2 __ovld __cnfn convert_half2_rtp(long2);
6054half2 __ovld __cnfn convert_half2_rtp(ulong2);
6055half2 __ovld __cnfn convert_half2_rtp(float2);
6056half2 __ovld __cnfn convert_half2_rtp(half2);
6057half2 __ovld __cnfn convert_half2_rtn(char2);
6058half2 __ovld __cnfn convert_half2_rtn(uchar2);
6059half2 __ovld __cnfn convert_half2_rtn(short2);
6060half2 __ovld __cnfn convert_half2_rtn(ushort2);
6061half2 __ovld __cnfn convert_half2_rtn(int2);
6062half2 __ovld __cnfn convert_half2_rtn(uint2);
6063half2 __ovld __cnfn convert_half2_rtn(long2);
6064half2 __ovld __cnfn convert_half2_rtn(ulong2);
6065half2 __ovld __cnfn convert_half2_rtn(float2);
6066half2 __ovld __cnfn convert_half2_rtn(half2);
6067half2 __ovld __cnfn convert_half2_rtz(char2);
6068half2 __ovld __cnfn convert_half2_rtz(uchar2);
6069half2 __ovld __cnfn convert_half2_rtz(short2);
6070half2 __ovld __cnfn convert_half2_rtz(ushort2);
6071half2 __ovld __cnfn convert_half2_rtz(int2);
6072half2 __ovld __cnfn convert_half2_rtz(uint2);
6073half2 __ovld __cnfn convert_half2_rtz(long2);
6074half2 __ovld __cnfn convert_half2_rtz(ulong2);
6075half2 __ovld __cnfn convert_half2_rtz(float2);
6076half2 __ovld __cnfn convert_half2_rtz(half2);
6077half3 __ovld __cnfn convert_half3(char3);
6078half3 __ovld __cnfn convert_half3(uchar3);
6079half3 __ovld __cnfn convert_half3(short3);
6080half3 __ovld __cnfn convert_half3(ushort3);
6081half3 __ovld __cnfn convert_half3(int3);
6082half3 __ovld __cnfn convert_half3(uint3);
6083half3 __ovld __cnfn convert_half3(long3);
6084half3 __ovld __cnfn convert_half3(ulong3);
6085half3 __ovld __cnfn convert_half3(float3);
6086half3 __ovld __cnfn convert_half3(half3);
6087half3 __ovld __cnfn convert_half3_rte(char3);
6088half3 __ovld __cnfn convert_half3_rte(uchar3);
6089half3 __ovld __cnfn convert_half3_rte(short3);
6090half3 __ovld __cnfn convert_half3_rte(ushort3);
6091half3 __ovld __cnfn convert_half3_rte(int3);
6092half3 __ovld __cnfn convert_half3_rte(uint3);
6093half3 __ovld __cnfn convert_half3_rte(long3);
6094half3 __ovld __cnfn convert_half3_rte(ulong3);
6095half3 __ovld __cnfn convert_half3_rte(float3);
6096half3 __ovld __cnfn convert_half3_rte(half3);
6097half3 __ovld __cnfn convert_half3_rtp(char3);
6098half3 __ovld __cnfn convert_half3_rtp(uchar3);
6099half3 __ovld __cnfn convert_half3_rtp(short3);
6100half3 __ovld __cnfn convert_half3_rtp(ushort3);
6101half3 __ovld __cnfn convert_half3_rtp(int3);
6102half3 __ovld __cnfn convert_half3_rtp(uint3);
6103half3 __ovld __cnfn convert_half3_rtp(long3);
6104half3 __ovld __cnfn convert_half3_rtp(ulong3);
6105half3 __ovld __cnfn convert_half3_rtp(float3);
6106half3 __ovld __cnfn convert_half3_rtp(half3);
6107half3 __ovld __cnfn convert_half3_rtn(char3);
6108half3 __ovld __cnfn convert_half3_rtn(uchar3);
6109half3 __ovld __cnfn convert_half3_rtn(short3);
6110half3 __ovld __cnfn convert_half3_rtn(ushort3);
6111half3 __ovld __cnfn convert_half3_rtn(int3);
6112half3 __ovld __cnfn convert_half3_rtn(uint3);
6113half3 __ovld __cnfn convert_half3_rtn(long3);
6114half3 __ovld __cnfn convert_half3_rtn(ulong3);
6115half3 __ovld __cnfn convert_half3_rtn(float3);
6116half3 __ovld __cnfn convert_half3_rtn(half3);
6117half3 __ovld __cnfn convert_half3_rtz(char3);
6118half3 __ovld __cnfn convert_half3_rtz(uchar3);
6119half3 __ovld __cnfn convert_half3_rtz(short3);
6120half3 __ovld __cnfn convert_half3_rtz(ushort3);
6121half3 __ovld __cnfn convert_half3_rtz(int3);
6122half3 __ovld __cnfn convert_half3_rtz(uint3);
6123half3 __ovld __cnfn convert_half3_rtz(long3);
6124half3 __ovld __cnfn convert_half3_rtz(ulong3);
6125half3 __ovld __cnfn convert_half3_rtz(float3);
6126half3 __ovld __cnfn convert_half3_rtz(half3);
6127half4 __ovld __cnfn convert_half4(char4);
6128half4 __ovld __cnfn convert_half4(uchar4);
6129half4 __ovld __cnfn convert_half4(short4);
6130half4 __ovld __cnfn convert_half4(ushort4);
6131half4 __ovld __cnfn convert_half4(int4);
6132half4 __ovld __cnfn convert_half4(uint4);
6133half4 __ovld __cnfn convert_half4(long4);
6134half4 __ovld __cnfn convert_half4(ulong4);
6135half4 __ovld __cnfn convert_half4(float4);
6136half4 __ovld __cnfn convert_half4(half4);
6137half4 __ovld __cnfn convert_half4_rte(char4);
6138half4 __ovld __cnfn convert_half4_rte(uchar4);
6139half4 __ovld __cnfn convert_half4_rte(short4);
6140half4 __ovld __cnfn convert_half4_rte(ushort4);
6141half4 __ovld __cnfn convert_half4_rte(int4);
6142half4 __ovld __cnfn convert_half4_rte(uint4);
6143half4 __ovld __cnfn convert_half4_rte(long4);
6144half4 __ovld __cnfn convert_half4_rte(ulong4);
6145half4 __ovld __cnfn convert_half4_rte(float4);
6146half4 __ovld __cnfn convert_half4_rte(half4);
6147half4 __ovld __cnfn convert_half4_rtp(char4);
6148half4 __ovld __cnfn convert_half4_rtp(uchar4);
6149half4 __ovld __cnfn convert_half4_rtp(short4);
6150half4 __ovld __cnfn convert_half4_rtp(ushort4);
6151half4 __ovld __cnfn convert_half4_rtp(int4);
6152half4 __ovld __cnfn convert_half4_rtp(uint4);
6153half4 __ovld __cnfn convert_half4_rtp(long4);
6154half4 __ovld __cnfn convert_half4_rtp(ulong4);
6155half4 __ovld __cnfn convert_half4_rtp(float4);
6156half4 __ovld __cnfn convert_half4_rtp(half4);
6157half4 __ovld __cnfn convert_half4_rtn(char4);
6158half4 __ovld __cnfn convert_half4_rtn(uchar4);
6159half4 __ovld __cnfn convert_half4_rtn(short4);
6160half4 __ovld __cnfn convert_half4_rtn(ushort4);
6161half4 __ovld __cnfn convert_half4_rtn(int4);
6162half4 __ovld __cnfn convert_half4_rtn(uint4);
6163half4 __ovld __cnfn convert_half4_rtn(long4);
6164half4 __ovld __cnfn convert_half4_rtn(ulong4);
6165half4 __ovld __cnfn convert_half4_rtn(float4);
6166half4 __ovld __cnfn convert_half4_rtn(half4);
6167half4 __ovld __cnfn convert_half4_rtz(char4);
6168half4 __ovld __cnfn convert_half4_rtz(uchar4);
6169half4 __ovld __cnfn convert_half4_rtz(short4);
6170half4 __ovld __cnfn convert_half4_rtz(ushort4);
6171half4 __ovld __cnfn convert_half4_rtz(int4);
6172half4 __ovld __cnfn convert_half4_rtz(uint4);
6173half4 __ovld __cnfn convert_half4_rtz(long4);
6174half4 __ovld __cnfn convert_half4_rtz(ulong4);
6175half4 __ovld __cnfn convert_half4_rtz(float4);
6176half4 __ovld __cnfn convert_half4_rtz(half4);
6177half8 __ovld __cnfn convert_half8(char8);
6178half8 __ovld __cnfn convert_half8(uchar8);
6179half8 __ovld __cnfn convert_half8(short8);
6180half8 __ovld __cnfn convert_half8(ushort8);
6181half8 __ovld __cnfn convert_half8(int8);
6182half8 __ovld __cnfn convert_half8(uint8);
6183half8 __ovld __cnfn convert_half8(long8);
6184half8 __ovld __cnfn convert_half8(ulong8);
6185half8 __ovld __cnfn convert_half8(float8);
6186half8 __ovld __cnfn convert_half8(half8);
6187half8 __ovld __cnfn convert_half8_rte(char8);
6188half8 __ovld __cnfn convert_half8_rte(uchar8);
6189half8 __ovld __cnfn convert_half8_rte(short8);
6190half8 __ovld __cnfn convert_half8_rte(ushort8);
6191half8 __ovld __cnfn convert_half8_rte(int8);
6192half8 __ovld __cnfn convert_half8_rte(uint8);
6193half8 __ovld __cnfn convert_half8_rte(long8);
6194half8 __ovld __cnfn convert_half8_rte(ulong8);
6195half8 __ovld __cnfn convert_half8_rte(float8);
6196half8 __ovld __cnfn convert_half8_rte(half8);
6197half8 __ovld __cnfn convert_half8_rtp(char8);
6198half8 __ovld __cnfn convert_half8_rtp(uchar8);
6199half8 __ovld __cnfn convert_half8_rtp(short8);
6200half8 __ovld __cnfn convert_half8_rtp(ushort8);
6201half8 __ovld __cnfn convert_half8_rtp(int8);
6202half8 __ovld __cnfn convert_half8_rtp(uint8);
6203half8 __ovld __cnfn convert_half8_rtp(long8);
6204half8 __ovld __cnfn convert_half8_rtp(ulong8);
6205half8 __ovld __cnfn convert_half8_rtp(float8);
6206half8 __ovld __cnfn convert_half8_rtp(half8);
6207half8 __ovld __cnfn convert_half8_rtn(char8);
6208half8 __ovld __cnfn convert_half8_rtn(uchar8);
6209half8 __ovld __cnfn convert_half8_rtn(short8);
6210half8 __ovld __cnfn convert_half8_rtn(ushort8);
6211half8 __ovld __cnfn convert_half8_rtn(int8);
6212half8 __ovld __cnfn convert_half8_rtn(uint8);
6213half8 __ovld __cnfn convert_half8_rtn(long8);
6214half8 __ovld __cnfn convert_half8_rtn(ulong8);
6215half8 __ovld __cnfn convert_half8_rtn(float8);
6216half8 __ovld __cnfn convert_half8_rtn(half8);
6217half8 __ovld __cnfn convert_half8_rtz(char8);
6218half8 __ovld __cnfn convert_half8_rtz(uchar8);
6219half8 __ovld __cnfn convert_half8_rtz(short8);
6220half8 __ovld __cnfn convert_half8_rtz(ushort8);
6221half8 __ovld __cnfn convert_half8_rtz(int8);
6222half8 __ovld __cnfn convert_half8_rtz(uint8);
6223half8 __ovld __cnfn convert_half8_rtz(long8);
6224half8 __ovld __cnfn convert_half8_rtz(ulong8);
6225half8 __ovld __cnfn convert_half8_rtz(float8);
6226half8 __ovld __cnfn convert_half8_rtz(half8);
6227half16 __ovld __cnfn convert_half16(char16);
6228half16 __ovld __cnfn convert_half16(uchar16);
6229half16 __ovld __cnfn convert_half16(short16);
6230half16 __ovld __cnfn convert_half16(ushort16);
6231half16 __ovld __cnfn convert_half16(int16);
6232half16 __ovld __cnfn convert_half16(uint16);
6233half16 __ovld __cnfn convert_half16(long16);
6234half16 __ovld __cnfn convert_half16(ulong16);
6235half16 __ovld __cnfn convert_half16(float16);
6236half16 __ovld __cnfn convert_half16(half16);
6237half16 __ovld __cnfn convert_half16_rte(char16);
6238half16 __ovld __cnfn convert_half16_rte(uchar16);
6239half16 __ovld __cnfn convert_half16_rte(short16);
6240half16 __ovld __cnfn convert_half16_rte(ushort16);
6241half16 __ovld __cnfn convert_half16_rte(int16);
6242half16 __ovld __cnfn convert_half16_rte(uint16);
6243half16 __ovld __cnfn convert_half16_rte(long16);
6244half16 __ovld __cnfn convert_half16_rte(ulong16);
6245half16 __ovld __cnfn convert_half16_rte(float16);
6246half16 __ovld __cnfn convert_half16_rte(half16);
6247half16 __ovld __cnfn convert_half16_rtp(char16);
6248half16 __ovld __cnfn convert_half16_rtp(uchar16);
6249half16 __ovld __cnfn convert_half16_rtp(short16);
6250half16 __ovld __cnfn convert_half16_rtp(ushort16);
6251half16 __ovld __cnfn convert_half16_rtp(int16);
6252half16 __ovld __cnfn convert_half16_rtp(uint16);
6253half16 __ovld __cnfn convert_half16_rtp(long16);
6254half16 __ovld __cnfn convert_half16_rtp(ulong16);
6255half16 __ovld __cnfn convert_half16_rtp(float16);
6256half16 __ovld __cnfn convert_half16_rtp(half16);
6257half16 __ovld __cnfn convert_half16_rtn(char16);
6258half16 __ovld __cnfn convert_half16_rtn(uchar16);
6259half16 __ovld __cnfn convert_half16_rtn(short16);
6260half16 __ovld __cnfn convert_half16_rtn(ushort16);
6261half16 __ovld __cnfn convert_half16_rtn(int16);
6262half16 __ovld __cnfn convert_half16_rtn(uint16);
6263half16 __ovld __cnfn convert_half16_rtn(long16);
6264half16 __ovld __cnfn convert_half16_rtn(ulong16);
6265half16 __ovld __cnfn convert_half16_rtn(float16);
6266half16 __ovld __cnfn convert_half16_rtn(half16);
6267half16 __ovld __cnfn convert_half16_rtz(char16);
6268half16 __ovld __cnfn convert_half16_rtz(uchar16);
6269half16 __ovld __cnfn convert_half16_rtz(short16);
6270half16 __ovld __cnfn convert_half16_rtz(ushort16);
6271half16 __ovld __cnfn convert_half16_rtz(int16);
6272half16 __ovld __cnfn convert_half16_rtz(uint16);
6273half16 __ovld __cnfn convert_half16_rtz(long16);
6274half16 __ovld __cnfn convert_half16_rtz(ulong16);
6275half16 __ovld __cnfn convert_half16_rtz(float16);
6276half16 __ovld __cnfn convert_half16_rtz(half16);
6277
6278// Convert half types to double types.
6279#ifdef cl_khr_fp64
6280double __ovld __cnfn convert_double(half);
6281double __ovld __cnfn convert_double_rte(half);
6282double __ovld __cnfn convert_double_rtp(half);
6283double __ovld __cnfn convert_double_rtn(half);
6284double __ovld __cnfn convert_double_rtz(half);
6285double2 __ovld __cnfn convert_double2(half2);
6286double2 __ovld __cnfn convert_double2_rte(half2);
6287double2 __ovld __cnfn convert_double2_rtp(half2);
6288double2 __ovld __cnfn convert_double2_rtn(half2);
6289double2 __ovld __cnfn convert_double2_rtz(half2);
6290double3 __ovld __cnfn convert_double3(half3);
6291double3 __ovld __cnfn convert_double3_rte(half3);
6292double3 __ovld __cnfn convert_double3_rtp(half3);
6293double3 __ovld __cnfn convert_double3_rtn(half3);
6294double3 __ovld __cnfn convert_double3_rtz(half3);
6295double4 __ovld __cnfn convert_double4(half4);
6296double4 __ovld __cnfn convert_double4_rte(half4);
6297double4 __ovld __cnfn convert_double4_rtp(half4);
6298double4 __ovld __cnfn convert_double4_rtn(half4);
6299double4 __ovld __cnfn convert_double4_rtz(half4);
6300double8 __ovld __cnfn convert_double8(half8);
6301double8 __ovld __cnfn convert_double8_rte(half8);
6302double8 __ovld __cnfn convert_double8_rtp(half8);
6303double8 __ovld __cnfn convert_double8_rtn(half8);
6304double8 __ovld __cnfn convert_double8_rtz(half8);
6305double16 __ovld __cnfn convert_double16(half16);
6306double16 __ovld __cnfn convert_double16_rte(half16);
6307double16 __ovld __cnfn convert_double16_rtp(half16);
6308double16 __ovld __cnfn convert_double16_rtn(half16);
6309double16 __ovld __cnfn convert_double16_rtz(half16);
6310
6311// Convert double types to half types.
6312half __ovld __cnfn convert_half(double);
6313half __ovld __cnfn convert_half_rte(double);
6314half __ovld __cnfn convert_half_rtp(double);
6315half __ovld __cnfn convert_half_rtn(double);
6316half __ovld __cnfn convert_half_rtz(double);
6317half2 __ovld __cnfn convert_half2(double2);
6318half2 __ovld __cnfn convert_half2_rte(double2);
6319half2 __ovld __cnfn convert_half2_rtp(double2);
6320half2 __ovld __cnfn convert_half2_rtn(double2);
6321half2 __ovld __cnfn convert_half2_rtz(double2);
6322half3 __ovld __cnfn convert_half3(double3);
6323half3 __ovld __cnfn convert_half3_rte(double3);
6324half3 __ovld __cnfn convert_half3_rtp(double3);
6325half3 __ovld __cnfn convert_half3_rtn(double3);
6326half3 __ovld __cnfn convert_half3_rtz(double3);
6327half4 __ovld __cnfn convert_half4(double4);
6328half4 __ovld __cnfn convert_half4_rte(double4);
6329half4 __ovld __cnfn convert_half4_rtp(double4);
6330half4 __ovld __cnfn convert_half4_rtn(double4);
6331half4 __ovld __cnfn convert_half4_rtz(double4);
6332half8 __ovld __cnfn convert_half8(double8);
6333half8 __ovld __cnfn convert_half8_rte(double8);
6334half8 __ovld __cnfn convert_half8_rtp(double8);
6335half8 __ovld __cnfn convert_half8_rtn(double8);
6336half8 __ovld __cnfn convert_half8_rtz(double8);
6337half16 __ovld __cnfn convert_half16(double16);
6338half16 __ovld __cnfn convert_half16_rte(double16);
6339half16 __ovld __cnfn convert_half16_rtp(double16);
6340half16 __ovld __cnfn convert_half16_rtn(double16);
6341half16 __ovld __cnfn convert_half16_rtz(double16);
6342#endif //cl_khr_fp64
6343
6344#endif // cl_khr_fp16
6345
6346// OpenCL v1.1 s6.11.1, v1.2 s6.12.1, v2.0 s6.13.1 - Work-item Functions
6347
6348/**
6349 * Returns the number of dimensions in use. This is the
6350 * value given to the work_dim argument specified in
6351 * clEnqueueNDRangeKernel.
6352 * For clEnqueueTask, this returns 1.
6353 */
6355
6356/**
6357 * Returns the number of global work-items specified for
6358 * dimension identified by dimindx. This value is given by
6359 * the global_work_size argument to
6360 * clEnqueueNDRangeKernel. Valid values of dimindx
6361 * are 0 to get_work_dim() - 1. For other values of
6362 * dimindx, get_global_size() returns 1.
6363 * For clEnqueueTask, this always returns 1.
6364 */
6366
6367/**
6368 * Returns the unique global work-item ID value for
6369 * dimension identified by dimindx. The global work-item
6370 * ID specifies the work-item ID based on the number of
6371 * global work-items specified to execute the kernel. Valid
6372 * values of dimindx are 0 to get_work_dim() - 1. For
6373 * other values of dimindx, get_global_id() returns 0.
6374 * For clEnqueueTask, this returns 0.
6375 */
6377
6378/**
6379 * Returns the number of local work-items specified in
6380 * dimension identified by dimindx. This value is given by
6381 * the local_work_size argument to
6382 * clEnqueueNDRangeKernel if local_work_size is not
6383 * NULL; otherwise the OpenCL implementation chooses
6384 * an appropriate local_work_size value which is returned
6385 * by this function. Valid values of dimindx are 0 to
6386 * get_work_dim() - 1. For other values of dimindx,
6387 * get_local_size() returns 1.
6388 * For clEnqueueTask, this always returns 1.
6389 */
6391
6392/**
6393 * Returns the unique local work-item ID i.e. a work-item
6394 * within a specific work-group for dimension identified by
6395 * dimindx. Valid values of dimindx are 0 to
6396 * get_work_dim() - 1. For other values of dimindx,
6397 * get_local_id() returns 0.
6398 * For clEnqueueTask, this returns 0.
6399 */
6401
6402/**
6403 * Returns the number of work-groups that will execute a
6404 * kernel for dimension identified by dimindx.
6405 * Valid values of dimindx are 0 to get_work_dim() - 1.
6406 * For other values of dimindx, get_num_groups() returns 1.
6407 * For clEnqueueTask, this always returns 1.
6408 */
6410
6411/**
6412 * get_group_id returns the work-group ID which is a
6413 * number from 0 .. get_num_groups(dimindx) - 1.
6414 * Valid values of dimindx are 0 to get_work_dim() - 1.
6415 * For other values, get_group_id() returns 0.
6416 * For clEnqueueTask, this returns 0.
6417 */
6419
6420/**
6421 * get_global_offset returns the offset values specified in
6422 * global_work_offset argument to
6423 * clEnqueueNDRangeKernel.
6424 * Valid values of dimindx are 0 to get_work_dim() - 1.
6425 * For other values, get_global_offset() returns 0.
6426 * For clEnqueueTask, this returns 0.
6427 */
6429
6430#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
6434#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
6435
6436// OpenCL v1.1 s6.11.2, v1.2 s6.12.2, v2.0 s6.13.2 - Math functions
6437
6438/**
6439 * Arc cosine function.
6440 */
6441float __ovld __cnfn acos(float);
6442float2 __ovld __cnfn acos(float2);
6443float3 __ovld __cnfn acos(float3);
6444float4 __ovld __cnfn acos(float4);
6445float8 __ovld __cnfn acos(float8);
6446float16 __ovld __cnfn acos(float16);
6447#ifdef cl_khr_fp64
6448double __ovld __cnfn acos(double);
6449double2 __ovld __cnfn acos(double2);
6450double3 __ovld __cnfn acos(double3);
6451double4 __ovld __cnfn acos(double4);
6452double8 __ovld __cnfn acos(double8);
6453double16 __ovld __cnfn acos(double16);
6454#endif //cl_khr_fp64
6455#ifdef cl_khr_fp16
6456half __ovld __cnfn acos(half);
6457half2 __ovld __cnfn acos(half2);
6458half3 __ovld __cnfn acos(half3);
6459half4 __ovld __cnfn acos(half4);
6460half8 __ovld __cnfn acos(half8);
6461half16 __ovld __cnfn acos(half16);
6462#endif //cl_khr_fp16
6463
6464/**
6465 * Inverse hyperbolic cosine.
6466 */
6467float __ovld __cnfn acosh(float);
6468float2 __ovld __cnfn acosh(float2);
6469float3 __ovld __cnfn acosh(float3);
6470float4 __ovld __cnfn acosh(float4);
6471float8 __ovld __cnfn acosh(float8);
6472float16 __ovld __cnfn acosh(float16);
6473#ifdef cl_khr_fp64
6474double __ovld __cnfn acosh(double);
6475double2 __ovld __cnfn acosh(double2);
6476double3 __ovld __cnfn acosh(double3);
6477double4 __ovld __cnfn acosh(double4);
6478double8 __ovld __cnfn acosh(double8);
6479double16 __ovld __cnfn acosh(double16);
6480#endif //cl_khr_fp64
6481#ifdef cl_khr_fp16
6482half __ovld __cnfn acosh(half);
6483half2 __ovld __cnfn acosh(half2);
6484half3 __ovld __cnfn acosh(half3);
6485half4 __ovld __cnfn acosh(half4);
6486half8 __ovld __cnfn acosh(half8);
6487half16 __ovld __cnfn acosh(half16);
6488#endif //cl_khr_fp16
6489
6490/**
6491 * Compute acos (x) / PI.
6492 */
6493float __ovld __cnfn acospi(float);
6494float2 __ovld __cnfn acospi(float2);
6495float3 __ovld __cnfn acospi(float3);
6496float4 __ovld __cnfn acospi(float4);
6497float8 __ovld __cnfn acospi(float8);
6498float16 __ovld __cnfn acospi(float16);
6499#ifdef cl_khr_fp64
6500double __ovld __cnfn acospi(double);
6501double2 __ovld __cnfn acospi(double2);
6502double3 __ovld __cnfn acospi(double3);
6503double4 __ovld __cnfn acospi(double4);
6504double8 __ovld __cnfn acospi(double8);
6505double16 __ovld __cnfn acospi(double16);
6506#endif //cl_khr_fp64
6507#ifdef cl_khr_fp16
6508half __ovld __cnfn acospi(half);
6509half2 __ovld __cnfn acospi(half2);
6510half3 __ovld __cnfn acospi(half3);
6511half4 __ovld __cnfn acospi(half4);
6512half8 __ovld __cnfn acospi(half8);
6513half16 __ovld __cnfn acospi(half16);
6514#endif //cl_khr_fp16
6515
6516/**
6517 * Arc sine function.
6518 */
6519float __ovld __cnfn asin(float);
6520float2 __ovld __cnfn asin(float2);
6521float3 __ovld __cnfn asin(float3);
6522float4 __ovld __cnfn asin(float4);
6523float8 __ovld __cnfn asin(float8);
6524float16 __ovld __cnfn asin(float16);
6525#ifdef cl_khr_fp64
6526double __ovld __cnfn asin(double);
6527double2 __ovld __cnfn asin(double2);
6528double3 __ovld __cnfn asin(double3);
6529double4 __ovld __cnfn asin(double4);
6530double8 __ovld __cnfn asin(double8);
6531double16 __ovld __cnfn asin(double16);
6532#endif //cl_khr_fp64
6533#ifdef cl_khr_fp16
6534half __ovld __cnfn asin(half);
6535half2 __ovld __cnfn asin(half2);
6536half3 __ovld __cnfn asin(half3);
6537half4 __ovld __cnfn asin(half4);
6538half8 __ovld __cnfn asin(half8);
6539half16 __ovld __cnfn asin(half16);
6540#endif //cl_khr_fp16
6541
6542/**
6543 * Inverse hyperbolic sine.
6544 */
6545float __ovld __cnfn asinh(float);
6546float2 __ovld __cnfn asinh(float2);
6547float3 __ovld __cnfn asinh(float3);
6548float4 __ovld __cnfn asinh(float4);
6549float8 __ovld __cnfn asinh(float8);
6550float16 __ovld __cnfn asinh(float16);
6551#ifdef cl_khr_fp64
6552double __ovld __cnfn asinh(double);
6553double2 __ovld __cnfn asinh(double2);
6554double3 __ovld __cnfn asinh(double3);
6555double4 __ovld __cnfn asinh(double4);
6556double8 __ovld __cnfn asinh(double8);
6557double16 __ovld __cnfn asinh(double16);
6558#endif //cl_khr_fp64
6559#ifdef cl_khr_fp16
6560half __ovld __cnfn asinh(half);
6561half2 __ovld __cnfn asinh(half2);
6562half3 __ovld __cnfn asinh(half3);
6563half4 __ovld __cnfn asinh(half4);
6564half8 __ovld __cnfn asinh(half8);
6565half16 __ovld __cnfn asinh(half16);
6566#endif //cl_khr_fp16
6567
6568/**
6569 * Compute asin (x) / PI.
6570 */
6571float __ovld __cnfn asinpi(float);
6572float2 __ovld __cnfn asinpi(float2);
6573float3 __ovld __cnfn asinpi(float3);
6574float4 __ovld __cnfn asinpi(float4);
6575float8 __ovld __cnfn asinpi(float8);
6576float16 __ovld __cnfn asinpi(float16);
6577#ifdef cl_khr_fp64
6578double __ovld __cnfn asinpi(double);
6579double2 __ovld __cnfn asinpi(double2);
6580double3 __ovld __cnfn asinpi(double3);
6581double4 __ovld __cnfn asinpi(double4);
6582double8 __ovld __cnfn asinpi(double8);
6583double16 __ovld __cnfn asinpi(double16);
6584#endif //cl_khr_fp64
6585#ifdef cl_khr_fp16
6586half __ovld __cnfn asinpi(half);
6587half2 __ovld __cnfn asinpi(half2);
6588half3 __ovld __cnfn asinpi(half3);
6589half4 __ovld __cnfn asinpi(half4);
6590half8 __ovld __cnfn asinpi(half8);
6591half16 __ovld __cnfn asinpi(half16);
6592#endif //cl_khr_fp16
6593
6594/**
6595 * Arc tangent function.
6596 */
6597float __ovld __cnfn atan(float);
6598float2 __ovld __cnfn atan(float2);
6599float3 __ovld __cnfn atan(float3);
6600float4 __ovld __cnfn atan(float4);
6601float8 __ovld __cnfn atan(float8);
6602float16 __ovld __cnfn atan(float16);
6603#ifdef cl_khr_fp64
6604double __ovld __cnfn atan(double);
6605double2 __ovld __cnfn atan(double2);
6606double3 __ovld __cnfn atan(double3);
6607double4 __ovld __cnfn atan(double4);
6608double8 __ovld __cnfn atan(double8);
6609double16 __ovld __cnfn atan(double16);
6610#endif //cl_khr_fp64
6611#ifdef cl_khr_fp16
6612half __ovld __cnfn atan(half);
6613half2 __ovld __cnfn atan(half2);
6614half3 __ovld __cnfn atan(half3);
6615half4 __ovld __cnfn atan(half4);
6616half8 __ovld __cnfn atan(half8);
6617half16 __ovld __cnfn atan(half16);
6618#endif //cl_khr_fp16
6619
6620/**
6621 * Arc tangent of y / x.
6622 */
6623float __ovld __cnfn atan2(float, float);
6624float2 __ovld __cnfn atan2(float2, float2);
6625float3 __ovld __cnfn atan2(float3, float3);
6626float4 __ovld __cnfn atan2(float4, float4);
6627float8 __ovld __cnfn atan2(float8, float8);
6628float16 __ovld __cnfn atan2(float16, float16);
6629#ifdef cl_khr_fp64
6630double __ovld __cnfn atan2(double, double);
6631double2 __ovld __cnfn atan2(double2, double2);
6632double3 __ovld __cnfn atan2(double3, double3);
6633double4 __ovld __cnfn atan2(double4, double4);
6634double8 __ovld __cnfn atan2(double8, double8);
6635double16 __ovld __cnfn atan2(double16, double16);
6636#endif //cl_khr_fp64
6637#ifdef cl_khr_fp16
6638half __ovld __cnfn atan2(half, half);
6639half2 __ovld __cnfn atan2(half2, half2);
6640half3 __ovld __cnfn atan2(half3, half3);
6641half4 __ovld __cnfn atan2(half4, half4);
6642half8 __ovld __cnfn atan2(half8, half8);
6643half16 __ovld __cnfn atan2(half16, half16);
6644#endif //cl_khr_fp16
6645
6646/**
6647 * Hyperbolic arc tangent.
6648 */
6649float __ovld __cnfn atanh(float);
6650float2 __ovld __cnfn atanh(float2);
6651float3 __ovld __cnfn atanh(float3);
6652float4 __ovld __cnfn atanh(float4);
6653float8 __ovld __cnfn atanh(float8);
6654float16 __ovld __cnfn atanh(float16);
6655#ifdef cl_khr_fp64
6656double __ovld __cnfn atanh(double);
6657double2 __ovld __cnfn atanh(double2);
6658double3 __ovld __cnfn atanh(double3);
6659double4 __ovld __cnfn atanh(double4);
6660double8 __ovld __cnfn atanh(double8);
6661double16 __ovld __cnfn atanh(double16);
6662#endif //cl_khr_fp64
6663#ifdef cl_khr_fp16
6664half __ovld __cnfn atanh(half);
6665half2 __ovld __cnfn atanh(half2);
6666half3 __ovld __cnfn atanh(half3);
6667half4 __ovld __cnfn atanh(half4);
6668half8 __ovld __cnfn atanh(half8);
6669half16 __ovld __cnfn atanh(half16);
6670#endif //cl_khr_fp16
6671
6672/**
6673 * Compute atan (x) / PI.
6674 */
6675float __ovld __cnfn atanpi(float);
6676float2 __ovld __cnfn atanpi(float2);
6677float3 __ovld __cnfn atanpi(float3);
6678float4 __ovld __cnfn atanpi(float4);
6679float8 __ovld __cnfn atanpi(float8);
6680float16 __ovld __cnfn atanpi(float16);
6681#ifdef cl_khr_fp64
6682double __ovld __cnfn atanpi(double);
6683double2 __ovld __cnfn atanpi(double2);
6684double3 __ovld __cnfn atanpi(double3);
6685double4 __ovld __cnfn atanpi(double4);
6686double8 __ovld __cnfn atanpi(double8);
6687double16 __ovld __cnfn atanpi(double16);
6688#endif //cl_khr_fp64
6689#ifdef cl_khr_fp16
6690half __ovld __cnfn atanpi(half);
6691half2 __ovld __cnfn atanpi(half2);
6692half3 __ovld __cnfn atanpi(half3);
6693half4 __ovld __cnfn atanpi(half4);
6694half8 __ovld __cnfn atanpi(half8);
6695half16 __ovld __cnfn atanpi(half16);
6696#endif //cl_khr_fp16
6697
6698/**
6699 * Compute atan2 (y, x) / PI.
6700 */
6701float __ovld __cnfn atan2pi(float, float);
6702float2 __ovld __cnfn atan2pi(float2, float2);
6703float3 __ovld __cnfn atan2pi(float3, float3);
6704float4 __ovld __cnfn atan2pi(float4, float4);
6705float8 __ovld __cnfn atan2pi(float8, float8);
6706float16 __ovld __cnfn atan2pi(float16, float16);
6707#ifdef cl_khr_fp64
6708double __ovld __cnfn atan2pi(double, double);
6709double2 __ovld __cnfn atan2pi(double2, double2);
6710double3 __ovld __cnfn atan2pi(double3, double3);
6711double4 __ovld __cnfn atan2pi(double4, double4);
6712double8 __ovld __cnfn atan2pi(double8, double8);
6713double16 __ovld __cnfn atan2pi(double16, double16);
6714#endif //cl_khr_fp64
6715#ifdef cl_khr_fp16
6716half __ovld __cnfn atan2pi(half, half);
6717half2 __ovld __cnfn atan2pi(half2, half2);
6718half3 __ovld __cnfn atan2pi(half3, half3);
6719half4 __ovld __cnfn atan2pi(half4, half4);
6720half8 __ovld __cnfn atan2pi(half8, half8);
6721half16 __ovld __cnfn atan2pi(half16, half16);
6722#endif //cl_khr_fp16
6723
6724/**
6725 * Compute cube-root.
6726 */
6727float __ovld __cnfn cbrt(float);
6728float2 __ovld __cnfn cbrt(float2);
6729float3 __ovld __cnfn cbrt(float3);
6730float4 __ovld __cnfn cbrt(float4);
6731float8 __ovld __cnfn cbrt(float8);
6732float16 __ovld __cnfn cbrt(float16);
6733#ifdef cl_khr_fp64
6734double __ovld __cnfn cbrt(double);
6735double2 __ovld __cnfn cbrt(double2);
6736double3 __ovld __cnfn cbrt(double3);
6737double4 __ovld __cnfn cbrt(double4);
6738double8 __ovld __cnfn cbrt(double8);
6739double16 __ovld __cnfn cbrt(double16);
6740#endif //cl_khr_fp64
6741#ifdef cl_khr_fp16
6742half __ovld __cnfn cbrt(half);
6743half2 __ovld __cnfn cbrt(half2);
6744half3 __ovld __cnfn cbrt(half3);
6745half4 __ovld __cnfn cbrt(half4);
6746half8 __ovld __cnfn cbrt(half8);
6747half16 __ovld __cnfn cbrt(half16);
6748#endif //cl_khr_fp16
6749
6750/**
6751 * Round to integral value using the round to positive
6752 * infinity rounding mode.
6753 */
6754float __ovld __cnfn ceil(float);
6755float2 __ovld __cnfn ceil(float2);
6756float3 __ovld __cnfn ceil(float3);
6757float4 __ovld __cnfn ceil(float4);
6758float8 __ovld __cnfn ceil(float8);
6759float16 __ovld __cnfn ceil(float16);
6760#ifdef cl_khr_fp64
6761double __ovld __cnfn ceil(double);
6762double2 __ovld __cnfn ceil(double2);
6763double3 __ovld __cnfn ceil(double3);
6764double4 __ovld __cnfn ceil(double4);
6765double8 __ovld __cnfn ceil(double8);
6766double16 __ovld __cnfn ceil(double16);
6767#endif //cl_khr_fp64
6768#ifdef cl_khr_fp16
6769half __ovld __cnfn ceil(half);
6770half2 __ovld __cnfn ceil(half2);
6771half3 __ovld __cnfn ceil(half3);
6772half4 __ovld __cnfn ceil(half4);
6773half8 __ovld __cnfn ceil(half8);
6774half16 __ovld __cnfn ceil(half16);
6775#endif //cl_khr_fp16
6776
6777/**
6778 * Returns x with its sign changed to match the sign of y.
6779 */
6780float __ovld __cnfn copysign(float, float);
6781float2 __ovld __cnfn copysign(float2, float2);
6782float3 __ovld __cnfn copysign(float3, float3);
6783float4 __ovld __cnfn copysign(float4, float4);
6784float8 __ovld __cnfn copysign(float8, float8);
6785float16 __ovld __cnfn copysign(float16, float16);
6786#ifdef cl_khr_fp64
6787double __ovld __cnfn copysign(double, double);
6788double2 __ovld __cnfn copysign(double2, double2);
6789double3 __ovld __cnfn copysign(double3, double3);
6790double4 __ovld __cnfn copysign(double4, double4);
6791double8 __ovld __cnfn copysign(double8, double8);
6792double16 __ovld __cnfn copysign(double16, double16);
6793#endif //cl_khr_fp64
6794#ifdef cl_khr_fp16
6795half __ovld __cnfn copysign(half, half);
6796half2 __ovld __cnfn copysign(half2, half2);
6797half3 __ovld __cnfn copysign(half3, half3);
6798half4 __ovld __cnfn copysign(half4, half4);
6799half8 __ovld __cnfn copysign(half8, half8);
6800half16 __ovld __cnfn copysign(half16, half16);
6801#endif //cl_khr_fp16
6802
6803/**
6804 * Compute cosine.
6805 */
6806float __ovld __cnfn cos(float);
6807float2 __ovld __cnfn cos(float2);
6808float3 __ovld __cnfn cos(float3);
6809float4 __ovld __cnfn cos(float4);
6810float8 __ovld __cnfn cos(float8);
6811float16 __ovld __cnfn cos(float16);
6812#ifdef cl_khr_fp64
6813double __ovld __cnfn cos(double);
6814double2 __ovld __cnfn cos(double2);
6815double3 __ovld __cnfn cos(double3);
6816double4 __ovld __cnfn cos(double4);
6817double8 __ovld __cnfn cos(double8);
6818double16 __ovld __cnfn cos(double16);
6819#endif //cl_khr_fp64
6820#ifdef cl_khr_fp16
6821half __ovld __cnfn cos(half);
6822half2 __ovld __cnfn cos(half2);
6823half3 __ovld __cnfn cos(half3);
6824half4 __ovld __cnfn cos(half4);
6825half8 __ovld __cnfn cos(half8);
6826half16 __ovld __cnfn cos(half16);
6827#endif //cl_khr_fp16
6828
6829/**
6830 * Compute hyperbolic cosine.
6831 */
6832float __ovld __cnfn cosh(float);
6833float2 __ovld __cnfn cosh(float2);
6834float3 __ovld __cnfn cosh(float3);
6835float4 __ovld __cnfn cosh(float4);
6836float8 __ovld __cnfn cosh(float8);
6837float16 __ovld __cnfn cosh(float16);
6838#ifdef cl_khr_fp64
6839double __ovld __cnfn cosh(double);
6840double2 __ovld __cnfn cosh(double2);
6841double3 __ovld __cnfn cosh(double3);
6842double4 __ovld __cnfn cosh(double4);
6843double8 __ovld __cnfn cosh(double8);
6844double16 __ovld __cnfn cosh(double16);
6845#endif //cl_khr_fp64
6846#ifdef cl_khr_fp16
6847half __ovld __cnfn cosh(half);
6848half2 __ovld __cnfn cosh(half2);
6849half3 __ovld __cnfn cosh(half3);
6850half4 __ovld __cnfn cosh(half4);
6851half8 __ovld __cnfn cosh(half8);
6852half16 __ovld __cnfn cosh(half16);
6853#endif //cl_khr_fp16
6854
6855/**
6856 * Compute cos (PI * x).
6857 */
6858float __ovld __cnfn cospi(float);
6859float2 __ovld __cnfn cospi(float2);
6860float3 __ovld __cnfn cospi(float3);
6861float4 __ovld __cnfn cospi(float4);
6862float8 __ovld __cnfn cospi(float8);
6863float16 __ovld __cnfn cospi(float16);
6864#ifdef cl_khr_fp64
6865double __ovld __cnfn cospi(double);
6866double2 __ovld __cnfn cospi(double2);
6867double3 __ovld __cnfn cospi(double3);
6868double4 __ovld __cnfn cospi(double4);
6869double8 __ovld __cnfn cospi(double8);
6870double16 __ovld __cnfn cospi(double16);
6871#endif //cl_khr_fp64
6872#ifdef cl_khr_fp16
6873half __ovld __cnfn cospi(half);
6874half2 __ovld __cnfn cospi(half2);
6875half3 __ovld __cnfn cospi(half3);
6876half4 __ovld __cnfn cospi(half4);
6877half8 __ovld __cnfn cospi(half8);
6878half16 __ovld __cnfn cospi(half16);
6879#endif //cl_khr_fp16
6880
6881/**
6882 * Complementary error function.
6883 */
6884float __ovld __cnfn erfc(float);
6885float2 __ovld __cnfn erfc(float2);
6886float3 __ovld __cnfn erfc(float3);
6887float4 __ovld __cnfn erfc(float4);
6888float8 __ovld __cnfn erfc(float8);
6889float16 __ovld __cnfn erfc(float16);
6890#ifdef cl_khr_fp64
6891double __ovld __cnfn erfc(double);
6892double2 __ovld __cnfn erfc(double2);
6893double3 __ovld __cnfn erfc(double3);
6894double4 __ovld __cnfn erfc(double4);
6895double8 __ovld __cnfn erfc(double8);
6896double16 __ovld __cnfn erfc(double16);
6897#endif //cl_khr_fp64
6898#ifdef cl_khr_fp16
6899half __ovld __cnfn erfc(half);
6900half2 __ovld __cnfn erfc(half2);
6901half3 __ovld __cnfn erfc(half3);
6902half4 __ovld __cnfn erfc(half4);
6903half8 __ovld __cnfn erfc(half8);
6904half16 __ovld __cnfn erfc(half16);
6905#endif //cl_khr_fp16
6906
6907/**
6908 * Error function encountered in integrating the
6909 * normal distribution.
6910 */
6911float __ovld __cnfn erf(float);
6912float2 __ovld __cnfn erf(float2);
6913float3 __ovld __cnfn erf(float3);
6914float4 __ovld __cnfn erf(float4);
6915float8 __ovld __cnfn erf(float8);
6916float16 __ovld __cnfn erf(float16);
6917#ifdef cl_khr_fp64
6918double __ovld __cnfn erf(double);
6919double2 __ovld __cnfn erf(double2);
6920double3 __ovld __cnfn erf(double3);
6921double4 __ovld __cnfn erf(double4);
6922double8 __ovld __cnfn erf(double8);
6923double16 __ovld __cnfn erf(double16);
6924#endif //cl_khr_fp64
6925#ifdef cl_khr_fp16
6926half __ovld __cnfn erf(half);
6927half2 __ovld __cnfn erf(half2);
6928half3 __ovld __cnfn erf(half3);
6929half4 __ovld __cnfn erf(half4);
6930half8 __ovld __cnfn erf(half8);
6931half16 __ovld __cnfn erf(half16);
6932#endif //cl_khr_fp16
6933
6934/**
6935 * Compute the base e exponential function of x.
6936 */
6937float __ovld __cnfn exp(float);
6938float2 __ovld __cnfn exp(float2);
6939float3 __ovld __cnfn exp(float3);
6940float4 __ovld __cnfn exp(float4);
6941float8 __ovld __cnfn exp(float8);
6942float16 __ovld __cnfn exp(float16);
6943#ifdef cl_khr_fp64
6944double __ovld __cnfn exp(double);
6945double2 __ovld __cnfn exp(double2);
6946double3 __ovld __cnfn exp(double3);
6947double4 __ovld __cnfn exp(double4);
6948double8 __ovld __cnfn exp(double8);
6949double16 __ovld __cnfn exp(double16);
6950#endif //cl_khr_fp64
6951#ifdef cl_khr_fp16
6952half __ovld __cnfn exp(half);
6953half2 __ovld __cnfn exp(half2);
6954half3 __ovld __cnfn exp(half3);
6955half4 __ovld __cnfn exp(half4);
6956half8 __ovld __cnfn exp(half8);
6957half16 __ovld __cnfn exp(half16);
6958#endif //cl_khr_fp16
6959
6960/**
6961 * Exponential base 2 function.
6962 */
6963float __ovld __cnfn exp2(float);
6964float2 __ovld __cnfn exp2(float2);
6965float3 __ovld __cnfn exp2(float3);
6966float4 __ovld __cnfn exp2(float4);
6967float8 __ovld __cnfn exp2(float8);
6968float16 __ovld __cnfn exp2(float16);
6969#ifdef cl_khr_fp64
6970double __ovld __cnfn exp2(double);
6971double2 __ovld __cnfn exp2(double2);
6972double3 __ovld __cnfn exp2(double3);
6973double4 __ovld __cnfn exp2(double4);
6974double8 __ovld __cnfn exp2(double8);
6975double16 __ovld __cnfn exp2(double16);
6976#endif //cl_khr_fp64
6977#ifdef cl_khr_fp16
6978half __ovld __cnfn exp2(half);
6979half2 __ovld __cnfn exp2(half2);
6980half3 __ovld __cnfn exp2(half3);
6981half4 __ovld __cnfn exp2(half4);
6982half8 __ovld __cnfn exp2(half8);
6983half16 __ovld __cnfn exp2(half16);
6984#endif //cl_khr_fp16
6985
6986/**
6987 * Exponential base 10 function.
6988 */
6989float __ovld __cnfn exp10(float);
6990float2 __ovld __cnfn exp10(float2);
6991float3 __ovld __cnfn exp10(float3);
6992float4 __ovld __cnfn exp10(float4);
6993float8 __ovld __cnfn exp10(float8);
6994float16 __ovld __cnfn exp10(float16);
6995#ifdef cl_khr_fp64
6996double __ovld __cnfn exp10(double);
6997double2 __ovld __cnfn exp10(double2);
6998double3 __ovld __cnfn exp10(double3);
6999double4 __ovld __cnfn exp10(double4);
7000double8 __ovld __cnfn exp10(double8);
7001double16 __ovld __cnfn exp10(double16);
7002#endif //cl_khr_fp64
7003#ifdef cl_khr_fp16
7004half __ovld __cnfn exp10(half);
7005half2 __ovld __cnfn exp10(half2);
7006half3 __ovld __cnfn exp10(half3);
7007half4 __ovld __cnfn exp10(half4);
7008half8 __ovld __cnfn exp10(half8);
7009half16 __ovld __cnfn exp10(half16);
7010#endif //cl_khr_fp16
7011
7012/**
7013 * Compute e^x- 1.0.
7014 */
7015float __ovld __cnfn expm1(float);
7016float2 __ovld __cnfn expm1(float2);
7017float3 __ovld __cnfn expm1(float3);
7018float4 __ovld __cnfn expm1(float4);
7019float8 __ovld __cnfn expm1(float8);
7020float16 __ovld __cnfn expm1(float16);
7021#ifdef cl_khr_fp64
7022double __ovld __cnfn expm1(double);
7023double2 __ovld __cnfn expm1(double2);
7024double3 __ovld __cnfn expm1(double3);
7025double4 __ovld __cnfn expm1(double4);
7026double8 __ovld __cnfn expm1(double8);
7027double16 __ovld __cnfn expm1(double16);
7028#endif //cl_khr_fp64
7029#ifdef cl_khr_fp16
7030half __ovld __cnfn expm1(half);
7031half2 __ovld __cnfn expm1(half2);
7032half3 __ovld __cnfn expm1(half3);
7033half4 __ovld __cnfn expm1(half4);
7034half8 __ovld __cnfn expm1(half8);
7035half16 __ovld __cnfn expm1(half16);
7036#endif //cl_khr_fp16
7037
7038/**
7039 * Compute absolute value of a floating-point number.
7040 */
7041float __ovld __cnfn fabs(float);
7042float2 __ovld __cnfn fabs(float2);
7043float3 __ovld __cnfn fabs(float3);
7044float4 __ovld __cnfn fabs(float4);
7045float8 __ovld __cnfn fabs(float8);
7046float16 __ovld __cnfn fabs(float16);
7047#ifdef cl_khr_fp64
7048double __ovld __cnfn fabs(double);
7049double2 __ovld __cnfn fabs(double2);
7050double3 __ovld __cnfn fabs(double3);
7051double4 __ovld __cnfn fabs(double4);
7052double8 __ovld __cnfn fabs(double8);
7053double16 __ovld __cnfn fabs(double16);
7054#endif //cl_khr_fp64
7055#ifdef cl_khr_fp16
7056half __ovld __cnfn fabs(half);
7057half2 __ovld __cnfn fabs(half2);
7058half3 __ovld __cnfn fabs(half3);
7059half4 __ovld __cnfn fabs(half4);
7060half8 __ovld __cnfn fabs(half8);
7061half16 __ovld __cnfn fabs(half16);
7062#endif //cl_khr_fp16
7063
7064/**
7065 * x - y if x > y, +0 if x is less than or equal to y.
7066 */
7067float __ovld __cnfn fdim(float, float);
7068float2 __ovld __cnfn fdim(float2, float2);
7069float3 __ovld __cnfn fdim(float3, float3);
7070float4 __ovld __cnfn fdim(float4, float4);
7071float8 __ovld __cnfn fdim(float8, float8);
7072float16 __ovld __cnfn fdim(float16, float16);
7073#ifdef cl_khr_fp64
7074double __ovld __cnfn fdim(double, double);
7075double2 __ovld __cnfn fdim(double2, double2);
7076double3 __ovld __cnfn fdim(double3, double3);
7077double4 __ovld __cnfn fdim(double4, double4);
7078double8 __ovld __cnfn fdim(double8, double8);
7079double16 __ovld __cnfn fdim(double16, double16);
7080#endif //cl_khr_fp64
7081#ifdef cl_khr_fp16
7082half __ovld __cnfn fdim(half, half);
7083half2 __ovld __cnfn fdim(half2, half2);
7084half3 __ovld __cnfn fdim(half3, half3);
7085half4 __ovld __cnfn fdim(half4, half4);
7086half8 __ovld __cnfn fdim(half8, half8);
7087half16 __ovld __cnfn fdim(half16, half16);
7088#endif //cl_khr_fp16
7089
7090/**
7091 * Round to integral value using the round to -ve
7092 * infinity rounding mode.
7093 */
7094float __ovld __cnfn floor(float);
7095float2 __ovld __cnfn floor(float2);
7096float3 __ovld __cnfn floor(float3);
7097float4 __ovld __cnfn floor(float4);
7098float8 __ovld __cnfn floor(float8);
7099float16 __ovld __cnfn floor(float16);
7100#ifdef cl_khr_fp64
7101double __ovld __cnfn floor(double);
7102double2 __ovld __cnfn floor(double2);
7103double3 __ovld __cnfn floor(double3);
7104double4 __ovld __cnfn floor(double4);
7105double8 __ovld __cnfn floor(double8);
7106double16 __ovld __cnfn floor(double16);
7107#endif //cl_khr_fp64
7108#ifdef cl_khr_fp16
7109half __ovld __cnfn floor(half);
7110half2 __ovld __cnfn floor(half2);
7111half3 __ovld __cnfn floor(half3);
7112half4 __ovld __cnfn floor(half4);
7113half8 __ovld __cnfn floor(half8);
7114half16 __ovld __cnfn floor(half16);
7115#endif //cl_khr_fp16
7116
7117/**
7118 * Returns the correctly rounded floating-point
7119 * representation of the sum of c with the infinitely
7120 * precise product of a and b. Rounding of
7121 * intermediate products shall not occur. Edge case
7122 * behavior is per the IEEE 754-2008 standard.
7123 */
7124float __ovld __cnfn fma(float, float, float);
7125float2 __ovld __cnfn fma(float2, float2, float2);
7126float3 __ovld __cnfn fma(float3, float3, float3);
7127float4 __ovld __cnfn fma(float4, float4, float4);
7128float8 __ovld __cnfn fma(float8, float8, float8);
7129float16 __ovld __cnfn fma(float16, float16, float16);
7130#ifdef cl_khr_fp64
7131double __ovld __cnfn fma(double, double, double);
7132double2 __ovld __cnfn fma(double2, double2, double2);
7133double3 __ovld __cnfn fma(double3, double3, double3);
7134double4 __ovld __cnfn fma(double4, double4, double4);
7135double8 __ovld __cnfn fma(double8, double8, double8);
7136double16 __ovld __cnfn fma(double16, double16, double16);
7137#endif //cl_khr_fp64
7138#ifdef cl_khr_fp16
7139half __ovld __cnfn fma(half, half, half);
7140half2 __ovld __cnfn fma(half2, half2, half2);
7141half3 __ovld __cnfn fma(half3, half3, half3);
7142half4 __ovld __cnfn fma(half4, half4, half4);
7143half8 __ovld __cnfn fma(half8, half8, half8);
7144half16 __ovld __cnfn fma(half16, half16, half16);
7145#endif //cl_khr_fp16
7146
7147/**
7148 * Returns y if x < y, otherwise it returns x. If one
7149 * argument is a NaN, fmax() returns the other
7150 * argument. If both arguments are NaNs, fmax()
7151 * returns a NaN.
7152 */
7153float __ovld __cnfn fmax(float, float);
7154float2 __ovld __cnfn fmax(float2, float2);
7155float3 __ovld __cnfn fmax(float3, float3);
7156float4 __ovld __cnfn fmax(float4, float4);
7157float8 __ovld __cnfn fmax(float8, float8);
7158float16 __ovld __cnfn fmax(float16, float16);
7159float2 __ovld __cnfn fmax(float2, float);
7160float3 __ovld __cnfn fmax(float3, float);
7161float4 __ovld __cnfn fmax(float4, float);
7162float8 __ovld __cnfn fmax(float8, float);
7163float16 __ovld __cnfn fmax(float16, float);
7164#ifdef cl_khr_fp64
7165double __ovld __cnfn fmax(double, double);
7166double2 __ovld __cnfn fmax(double2, double2);
7167double3 __ovld __cnfn fmax(double3, double3);
7168double4 __ovld __cnfn fmax(double4, double4);
7169double8 __ovld __cnfn fmax(double8, double8);
7170double16 __ovld __cnfn fmax(double16, double16);
7171double2 __ovld __cnfn fmax(double2, double);
7172double3 __ovld __cnfn fmax(double3, double);
7173double4 __ovld __cnfn fmax(double4, double);
7174double8 __ovld __cnfn fmax(double8, double);
7175double16 __ovld __cnfn fmax(double16, double);
7176#endif //cl_khr_fp64
7177#ifdef cl_khr_fp16
7178half __ovld __cnfn fmax(half, half);
7179half2 __ovld __cnfn fmax(half2, half2);
7180half3 __ovld __cnfn fmax(half3, half3);
7181half4 __ovld __cnfn fmax(half4, half4);
7182half8 __ovld __cnfn fmax(half8, half8);
7183half16 __ovld __cnfn fmax(half16, half16);
7184half2 __ovld __cnfn fmax(half2, half);
7185half3 __ovld __cnfn fmax(half3, half);
7186half4 __ovld __cnfn fmax(half4, half);
7187half8 __ovld __cnfn fmax(half8, half);
7188half16 __ovld __cnfn fmax(half16, half);
7189#endif //cl_khr_fp16
7190
7191/**
7192 * Returns y if y < x, otherwise it returns x. If one
7193 * argument is a NaN, fmin() returns the other
7194 * argument. If both arguments are NaNs, fmin()
7195 * returns a NaN.
7196 */
7197float __ovld __cnfn fmin(float, float);
7198float2 __ovld __cnfn fmin(float2, float2);
7199float3 __ovld __cnfn fmin(float3, float3);
7200float4 __ovld __cnfn fmin(float4, float4);
7201float8 __ovld __cnfn fmin(float8, float8);
7202float16 __ovld __cnfn fmin(float16, float16);
7203float2 __ovld __cnfn fmin(float2, float);
7204float3 __ovld __cnfn fmin(float3, float);
7205float4 __ovld __cnfn fmin(float4, float);
7206float8 __ovld __cnfn fmin(float8, float);
7207float16 __ovld __cnfn fmin(float16, float);
7208#ifdef cl_khr_fp64
7209double __ovld __cnfn fmin(double, double);
7210double2 __ovld __cnfn fmin(double2, double2);
7211double3 __ovld __cnfn fmin(double3, double3);
7212double4 __ovld __cnfn fmin(double4, double4);
7213double8 __ovld __cnfn fmin(double8, double8);
7214double16 __ovld __cnfn fmin(double16, double16);
7215double2 __ovld __cnfn fmin(double2, double);
7216double3 __ovld __cnfn fmin(double3, double);
7217double4 __ovld __cnfn fmin(double4, double);
7218double8 __ovld __cnfn fmin(double8, double);
7219double16 __ovld __cnfn fmin(double16, double);
7220#endif //cl_khr_fp64
7221#ifdef cl_khr_fp16
7222half __ovld __cnfn fmin(half, half);
7223half2 __ovld __cnfn fmin(half2, half2);
7224half3 __ovld __cnfn fmin(half3, half3);
7225half4 __ovld __cnfn fmin(half4, half4);
7226half8 __ovld __cnfn fmin(half8, half8);
7227half16 __ovld __cnfn fmin(half16, half16);
7228half2 __ovld __cnfn fmin(half2, half);
7229half3 __ovld __cnfn fmin(half3, half);
7230half4 __ovld __cnfn fmin(half4, half);
7231half8 __ovld __cnfn fmin(half8, half);
7232half16 __ovld __cnfn fmin(half16, half);
7233#endif //cl_khr_fp16
7234
7235/**
7236 * Modulus. Returns x - y * trunc (x/y).
7237 */
7238float __ovld __cnfn fmod(float, float);
7239float2 __ovld __cnfn fmod(float2, float2);
7240float3 __ovld __cnfn fmod(float3, float3);
7241float4 __ovld __cnfn fmod(float4, float4);
7242float8 __ovld __cnfn fmod(float8, float8);
7243float16 __ovld __cnfn fmod(float16, float16);
7244#ifdef cl_khr_fp64
7245double __ovld __cnfn fmod(double, double);
7246double2 __ovld __cnfn fmod(double2, double2);
7247double3 __ovld __cnfn fmod(double3, double3);
7248double4 __ovld __cnfn fmod(double4, double4);
7249double8 __ovld __cnfn fmod(double8, double8);
7250double16 __ovld __cnfn fmod(double16, double16);
7251#endif //cl_khr_fp64
7252#ifdef cl_khr_fp16
7253half __ovld __cnfn fmod(half, half);
7254half2 __ovld __cnfn fmod(half2, half2);
7255half3 __ovld __cnfn fmod(half3, half3);
7256half4 __ovld __cnfn fmod(half4, half4);
7257half8 __ovld __cnfn fmod(half8, half8);
7258half16 __ovld __cnfn fmod(half16, half16);
7259#endif //cl_khr_fp16
7260
7261/**
7262 * Returns fmin(x - floor (x), 0x1.fffffep-1f ).
7263 * floor(x) is returned in iptr.
7264 */
7265#if defined(__opencl_c_generic_address_space)
7266float __ovld fract(float, float *);
7267float2 __ovld fract(float2, float2 *);
7268float3 __ovld fract(float3, float3 *);
7269float4 __ovld fract(float4, float4 *);
7270float8 __ovld fract(float8, float8 *);
7271float16 __ovld fract(float16, float16 *);
7272#ifdef cl_khr_fp64
7273double __ovld fract(double, double *);
7274double2 __ovld fract(double2, double2 *);
7275double3 __ovld fract(double3, double3 *);
7276double4 __ovld fract(double4, double4 *);
7277double8 __ovld fract(double8, double8 *);
7278double16 __ovld fract(double16, double16 *);
7279#endif //cl_khr_fp64
7280#ifdef cl_khr_fp16
7281half __ovld fract(half, half *);
7282half2 __ovld fract(half2, half2 *);
7283half3 __ovld fract(half3, half3 *);
7284half4 __ovld fract(half4, half4 *);
7285half8 __ovld fract(half8, half8 *);
7286half16 __ovld fract(half16, half16 *);
7287#endif //cl_khr_fp16
7288#endif //defined(__opencl_c_generic_address_space)
7289
7290#if defined(__opencl_c_named_address_space_builtins)
7291float __ovld fract(float, __global float *);
7292float2 __ovld fract(float2, __global float2 *);
7293float3 __ovld fract(float3, __global float3 *);
7294float4 __ovld fract(float4, __global float4 *);
7295float8 __ovld fract(float8, __global float8 *);
7296float16 __ovld fract(float16, __global float16 *);
7297float __ovld fract(float, __local float *);
7298float2 __ovld fract(float2, __local float2 *);
7299float3 __ovld fract(float3, __local float3 *);
7300float4 __ovld fract(float4, __local float4 *);
7301float8 __ovld fract(float8, __local float8 *);
7302float16 __ovld fract(float16, __local float16 *);
7303float __ovld fract(float, __private float *);
7304float2 __ovld fract(float2, __private float2 *);
7305float3 __ovld fract(float3, __private float3 *);
7306float4 __ovld fract(float4, __private float4 *);
7307float8 __ovld fract(float8, __private float8 *);
7308float16 __ovld fract(float16, __private float16 *);
7309#ifdef cl_khr_fp64
7310double __ovld fract(double, __global double *);
7311double2 __ovld fract(double2, __global double2 *);
7312double3 __ovld fract(double3, __global double3 *);
7313double4 __ovld fract(double4, __global double4 *);
7314double8 __ovld fract(double8, __global double8 *);
7315double16 __ovld fract(double16, __global double16 *);
7316double __ovld fract(double, __local double *);
7317double2 __ovld fract(double2, __local double2 *);
7318double3 __ovld fract(double3, __local double3 *);
7319double4 __ovld fract(double4, __local double4 *);
7320double8 __ovld fract(double8, __local double8 *);
7321double16 __ovld fract(double16, __local double16 *);
7322double __ovld fract(double, __private double *);
7323double2 __ovld fract(double2, __private double2 *);
7324double3 __ovld fract(double3, __private double3 *);
7325double4 __ovld fract(double4, __private double4 *);
7326double8 __ovld fract(double8, __private double8 *);
7327double16 __ovld fract(double16, __private double16 *);
7328#endif //cl_khr_fp64
7329#ifdef cl_khr_fp16
7330half __ovld fract(half, __global half *);
7331half2 __ovld fract(half2, __global half2 *);
7332half3 __ovld fract(half3, __global half3 *);
7333half4 __ovld fract(half4, __global half4 *);
7334half8 __ovld fract(half8, __global half8 *);
7335half16 __ovld fract(half16, __global half16 *);
7336half __ovld fract(half, __local half *);
7337half2 __ovld fract(half2, __local half2 *);
7338half3 __ovld fract(half3, __local half3 *);
7339half4 __ovld fract(half4, __local half4 *);
7340half8 __ovld fract(half8, __local half8 *);
7341half16 __ovld fract(half16, __local half16 *);
7342half __ovld fract(half, __private half *);
7343half2 __ovld fract(half2, __private half2 *);
7344half3 __ovld fract(half3, __private half3 *);
7345half4 __ovld fract(half4, __private half4 *);
7346half8 __ovld fract(half8, __private half8 *);
7347half16 __ovld fract(half16, __private half16 *);
7348#endif //cl_khr_fp16
7349#endif //defined(__opencl_c_named_address_space_builtins)
7350
7351/**
7352 * Extract mantissa and exponent from x. For each
7353 * component the mantissa returned is a float with
7354 * magnitude in the interval [1/2, 1) or 0. Each
7355 * component of x equals mantissa returned * 2^exp.
7356 */
7357#if defined(__opencl_c_generic_address_space)
7358float __ovld frexp(float, int *);
7359float2 __ovld frexp(float2, int2 *);
7360float3 __ovld frexp(float3, int3 *);
7361float4 __ovld frexp(float4, int4 *);
7362float8 __ovld frexp(float8, int8 *);
7363float16 __ovld frexp(float16, int16 *);
7364#ifdef cl_khr_fp64
7365double __ovld frexp(double, int *);
7366double2 __ovld frexp(double2, int2 *);
7367double3 __ovld frexp(double3, int3 *);
7368double4 __ovld frexp(double4, int4 *);
7369double8 __ovld frexp(double8, int8 *);
7370double16 __ovld frexp(double16, int16 *);
7371#endif //cl_khr_fp64
7372#ifdef cl_khr_fp16
7373half __ovld frexp(half, int *);
7374half2 __ovld frexp(half2, int2 *);
7375half3 __ovld frexp(half3, int3 *);
7376half4 __ovld frexp(half4, int4 *);
7377half8 __ovld frexp(half8, int8 *);
7378half16 __ovld frexp(half16, int16 *);
7379#endif //cl_khr_fp16
7380#endif //defined(__opencl_c_generic_address_space)
7381
7382#if defined(__opencl_c_named_address_space_builtins)
7383float __ovld frexp(float, __global int *);
7384float2 __ovld frexp(float2, __global int2 *);
7385float3 __ovld frexp(float3, __global int3 *);
7386float4 __ovld frexp(float4, __global int4 *);
7387float8 __ovld frexp(float8, __global int8 *);
7388float16 __ovld frexp(float16, __global int16 *);
7389float __ovld frexp(float, __local int *);
7390float2 __ovld frexp(float2, __local int2 *);
7391float3 __ovld frexp(float3, __local int3 *);
7392float4 __ovld frexp(float4, __local int4 *);
7393float8 __ovld frexp(float8, __local int8 *);
7394float16 __ovld frexp(float16, __local int16 *);
7395float __ovld frexp(float, __private int *);
7396float2 __ovld frexp(float2, __private int2 *);
7397float3 __ovld frexp(float3, __private int3 *);
7398float4 __ovld frexp(float4, __private int4 *);
7399float8 __ovld frexp(float8, __private int8 *);
7400float16 __ovld frexp(float16, __private int16 *);
7401#ifdef cl_khr_fp64
7402double __ovld frexp(double, __global int *);
7403double2 __ovld frexp(double2, __global int2 *);
7404double3 __ovld frexp(double3, __global int3 *);
7405double4 __ovld frexp(double4, __global int4 *);
7406double8 __ovld frexp(double8, __global int8 *);
7407double16 __ovld frexp(double16, __global int16 *);
7408double __ovld frexp(double, __local int *);
7409double2 __ovld frexp(double2, __local int2 *);
7410double3 __ovld frexp(double3, __local int3 *);
7411double4 __ovld frexp(double4, __local int4 *);
7412double8 __ovld frexp(double8, __local int8 *);
7413double16 __ovld frexp(double16, __local int16 *);
7414double __ovld frexp(double, __private int *);
7415double2 __ovld frexp(double2, __private int2 *);
7416double3 __ovld frexp(double3, __private int3 *);
7417double4 __ovld frexp(double4, __private int4 *);
7418double8 __ovld frexp(double8, __private int8 *);
7419double16 __ovld frexp(double16, __private int16 *);
7420#endif //cl_khr_fp64
7421#ifdef cl_khr_fp16
7422half __ovld frexp(half, __global int *);
7423half2 __ovld frexp(half2, __global int2 *);
7424half3 __ovld frexp(half3, __global int3 *);
7425half4 __ovld frexp(half4, __global int4 *);
7426half8 __ovld frexp(half8, __global int8 *);
7427half16 __ovld frexp(half16, __global int16 *);
7428half __ovld frexp(half, __local int *);
7429half2 __ovld frexp(half2, __local int2 *);
7430half3 __ovld frexp(half3, __local int3 *);
7431half4 __ovld frexp(half4, __local int4 *);
7432half8 __ovld frexp(half8, __local int8 *);
7433half16 __ovld frexp(half16, __local int16 *);
7434half __ovld frexp(half, __private int *);
7435half2 __ovld frexp(half2, __private int2 *);
7436half3 __ovld frexp(half3, __private int3 *);
7437half4 __ovld frexp(half4, __private int4 *);
7438half8 __ovld frexp(half8, __private int8 *);
7439half16 __ovld frexp(half16, __private int16 *);
7440#endif //cl_khr_fp16
7441#endif //defined(__opencl_c_named_address_space_builtins)
7442
7443/**
7444 * Compute the value of the square root of x^2 + y^2
7445 * without undue overflow or underflow.
7446 */
7447float __ovld __cnfn hypot(float, float);
7448float2 __ovld __cnfn hypot(float2, float2);
7449float3 __ovld __cnfn hypot(float3, float3);
7450float4 __ovld __cnfn hypot(float4, float4);
7451float8 __ovld __cnfn hypot(float8, float8);
7452float16 __ovld __cnfn hypot(float16, float16);
7453#ifdef cl_khr_fp64
7454double __ovld __cnfn hypot(double, double);
7455double2 __ovld __cnfn hypot(double2, double2);
7456double3 __ovld __cnfn hypot(double3, double3);
7457double4 __ovld __cnfn hypot(double4, double4);
7458double8 __ovld __cnfn hypot(double8, double8);
7459double16 __ovld __cnfn hypot(double16, double16);
7460#endif //cl_khr_fp64
7461#ifdef cl_khr_fp16
7462half __ovld __cnfn hypot(half, half);
7463half2 __ovld __cnfn hypot(half2, half2);
7464half3 __ovld __cnfn hypot(half3, half3);
7465half4 __ovld __cnfn hypot(half4, half4);
7466half8 __ovld __cnfn hypot(half8, half8);
7467half16 __ovld __cnfn hypot(half16, half16);
7468#endif //cl_khr_fp16
7469
7470/**
7471 * Return the exponent as an integer value.
7472 */
7474int2 __ovld __cnfn ilogb(float2);
7475int3 __ovld __cnfn ilogb(float3);
7476int4 __ovld __cnfn ilogb(float4);
7477int8 __ovld __cnfn ilogb(float8);
7478int16 __ovld __cnfn ilogb(float16);
7479#ifdef cl_khr_fp64
7480int __ovld __cnfn ilogb(double);
7481int2 __ovld __cnfn ilogb(double2);
7482int3 __ovld __cnfn ilogb(double3);
7483int4 __ovld __cnfn ilogb(double4);
7484int8 __ovld __cnfn ilogb(double8);
7485int16 __ovld __cnfn ilogb(double16);
7486#endif //cl_khr_fp64
7487#ifdef cl_khr_fp16
7488int __ovld __cnfn ilogb(half);
7489int2 __ovld __cnfn ilogb(half2);
7490int3 __ovld __cnfn ilogb(half3);
7491int4 __ovld __cnfn ilogb(half4);
7492int8 __ovld __cnfn ilogb(half8);
7493int16 __ovld __cnfn ilogb(half16);
7494#endif //cl_khr_fp16
7495
7496/**
7497 * Multiply x by 2 to the power n.
7498 */
7499float __ovld __cnfn ldexp(float, int);
7500float2 __ovld __cnfn ldexp(float2, int2);
7501float3 __ovld __cnfn ldexp(float3, int3);
7502float4 __ovld __cnfn ldexp(float4, int4);
7503float8 __ovld __cnfn ldexp(float8, int8);
7504float16 __ovld __cnfn ldexp(float16, int16);
7505float2 __ovld __cnfn ldexp(float2, int);
7506float3 __ovld __cnfn ldexp(float3, int);
7507float4 __ovld __cnfn ldexp(float4, int);
7508float8 __ovld __cnfn ldexp(float8, int);
7509float16 __ovld __cnfn ldexp(float16, int);
7510#ifdef cl_khr_fp64
7511double __ovld __cnfn ldexp(double, int);
7512double2 __ovld __cnfn ldexp(double2, int2);
7513double3 __ovld __cnfn ldexp(double3, int3);
7514double4 __ovld __cnfn ldexp(double4, int4);
7515double8 __ovld __cnfn ldexp(double8, int8);
7516double16 __ovld __cnfn ldexp(double16, int16);
7517double2 __ovld __cnfn ldexp(double2, int);
7518double3 __ovld __cnfn ldexp(double3, int);
7519double4 __ovld __cnfn ldexp(double4, int);
7520double8 __ovld __cnfn ldexp(double8, int);
7521double16 __ovld __cnfn ldexp(double16, int);
7522#endif //cl_khr_fp64
7523#ifdef cl_khr_fp16
7524half __ovld __cnfn ldexp(half, int);
7525half2 __ovld __cnfn ldexp(half2, int2);
7526half3 __ovld __cnfn ldexp(half3, int3);
7527half4 __ovld __cnfn ldexp(half4, int4);
7528half8 __ovld __cnfn ldexp(half8, int8);
7529half16 __ovld __cnfn ldexp(half16, int16);
7530half2 __ovld __cnfn ldexp(half2, int);
7531half3 __ovld __cnfn ldexp(half3, int);
7532half4 __ovld __cnfn ldexp(half4, int);
7533half8 __ovld __cnfn ldexp(half8, int);
7534half16 __ovld __cnfn ldexp(half16, int);
7535#endif //cl_khr_fp16
7536
7537/**
7538 * Log gamma function. Returns the natural
7539 * logarithm of the absolute value of the gamma
7540 * function. The sign of the gamma function is
7541 * returned in the signp argument of lgamma_r.
7542 */
7543float __ovld __cnfn lgamma(float);
7544float2 __ovld __cnfn lgamma(float2);
7545float3 __ovld __cnfn lgamma(float3);
7546float4 __ovld __cnfn lgamma(float4);
7547float8 __ovld __cnfn lgamma(float8);
7548float16 __ovld __cnfn lgamma(float16);
7549#ifdef cl_khr_fp64
7550double __ovld __cnfn lgamma(double);
7551double2 __ovld __cnfn lgamma(double2);
7552double3 __ovld __cnfn lgamma(double3);
7553double4 __ovld __cnfn lgamma(double4);
7554double8 __ovld __cnfn lgamma(double8);
7555double16 __ovld __cnfn lgamma(double16);
7556#endif //cl_khr_fp64
7557#ifdef cl_khr_fp16
7558half __ovld __cnfn lgamma(half);
7559half2 __ovld __cnfn lgamma(half2);
7560half3 __ovld __cnfn lgamma(half3);
7561half4 __ovld __cnfn lgamma(half4);
7562half8 __ovld __cnfn lgamma(half8);
7563half16 __ovld __cnfn lgamma(half16);
7564#endif //cl_khr_fp16
7565
7566#if defined(__opencl_c_generic_address_space)
7567float __ovld lgamma_r(float, int *);
7568float2 __ovld lgamma_r(float2, int2 *);
7569float3 __ovld lgamma_r(float3, int3 *);
7570float4 __ovld lgamma_r(float4, int4 *);
7571float8 __ovld lgamma_r(float8, int8 *);
7572float16 __ovld lgamma_r(float16, int16 *);
7573#ifdef cl_khr_fp64
7574double __ovld lgamma_r(double, int *);
7575double2 __ovld lgamma_r(double2, int2 *);
7576double3 __ovld lgamma_r(double3, int3 *);
7577double4 __ovld lgamma_r(double4, int4 *);
7578double8 __ovld lgamma_r(double8, int8 *);
7579double16 __ovld lgamma_r(double16, int16 *);
7580#endif //cl_khr_fp64
7581#ifdef cl_khr_fp16
7582half __ovld lgamma_r(half, int *);
7583half2 __ovld lgamma_r(half2, int2 *);
7584half3 __ovld lgamma_r(half3, int3 *);
7585half4 __ovld lgamma_r(half4, int4 *);
7586half8 __ovld lgamma_r(half8, int8 *);
7587half16 __ovld lgamma_r(half16, int16 *);
7588#endif //cl_khr_fp16
7589#endif //defined(__opencl_c_generic_address_space)
7590
7591#if defined(__opencl_c_named_address_space_builtins)
7592float __ovld lgamma_r(float, __global int *);
7593float2 __ovld lgamma_r(float2, __global int2 *);
7594float3 __ovld lgamma_r(float3, __global int3 *);
7595float4 __ovld lgamma_r(float4, __global int4 *);
7596float8 __ovld lgamma_r(float8, __global int8 *);
7597float16 __ovld lgamma_r(float16, __global int16 *);
7598float __ovld lgamma_r(float, __local int *);
7599float2 __ovld lgamma_r(float2, __local int2 *);
7600float3 __ovld lgamma_r(float3, __local int3 *);
7601float4 __ovld lgamma_r(float4, __local int4 *);
7602float8 __ovld lgamma_r(float8, __local int8 *);
7603float16 __ovld lgamma_r(float16, __local int16 *);
7604float __ovld lgamma_r(float, __private int *);
7605float2 __ovld lgamma_r(float2, __private int2 *);
7606float3 __ovld lgamma_r(float3, __private int3 *);
7607float4 __ovld lgamma_r(float4, __private int4 *);
7608float8 __ovld lgamma_r(float8, __private int8 *);
7609float16 __ovld lgamma_r(float16, __private int16 *);
7610#ifdef cl_khr_fp64
7611double __ovld lgamma_r(double, __global int *);
7612double2 __ovld lgamma_r(double2, __global int2 *);
7613double3 __ovld lgamma_r(double3, __global int3 *);
7614double4 __ovld lgamma_r(double4, __global int4 *);
7615double8 __ovld lgamma_r(double8, __global int8 *);
7616double16 __ovld lgamma_r(double16, __global int16 *);
7617double __ovld lgamma_r(double, __local int *);
7618double2 __ovld lgamma_r(double2, __local int2 *);
7619double3 __ovld lgamma_r(double3, __local int3 *);
7620double4 __ovld lgamma_r(double4, __local int4 *);
7621double8 __ovld lgamma_r(double8, __local int8 *);
7622double16 __ovld lgamma_r(double16, __local int16 *);
7623double __ovld lgamma_r(double, __private int *);
7624double2 __ovld lgamma_r(double2, __private int2 *);
7625double3 __ovld lgamma_r(double3, __private int3 *);
7626double4 __ovld lgamma_r(double4, __private int4 *);
7627double8 __ovld lgamma_r(double8, __private int8 *);
7628double16 __ovld lgamma_r(double16, __private int16 *);
7629#endif //cl_khr_fp64
7630#ifdef cl_khr_fp16
7631half __ovld lgamma_r(half, __global int *);
7632half2 __ovld lgamma_r(half2, __global int2 *);
7633half3 __ovld lgamma_r(half3, __global int3 *);
7634half4 __ovld lgamma_r(half4, __global int4 *);
7635half8 __ovld lgamma_r(half8, __global int8 *);
7636half16 __ovld lgamma_r(half16, __global int16 *);
7637half __ovld lgamma_r(half, __local int *);
7638half2 __ovld lgamma_r(half2, __local int2 *);
7639half3 __ovld lgamma_r(half3, __local int3 *);
7640half4 __ovld lgamma_r(half4, __local int4 *);
7641half8 __ovld lgamma_r(half8, __local int8 *);
7642half16 __ovld lgamma_r(half16, __local int16 *);
7643half __ovld lgamma_r(half, __private int *);
7644half2 __ovld lgamma_r(half2, __private int2 *);
7645half3 __ovld lgamma_r(half3, __private int3 *);
7646half4 __ovld lgamma_r(half4, __private int4 *);
7647half8 __ovld lgamma_r(half8, __private int8 *);
7648half16 __ovld lgamma_r(half16, __private int16 *);
7649#endif //cl_khr_fp16
7650#endif //defined(__opencl_c_named_address_space_builtins)
7651
7652/**
7653 * Compute natural logarithm.
7654 */
7655float __ovld __cnfn log(float);
7656float2 __ovld __cnfn log(float2);
7657float3 __ovld __cnfn log(float3);
7658float4 __ovld __cnfn log(float4);
7659float8 __ovld __cnfn log(float8);
7660float16 __ovld __cnfn log(float16);
7661#ifdef cl_khr_fp64
7662double __ovld __cnfn log(double);
7663double2 __ovld __cnfn log(double2);
7664double3 __ovld __cnfn log(double3);
7665double4 __ovld __cnfn log(double4);
7666double8 __ovld __cnfn log(double8);
7667double16 __ovld __cnfn log(double16);
7668#endif //cl_khr_fp64
7669#ifdef cl_khr_fp16
7670half __ovld __cnfn log(half);
7671half2 __ovld __cnfn log(half2);
7672half3 __ovld __cnfn log(half3);
7673half4 __ovld __cnfn log(half4);
7674half8 __ovld __cnfn log(half8);
7675half16 __ovld __cnfn log(half16);
7676#endif //cl_khr_fp16
7677
7678/**
7679 * Compute a base 2 logarithm.
7680 */
7681float __ovld __cnfn log2(float);
7682float2 __ovld __cnfn log2(float2);
7683float3 __ovld __cnfn log2(float3);
7684float4 __ovld __cnfn log2(float4);
7685float8 __ovld __cnfn log2(float8);
7686float16 __ovld __cnfn log2(float16);
7687#ifdef cl_khr_fp64
7688double __ovld __cnfn log2(double);
7689double2 __ovld __cnfn log2(double2);
7690double3 __ovld __cnfn log2(double3);
7691double4 __ovld __cnfn log2(double4);
7692double8 __ovld __cnfn log2(double8);
7693double16 __ovld __cnfn log2(double16);
7694#endif //cl_khr_fp64
7695#ifdef cl_khr_fp16
7696half __ovld __cnfn log2(half);
7697half2 __ovld __cnfn log2(half2);
7698half3 __ovld __cnfn log2(half3);
7699half4 __ovld __cnfn log2(half4);
7700half8 __ovld __cnfn log2(half8);
7701half16 __ovld __cnfn log2(half16);
7702#endif //cl_khr_fp16
7703
7704/**
7705 * Compute a base 10 logarithm.
7706 */
7707float __ovld __cnfn log10(float);
7708float2 __ovld __cnfn log10(float2);
7709float3 __ovld __cnfn log10(float3);
7710float4 __ovld __cnfn log10(float4);
7711float8 __ovld __cnfn log10(float8);
7712float16 __ovld __cnfn log10(float16);
7713#ifdef cl_khr_fp64
7714double __ovld __cnfn log10(double);
7715double2 __ovld __cnfn log10(double2);
7716double3 __ovld __cnfn log10(double3);
7717double4 __ovld __cnfn log10(double4);
7718double8 __ovld __cnfn log10(double8);
7719double16 __ovld __cnfn log10(double16);
7720#endif //cl_khr_fp64
7721#ifdef cl_khr_fp16
7722half __ovld __cnfn log10(half);
7723half2 __ovld __cnfn log10(half2);
7724half3 __ovld __cnfn log10(half3);
7725half4 __ovld __cnfn log10(half4);
7726half8 __ovld __cnfn log10(half8);
7727half16 __ovld __cnfn log10(half16);
7728#endif //cl_khr_fp16
7729
7730/**
7731 * Compute a base e logarithm of (1.0 + x).
7732 */
7733float __ovld __cnfn log1p(float);
7734float2 __ovld __cnfn log1p(float2);
7735float3 __ovld __cnfn log1p(float3);
7736float4 __ovld __cnfn log1p(float4);
7737float8 __ovld __cnfn log1p(float8);
7738float16 __ovld __cnfn log1p(float16);
7739#ifdef cl_khr_fp64
7740double __ovld __cnfn log1p(double);
7741double2 __ovld __cnfn log1p(double2);
7742double3 __ovld __cnfn log1p(double3);
7743double4 __ovld __cnfn log1p(double4);
7744double8 __ovld __cnfn log1p(double8);
7745double16 __ovld __cnfn log1p(double16);
7746#endif //cl_khr_fp64
7747#ifdef cl_khr_fp16
7748half __ovld __cnfn log1p(half);
7749half2 __ovld __cnfn log1p(half2);
7750half3 __ovld __cnfn log1p(half3);
7751half4 __ovld __cnfn log1p(half4);
7752half8 __ovld __cnfn log1p(half8);
7753half16 __ovld __cnfn log1p(half16);
7754#endif //cl_khr_fp16
7755
7756/**
7757 * Compute the exponent of x, which is the integral
7758 * part of logr | x |.
7759 */
7760float __ovld __cnfn logb(float);
7761float2 __ovld __cnfn logb(float2);
7762float3 __ovld __cnfn logb(float3);
7763float4 __ovld __cnfn logb(float4);
7764float8 __ovld __cnfn logb(float8);
7765float16 __ovld __cnfn logb(float16);
7766#ifdef cl_khr_fp64
7767double __ovld __cnfn logb(double);
7768double2 __ovld __cnfn logb(double2);
7769double3 __ovld __cnfn logb(double3);
7770double4 __ovld __cnfn logb(double4);
7771double8 __ovld __cnfn logb(double8);
7772double16 __ovld __cnfn logb(double16);
7773#endif //cl_khr_fp64
7774#ifdef cl_khr_fp16
7775half __ovld __cnfn logb(half);
7776half2 __ovld __cnfn logb(half2);
7777half3 __ovld __cnfn logb(half3);
7778half4 __ovld __cnfn logb(half4);
7779half8 __ovld __cnfn logb(half8);
7780half16 __ovld __cnfn logb(half16);
7781#endif //cl_khr_fp16
7782
7783/**
7784 * mad approximates a * b + c. Whether or how the
7785 * product of a * b is rounded and how supernormal or
7786 * subnormal intermediate products are handled is not
7787 * defined. mad is intended to be used where speed is
7788 * preferred over accuracy.
7789 */
7790float __ovld __cnfn mad(float, float, float);
7791float2 __ovld __cnfn mad(float2, float2, float2);
7792float3 __ovld __cnfn mad(float3, float3, float3);
7793float4 __ovld __cnfn mad(float4, float4, float4);
7794float8 __ovld __cnfn mad(float8, float8, float8);
7795float16 __ovld __cnfn mad(float16, float16, float16);
7796#ifdef cl_khr_fp64
7797double __ovld __cnfn mad(double, double, double);
7798double2 __ovld __cnfn mad(double2, double2, double2);
7799double3 __ovld __cnfn mad(double3, double3, double3);
7800double4 __ovld __cnfn mad(double4, double4, double4);
7801double8 __ovld __cnfn mad(double8, double8, double8);
7802double16 __ovld __cnfn mad(double16, double16, double16);
7803#endif //cl_khr_fp64
7804#ifdef cl_khr_fp16
7805half __ovld __cnfn mad(half, half, half);
7806half2 __ovld __cnfn mad(half2, half2, half2);
7807half3 __ovld __cnfn mad(half3, half3, half3);
7808half4 __ovld __cnfn mad(half4, half4, half4);
7809half8 __ovld __cnfn mad(half8, half8, half8);
7810half16 __ovld __cnfn mad(half16, half16, half16);
7811#endif //cl_khr_fp16
7812
7813/**
7814 * Returns x if | x | > | y |, y if | y | > | x |, otherwise
7815 * fmax(x, y).
7816 */
7817float __ovld __cnfn maxmag(float, float);
7818float2 __ovld __cnfn maxmag(float2, float2);
7819float3 __ovld __cnfn maxmag(float3, float3);
7820float4 __ovld __cnfn maxmag(float4, float4);
7821float8 __ovld __cnfn maxmag(float8, float8);
7822float16 __ovld __cnfn maxmag(float16, float16);
7823#ifdef cl_khr_fp64
7824double __ovld __cnfn maxmag(double, double);
7825double2 __ovld __cnfn maxmag(double2, double2);
7826double3 __ovld __cnfn maxmag(double3, double3);
7827double4 __ovld __cnfn maxmag(double4, double4);
7828double8 __ovld __cnfn maxmag(double8, double8);
7829double16 __ovld __cnfn maxmag(double16, double16);
7830#endif //cl_khr_fp64
7831#ifdef cl_khr_fp16
7832half __ovld __cnfn maxmag(half, half);
7833half2 __ovld __cnfn maxmag(half2, half2);
7834half3 __ovld __cnfn maxmag(half3, half3);
7835half4 __ovld __cnfn maxmag(half4, half4);
7836half8 __ovld __cnfn maxmag(half8, half8);
7837half16 __ovld __cnfn maxmag(half16, half16);
7838#endif //cl_khr_fp16
7839
7840/**
7841 * Returns x if | x | < | y |, y if | y | < | x |, otherwise
7842 * fmin(x, y).
7843 */
7844float __ovld __cnfn minmag(float, float);
7845float2 __ovld __cnfn minmag(float2, float2);
7846float3 __ovld __cnfn minmag(float3, float3);
7847float4 __ovld __cnfn minmag(float4, float4);
7848float8 __ovld __cnfn minmag(float8, float8);
7849float16 __ovld __cnfn minmag(float16, float16);
7850#ifdef cl_khr_fp64
7851double __ovld __cnfn minmag(double, double);
7852double2 __ovld __cnfn minmag(double2, double2);
7853double3 __ovld __cnfn minmag(double3, double3);
7854double4 __ovld __cnfn minmag(double4, double4);
7855double8 __ovld __cnfn minmag(double8, double8);
7856double16 __ovld __cnfn minmag(double16, double16);
7857#endif //cl_khr_fp64
7858#ifdef cl_khr_fp16
7859half __ovld __cnfn minmag(half, half);
7860half2 __ovld __cnfn minmag(half2, half2);
7861half3 __ovld __cnfn minmag(half3, half3);
7862half4 __ovld __cnfn minmag(half4, half4);
7863half8 __ovld __cnfn minmag(half8, half8);
7864half16 __ovld __cnfn minmag(half16, half16);
7865#endif //cl_khr_fp16
7866
7867/**
7868 * Decompose a floating-point number. The modf
7869 * function breaks the argument x into integral and
7870 * fractional parts, each of which has the same sign as
7871 * the argument. It stores the integral part in the object
7872 * pointed to by iptr.
7873 */
7874#if defined(__opencl_c_generic_address_space)
7875float __ovld modf(float, float *);
7876float2 __ovld modf(float2, float2 *);
7877float3 __ovld modf(float3, float3 *);
7878float4 __ovld modf(float4, float4 *);
7879float8 __ovld modf(float8, float8 *);
7880float16 __ovld modf(float16, float16 *);
7881#ifdef cl_khr_fp64
7882double __ovld modf(double, double *);
7883double2 __ovld modf(double2, double2 *);
7884double3 __ovld modf(double3, double3 *);
7885double4 __ovld modf(double4, double4 *);
7886double8 __ovld modf(double8, double8 *);
7887double16 __ovld modf(double16, double16 *);
7888#endif //cl_khr_fp64
7889#ifdef cl_khr_fp16
7890half __ovld modf(half, half *);
7891half2 __ovld modf(half2, half2 *);
7892half3 __ovld modf(half3, half3 *);
7893half4 __ovld modf(half4, half4 *);
7894half8 __ovld modf(half8, half8 *);
7895half16 __ovld modf(half16, half16 *);
7896#endif //cl_khr_fp16
7897#endif //defined(__opencl_c_generic_address_space)
7898
7899#if defined(__opencl_c_named_address_space_builtins)
7900float __ovld modf(float, __global float *);
7901float2 __ovld modf(float2, __global float2 *);
7902float3 __ovld modf(float3, __global float3 *);
7903float4 __ovld modf(float4, __global float4 *);
7904float8 __ovld modf(float8, __global float8 *);
7905float16 __ovld modf(float16, __global float16 *);
7906float __ovld modf(float, __local float *);
7907float2 __ovld modf(float2, __local float2 *);
7908float3 __ovld modf(float3, __local float3 *);
7909float4 __ovld modf(float4, __local float4 *);
7910float8 __ovld modf(float8, __local float8 *);
7911float16 __ovld modf(float16, __local float16 *);
7912float __ovld modf(float, __private float *);
7913float2 __ovld modf(float2, __private float2 *);
7914float3 __ovld modf(float3, __private float3 *);
7915float4 __ovld modf(float4, __private float4 *);
7916float8 __ovld modf(float8, __private float8 *);
7917float16 __ovld modf(float16, __private float16 *);
7918#ifdef cl_khr_fp64
7919double __ovld modf(double, __global double *);
7920double2 __ovld modf(double2, __global double2 *);
7921double3 __ovld modf(double3, __global double3 *);
7922double4 __ovld modf(double4, __global double4 *);
7923double8 __ovld modf(double8, __global double8 *);
7924double16 __ovld modf(double16, __global double16 *);
7925double __ovld modf(double, __local double *);
7926double2 __ovld modf(double2, __local double2 *);
7927double3 __ovld modf(double3, __local double3 *);
7928double4 __ovld modf(double4, __local double4 *);
7929double8 __ovld modf(double8, __local double8 *);
7930double16 __ovld modf(double16, __local double16 *);
7931double __ovld modf(double, __private double *);
7932double2 __ovld modf(double2, __private double2 *);
7933double3 __ovld modf(double3, __private double3 *);
7934double4 __ovld modf(double4, __private double4 *);
7935double8 __ovld modf(double8, __private double8 *);
7936double16 __ovld modf(double16, __private double16 *);
7937#endif //cl_khr_fp64
7938#ifdef cl_khr_fp16
7939half __ovld modf(half, __global half *);
7940half2 __ovld modf(half2, __global half2 *);
7941half3 __ovld modf(half3, __global half3 *);
7942half4 __ovld modf(half4, __global half4 *);
7943half8 __ovld modf(half8, __global half8 *);
7944half16 __ovld modf(half16, __global half16 *);
7945half __ovld modf(half, __local half *);
7946half2 __ovld modf(half2, __local half2 *);
7947half3 __ovld modf(half3, __local half3 *);
7948half4 __ovld modf(half4, __local half4 *);
7949half8 __ovld modf(half8, __local half8 *);
7950half16 __ovld modf(half16, __local half16 *);
7951half __ovld modf(half, __private half *);
7952half2 __ovld modf(half2, __private half2 *);
7953half3 __ovld modf(half3, __private half3 *);
7954half4 __ovld modf(half4, __private half4 *);
7955half8 __ovld modf(half8, __private half8 *);
7956half16 __ovld modf(half16, __private half16 *);
7957#endif //cl_khr_fp16
7958#endif //defined(__opencl_c_named_address_space_builtins)
7959
7960/**
7961 * Returns a quiet NaN. The nancode may be placed
7962 * in the significand of the resulting NaN.
7963 */
7965float2 __ovld __cnfn nan(uint2);
7966float3 __ovld __cnfn nan(uint3);
7967float4 __ovld __cnfn nan(uint4);
7968float8 __ovld __cnfn nan(uint8);
7969float16 __ovld __cnfn nan(uint16);
7970#ifdef cl_khr_fp64
7971double __ovld __cnfn nan(ulong);
7972double2 __ovld __cnfn nan(ulong2);
7973double3 __ovld __cnfn nan(ulong3);
7974double4 __ovld __cnfn nan(ulong4);
7975double8 __ovld __cnfn nan(ulong8);
7976double16 __ovld __cnfn nan(ulong16);
7977#endif //cl_khr_fp64
7978#ifdef cl_khr_fp16
7979half __ovld __cnfn nan(ushort);
7980half2 __ovld __cnfn nan(ushort2);
7981half3 __ovld __cnfn nan(ushort3);
7982half4 __ovld __cnfn nan(ushort4);
7983half8 __ovld __cnfn nan(ushort8);
7984half16 __ovld __cnfn nan(ushort16);
7985#endif //cl_khr_fp16
7986
7987/**
7988 * Computes the next representable single-precision
7989 * floating-point value following x in the direction of
7990 * y. Thus, if y is less than x, nextafter() returns the
7991 * largest representable floating-point number less
7992 * than x.
7993 */
7994float __ovld __cnfn nextafter(float, float);
7995float2 __ovld __cnfn nextafter(float2, float2);
7996float3 __ovld __cnfn nextafter(float3, float3);
7997float4 __ovld __cnfn nextafter(float4, float4);
7998float8 __ovld __cnfn nextafter(float8, float8);
7999float16 __ovld __cnfn nextafter(float16, float16);
8000#ifdef cl_khr_fp64
8001double __ovld __cnfn nextafter(double, double);
8002double2 __ovld __cnfn nextafter(double2, double2);
8003double3 __ovld __cnfn nextafter(double3, double3);
8004double4 __ovld __cnfn nextafter(double4, double4);
8005double8 __ovld __cnfn nextafter(double8, double8);
8006double16 __ovld __cnfn nextafter(double16, double16);
8007#endif //cl_khr_fp64
8008#ifdef cl_khr_fp16
8009half __ovld __cnfn nextafter(half, half);
8010half2 __ovld __cnfn nextafter(half2, half2);
8011half3 __ovld __cnfn nextafter(half3, half3);
8012half4 __ovld __cnfn nextafter(half4, half4);
8013half8 __ovld __cnfn nextafter(half8, half8);
8014half16 __ovld __cnfn nextafter(half16, half16);
8015#endif //cl_khr_fp16
8016
8017/**
8018 * Compute x to the power y.
8019 */
8020float __ovld __cnfn pow(float, float);
8021float2 __ovld __cnfn pow(float2, float2);
8022float3 __ovld __cnfn pow(float3, float3);
8023float4 __ovld __cnfn pow(float4, float4);
8024float8 __ovld __cnfn pow(float8, float8);
8025float16 __ovld __cnfn pow(float16, float16);
8026#ifdef cl_khr_fp64
8027double __ovld __cnfn pow(double, double);
8028double2 __ovld __cnfn pow(double2, double2);
8029double3 __ovld __cnfn pow(double3, double3);
8030double4 __ovld __cnfn pow(double4, double4);
8031double8 __ovld __cnfn pow(double8, double8);
8032double16 __ovld __cnfn pow(double16, double16);
8033#endif //cl_khr_fp64
8034#ifdef cl_khr_fp16
8035half __ovld __cnfn pow(half, half);
8036half2 __ovld __cnfn pow(half2, half2);
8037half3 __ovld __cnfn pow(half3, half3);
8038half4 __ovld __cnfn pow(half4, half4);
8039half8 __ovld __cnfn pow(half8, half8);
8040half16 __ovld __cnfn pow(half16, half16);
8041#endif //cl_khr_fp16
8042
8043/**
8044 * Compute x to the power y, where y is an integer.
8045 */
8046float __ovld __cnfn pown(float, int);
8047float2 __ovld __cnfn pown(float2, int2);
8048float3 __ovld __cnfn pown(float3, int3);
8049float4 __ovld __cnfn pown(float4, int4);
8050float8 __ovld __cnfn pown(float8, int8);
8051float16 __ovld __cnfn pown(float16, int16);
8052#ifdef cl_khr_fp64
8053double __ovld __cnfn pown(double, int);
8054double2 __ovld __cnfn pown(double2, int2);
8055double3 __ovld __cnfn pown(double3, int3);
8056double4 __ovld __cnfn pown(double4, int4);
8057double8 __ovld __cnfn pown(double8, int8);
8058double16 __ovld __cnfn pown(double16, int16);
8059#endif //cl_khr_fp64
8060#ifdef cl_khr_fp16
8061half __ovld __cnfn pown(half, int);
8062half2 __ovld __cnfn pown(half2, int2);
8063half3 __ovld __cnfn pown(half3, int3);
8064half4 __ovld __cnfn pown(half4, int4);
8065half8 __ovld __cnfn pown(half8, int8);
8066half16 __ovld __cnfn pown(half16, int16);
8067#endif //cl_khr_fp16
8068
8069/**
8070 * Compute x to the power y, where x is >= 0.
8071 */
8072float __ovld __cnfn powr(float, float);
8073float2 __ovld __cnfn powr(float2, float2);
8074float3 __ovld __cnfn powr(float3, float3);
8075float4 __ovld __cnfn powr(float4, float4);
8076float8 __ovld __cnfn powr(float8, float8);
8077float16 __ovld __cnfn powr(float16, float16);
8078#ifdef cl_khr_fp64
8079double __ovld __cnfn powr(double, double);
8080double2 __ovld __cnfn powr(double2, double2);
8081double3 __ovld __cnfn powr(double3, double3);
8082double4 __ovld __cnfn powr(double4, double4);
8083double8 __ovld __cnfn powr(double8, double8);
8084double16 __ovld __cnfn powr(double16, double16);
8085#endif //cl_khr_fp64
8086#ifdef cl_khr_fp16
8087half __ovld __cnfn powr(half, half);
8088half2 __ovld __cnfn powr(half2, half2);
8089half3 __ovld __cnfn powr(half3, half3);
8090half4 __ovld __cnfn powr(half4, half4);
8091half8 __ovld __cnfn powr(half8, half8);
8092half16 __ovld __cnfn powr(half16, half16);
8093#endif //cl_khr_fp16
8094
8095/**
8096 * Compute the value r such that r = x - n*y, where n
8097 * is the integer nearest the exact value of x/y. If there
8098 * are two integers closest to x/y, n shall be the even
8099 * one. If r is zero, it is given the same sign as x.
8100 */
8101float __ovld __cnfn remainder(float, float);
8102float2 __ovld __cnfn remainder(float2, float2);
8103float3 __ovld __cnfn remainder(float3, float3);
8104float4 __ovld __cnfn remainder(float4, float4);
8105float8 __ovld __cnfn remainder(float8, float8);
8106float16 __ovld __cnfn remainder(float16, float16);
8107#ifdef cl_khr_fp64
8108double __ovld __cnfn remainder(double, double);
8109double2 __ovld __cnfn remainder(double2, double2);
8110double3 __ovld __cnfn remainder(double3, double3);
8111double4 __ovld __cnfn remainder(double4, double4);
8112double8 __ovld __cnfn remainder(double8, double8);
8113double16 __ovld __cnfn remainder(double16, double16);
8114#endif //cl_khr_fp64
8115#ifdef cl_khr_fp16
8116half __ovld __cnfn remainder(half, half);
8117half2 __ovld __cnfn remainder(half2, half2);
8118half3 __ovld __cnfn remainder(half3, half3);
8119half4 __ovld __cnfn remainder(half4, half4);
8120half8 __ovld __cnfn remainder(half8, half8);
8121half16 __ovld __cnfn remainder(half16, half16);
8122#endif //cl_khr_fp16
8123
8124/**
8125 * The remquo function computes the value r such
8126 * that r = x - n*y, where n is the integer nearest the
8127 * exact value of x/y. If there are two integers closest
8128 * to x/y, n shall be the even one. If r is zero, it is
8129 * given the same sign as x. This is the same value
8130 * that is returned by the remainder function.
8131 * remquo also calculates the lower seven bits of the
8132 * integral quotient x/y, and gives that value the same
8133 * sign as x/y. It stores this signed value in the object
8134 * pointed to by quo.
8135 */
8136#if defined(__opencl_c_generic_address_space)
8137float __ovld remquo(float, float, int *);
8138float2 __ovld remquo(float2, float2, int2 *);
8139float3 __ovld remquo(float3, float3, int3 *);
8140float4 __ovld remquo(float4, float4, int4 *);
8141float8 __ovld remquo(float8, float8, int8 *);
8142float16 __ovld remquo(float16, float16, int16 *);
8143#ifdef cl_khr_fp64
8144double __ovld remquo(double, double, int *);
8145double2 __ovld remquo(double2, double2, int2 *);
8146double3 __ovld remquo(double3, double3, int3 *);
8147double4 __ovld remquo(double4, double4, int4 *);
8148double8 __ovld remquo(double8, double8, int8 *);
8149double16 __ovld remquo(double16, double16, int16 *);
8150#endif //cl_khr_fp64
8151#ifdef cl_khr_fp16
8152half __ovld remquo(half, half, int *);
8153half2 __ovld remquo(half2, half2, int2 *);
8154half3 __ovld remquo(half3, half3, int3 *);
8155half4 __ovld remquo(half4, half4, int4 *);
8156half8 __ovld remquo(half8, half8, int8 *);
8157half16 __ovld remquo(half16, half16, int16 *);
8158#endif //cl_khr_fp16
8159#endif //defined(__opencl_c_generic_address_space)
8160
8161#if defined(__opencl_c_named_address_space_builtins)
8162float __ovld remquo(float, float, __global int *);
8163float2 __ovld remquo(float2, float2, __global int2 *);
8164float3 __ovld remquo(float3, float3, __global int3 *);
8165float4 __ovld remquo(float4, float4, __global int4 *);
8166float8 __ovld remquo(float8, float8, __global int8 *);
8167float16 __ovld remquo(float16, float16, __global int16 *);
8168float __ovld remquo(float, float, __local int *);
8169float2 __ovld remquo(float2, float2, __local int2 *);
8170float3 __ovld remquo(float3, float3, __local int3 *);
8171float4 __ovld remquo(float4, float4, __local int4 *);
8172float8 __ovld remquo(float8, float8, __local int8 *);
8173float16 __ovld remquo(float16, float16, __local int16 *);
8174float __ovld remquo(float, float, __private int *);
8175float2 __ovld remquo(float2, float2, __private int2 *);
8176float3 __ovld remquo(float3, float3, __private int3 *);
8177float4 __ovld remquo(float4, float4, __private int4 *);
8178float8 __ovld remquo(float8, float8, __private int8 *);
8179float16 __ovld remquo(float16, float16, __private int16 *);
8180#ifdef cl_khr_fp64
8181double __ovld remquo(double, double, __global int *);
8182double2 __ovld remquo(double2, double2, __global int2 *);
8183double3 __ovld remquo(double3, double3, __global int3 *);
8184double4 __ovld remquo(double4, double4, __global int4 *);
8185double8 __ovld remquo(double8, double8, __global int8 *);
8186double16 __ovld remquo(double16, double16, __global int16 *);
8187double __ovld remquo(double, double, __local int *);
8188double2 __ovld remquo(double2, double2, __local int2 *);
8189double3 __ovld remquo(double3, double3, __local int3 *);
8190double4 __ovld remquo(double4, double4, __local int4 *);
8191double8 __ovld remquo(double8, double8, __local int8 *);
8192double16 __ovld remquo(double16, double16, __local int16 *);
8193double __ovld remquo(double, double, __private int *);
8194double2 __ovld remquo(double2, double2, __private int2 *);
8195double3 __ovld remquo(double3, double3, __private int3 *);
8196double4 __ovld remquo(double4, double4, __private int4 *);
8197double8 __ovld remquo(double8, double8, __private int8 *);
8198double16 __ovld remquo(double16, double16, __private int16 *);
8199#endif //cl_khr_fp64
8200#ifdef cl_khr_fp16
8201half __ovld remquo(half, half, __global int *);
8202half2 __ovld remquo(half2, half2, __global int2 *);
8203half3 __ovld remquo(half3, half3, __global int3 *);
8204half4 __ovld remquo(half4, half4, __global int4 *);
8205half8 __ovld remquo(half8, half8, __global int8 *);
8206half16 __ovld remquo(half16, half16, __global int16 *);
8207half __ovld remquo(half, half, __local int *);
8208half2 __ovld remquo(half2, half2, __local int2 *);
8209half3 __ovld remquo(half3, half3, __local int3 *);
8210half4 __ovld remquo(half4, half4, __local int4 *);
8211half8 __ovld remquo(half8, half8, __local int8 *);
8212half16 __ovld remquo(half16, half16, __local int16 *);
8213half __ovld remquo(half, half, __private int *);
8214half2 __ovld remquo(half2, half2, __private int2 *);
8215half3 __ovld remquo(half3, half3, __private int3 *);
8216half4 __ovld remquo(half4, half4, __private int4 *);
8217half8 __ovld remquo(half8, half8, __private int8 *);
8218half16 __ovld remquo(half16, half16, __private int16 *);
8219#endif //cl_khr_fp16
8220#endif //defined(__opencl_c_named_address_space_builtins)
8221/**
8222 * Round to integral value (using round to nearest
8223 * even rounding mode) in floating-point format.
8224 * Refer to section 7.1 for description of rounding
8225 * modes.
8226 */
8227float __ovld __cnfn rint(float);
8228float2 __ovld __cnfn rint(float2);
8229float3 __ovld __cnfn rint(float3);
8230float4 __ovld __cnfn rint(float4);
8231float8 __ovld __cnfn rint(float8);
8232float16 __ovld __cnfn rint(float16);
8233#ifdef cl_khr_fp64
8234double __ovld __cnfn rint(double);
8235double2 __ovld __cnfn rint(double2);
8236double3 __ovld __cnfn rint(double3);
8237double4 __ovld __cnfn rint(double4);
8238double8 __ovld __cnfn rint(double8);
8239double16 __ovld __cnfn rint(double16);
8240#endif //cl_khr_fp64
8241#ifdef cl_khr_fp16
8242half __ovld __cnfn rint(half);
8243half2 __ovld __cnfn rint(half2);
8244half3 __ovld __cnfn rint(half3);
8245half4 __ovld __cnfn rint(half4);
8246half8 __ovld __cnfn rint(half8);
8247half16 __ovld __cnfn rint(half16);
8248#endif //cl_khr_fp16
8249
8250/**
8251 * Compute x to the power 1/y.
8252 */
8253float __ovld __cnfn rootn(float, int);
8254float2 __ovld __cnfn rootn(float2, int2);
8255float3 __ovld __cnfn rootn(float3, int3);
8256float4 __ovld __cnfn rootn(float4, int4);
8257float8 __ovld __cnfn rootn(float8, int8);
8258float16 __ovld __cnfn rootn(float16, int16);
8259#ifdef cl_khr_fp64
8260double __ovld __cnfn rootn(double, int);
8261double2 __ovld __cnfn rootn(double2, int2);
8262double3 __ovld __cnfn rootn(double3, int3);
8263double4 __ovld __cnfn rootn(double4, int4);
8264double8 __ovld __cnfn rootn(double8, int8);
8265double16 __ovld __cnfn rootn(double16, int16);
8266#endif //cl_khr_fp64
8267#ifdef cl_khr_fp16
8268half __ovld __cnfn rootn(half, int);
8269half2 __ovld __cnfn rootn(half2, int2);
8270half3 __ovld __cnfn rootn(half3, int3);
8271half4 __ovld __cnfn rootn(half4, int4);
8272half8 __ovld __cnfn rootn(half8, int8);
8273half16 __ovld __cnfn rootn(half16, int16);
8274#endif //cl_khr_fp16
8275
8276/**
8277 * Return the integral value nearest to x rounding
8278 * halfway cases away from zero, regardless of the
8279 * current rounding direction.
8280 */
8281float __ovld __cnfn round(float);
8282float2 __ovld __cnfn round(float2);
8283float3 __ovld __cnfn round(float3);
8284float4 __ovld __cnfn round(float4);
8285float8 __ovld __cnfn round(float8);
8286float16 __ovld __cnfn round(float16);
8287#ifdef cl_khr_fp64
8288double __ovld __cnfn round(double);
8289double2 __ovld __cnfn round(double2);
8290double3 __ovld __cnfn round(double3);
8291double4 __ovld __cnfn round(double4);
8292double8 __ovld __cnfn round(double8);
8293double16 __ovld __cnfn round(double16);
8294#endif //cl_khr_fp64
8295#ifdef cl_khr_fp16
8296half __ovld __cnfn round(half);
8297half2 __ovld __cnfn round(half2);
8298half3 __ovld __cnfn round(half3);
8299half4 __ovld __cnfn round(half4);
8300half8 __ovld __cnfn round(half8);
8301half16 __ovld __cnfn round(half16);
8302#endif //cl_khr_fp16
8303
8304/**
8305 * Compute inverse square root.
8306 */
8307float __ovld __cnfn rsqrt(float);
8308float2 __ovld __cnfn rsqrt(float2);
8309float3 __ovld __cnfn rsqrt(float3);
8310float4 __ovld __cnfn rsqrt(float4);
8311float8 __ovld __cnfn rsqrt(float8);
8312float16 __ovld __cnfn rsqrt(float16);
8313#ifdef cl_khr_fp64
8314double __ovld __cnfn rsqrt(double);
8315double2 __ovld __cnfn rsqrt(double2);
8316double3 __ovld __cnfn rsqrt(double3);
8317double4 __ovld __cnfn rsqrt(double4);
8318double8 __ovld __cnfn rsqrt(double8);
8319double16 __ovld __cnfn rsqrt(double16);
8320#endif //cl_khr_fp64
8321#ifdef cl_khr_fp16
8322half __ovld __cnfn rsqrt(half);
8323half2 __ovld __cnfn rsqrt(half2);
8324half3 __ovld __cnfn rsqrt(half3);
8325half4 __ovld __cnfn rsqrt(half4);
8326half8 __ovld __cnfn rsqrt(half8);
8327half16 __ovld __cnfn rsqrt(half16);
8328#endif //cl_khr_fp16
8329
8330/**
8331 * Compute sine.
8332 */
8333float __ovld __cnfn sin(float);
8334float2 __ovld __cnfn sin(float2);
8335float3 __ovld __cnfn sin(float3);
8336float4 __ovld __cnfn sin(float4);
8337float8 __ovld __cnfn sin(float8);
8338float16 __ovld __cnfn sin(float16);
8339#ifdef cl_khr_fp64
8340double __ovld __cnfn sin(double);
8341double2 __ovld __cnfn sin(double2);
8342double3 __ovld __cnfn sin(double3);
8343double4 __ovld __cnfn sin(double4);
8344double8 __ovld __cnfn sin(double8);
8345double16 __ovld __cnfn sin(double16);
8346#endif //cl_khr_fp64
8347#ifdef cl_khr_fp16
8348half __ovld __cnfn sin(half);
8349half2 __ovld __cnfn sin(half2);
8350half3 __ovld __cnfn sin(half3);
8351half4 __ovld __cnfn sin(half4);
8352half8 __ovld __cnfn sin(half8);
8353half16 __ovld __cnfn sin(half16);
8354#endif //cl_khr_fp16
8355
8356/**
8357 * Compute sine and cosine of x. The computed sine
8358 * is the return value and computed cosine is returned
8359 * in cosval.
8360 */
8361#if defined(__opencl_c_generic_address_space)
8362float __ovld sincos(float, float *);
8363float2 __ovld sincos(float2, float2 *);
8364float3 __ovld sincos(float3, float3 *);
8365float4 __ovld sincos(float4, float4 *);
8366float8 __ovld sincos(float8, float8 *);
8367float16 __ovld sincos(float16, float16 *);
8368#ifdef cl_khr_fp64
8369double __ovld sincos(double, double *);
8370double2 __ovld sincos(double2, double2 *);
8371double3 __ovld sincos(double3, double3 *);
8372double4 __ovld sincos(double4, double4 *);
8373double8 __ovld sincos(double8, double8 *);
8374double16 __ovld sincos(double16, double16 *);
8375#endif //cl_khr_fp64
8376#ifdef cl_khr_fp16
8377half __ovld sincos(half, half *);
8378half2 __ovld sincos(half2, half2 *);
8379half3 __ovld sincos(half3, half3 *);
8380half4 __ovld sincos(half4, half4 *);
8381half8 __ovld sincos(half8, half8 *);
8382half16 __ovld sincos(half16, half16 *);
8383#endif //cl_khr_fp16
8384#endif //defined(__opencl_c_generic_address_space)
8385
8386#if defined(__opencl_c_named_address_space_builtins)
8387float __ovld sincos(float, __global float *);
8388float2 __ovld sincos(float2, __global float2 *);
8389float3 __ovld sincos(float3, __global float3 *);
8390float4 __ovld sincos(float4, __global float4 *);
8391float8 __ovld sincos(float8, __global float8 *);
8392float16 __ovld sincos(float16, __global float16 *);
8393float __ovld sincos(float, __local float *);
8394float2 __ovld sincos(float2, __local float2 *);
8395float3 __ovld sincos(float3, __local float3 *);
8396float4 __ovld sincos(float4, __local float4 *);
8397float8 __ovld sincos(float8, __local float8 *);
8398float16 __ovld sincos(float16, __local float16 *);
8399float __ovld sincos(float, __private float *);
8400float2 __ovld sincos(float2, __private float2 *);
8401float3 __ovld sincos(float3, __private float3 *);
8402float4 __ovld sincos(float4, __private float4 *);
8403float8 __ovld sincos(float8, __private float8 *);
8404float16 __ovld sincos(float16, __private float16 *);
8405#ifdef cl_khr_fp64
8406double __ovld sincos(double, __global double *);
8407double2 __ovld sincos(double2, __global double2 *);
8408double3 __ovld sincos(double3, __global double3 *);
8409double4 __ovld sincos(double4, __global double4 *);
8410double8 __ovld sincos(double8, __global double8 *);
8411double16 __ovld sincos(double16, __global double16 *);
8412double __ovld sincos(double, __local double *);
8413double2 __ovld sincos(double2, __local double2 *);
8414double3 __ovld sincos(double3, __local double3 *);
8415double4 __ovld sincos(double4, __local double4 *);
8416double8 __ovld sincos(double8, __local double8 *);
8417double16 __ovld sincos(double16, __local double16 *);
8418double __ovld sincos(double, __private double *);
8419double2 __ovld sincos(double2, __private double2 *);
8420double3 __ovld sincos(double3, __private double3 *);
8421double4 __ovld sincos(double4, __private double4 *);
8422double8 __ovld sincos(double8, __private double8 *);
8423double16 __ovld sincos(double16, __private double16 *);
8424#endif //cl_khr_fp64
8425#ifdef cl_khr_fp16
8426half __ovld sincos(half, __global half *);
8427half2 __ovld sincos(half2, __global half2 *);
8428half3 __ovld sincos(half3, __global half3 *);
8429half4 __ovld sincos(half4, __global half4 *);
8430half8 __ovld sincos(half8, __global half8 *);
8431half16 __ovld sincos(half16, __global half16 *);
8432half __ovld sincos(half, __local half *);
8433half2 __ovld sincos(half2, __local half2 *);
8434half3 __ovld sincos(half3, __local half3 *);
8435half4 __ovld sincos(half4, __local half4 *);
8436half8 __ovld sincos(half8, __local half8 *);
8437half16 __ovld sincos(half16, __local half16 *);
8438half __ovld sincos(half, __private half *);
8439half2 __ovld sincos(half2, __private half2 *);
8440half3 __ovld sincos(half3, __private half3 *);
8441half4 __ovld sincos(half4, __private half4 *);
8442half8 __ovld sincos(half8, __private half8 *);
8443half16 __ovld sincos(half16, __private half16 *);
8444#endif //cl_khr_fp16
8445#endif //defined(__opencl_c_named_address_space_builtins)
8446
8447/**
8448 * Compute hyperbolic sine.
8449 */
8450float __ovld __cnfn sinh(float);
8451float2 __ovld __cnfn sinh(float2);
8452float3 __ovld __cnfn sinh(float3);
8453float4 __ovld __cnfn sinh(float4);
8454float8 __ovld __cnfn sinh(float8);
8455float16 __ovld __cnfn sinh(float16);
8456#ifdef cl_khr_fp64
8457double __ovld __cnfn sinh(double);
8458double2 __ovld __cnfn sinh(double2);
8459double3 __ovld __cnfn sinh(double3);
8460double4 __ovld __cnfn sinh(double4);
8461double8 __ovld __cnfn sinh(double8);
8462double16 __ovld __cnfn sinh(double16);
8463#endif //cl_khr_fp64
8464#ifdef cl_khr_fp16
8465half __ovld __cnfn sinh(half);
8466half2 __ovld __cnfn sinh(half2);
8467half3 __ovld __cnfn sinh(half3);
8468half4 __ovld __cnfn sinh(half4);
8469half8 __ovld __cnfn sinh(half8);
8470half16 __ovld __cnfn sinh(half16);
8471#endif //cl_khr_fp16
8472
8473/**
8474 * Compute sin (PI * x).
8475 */
8476float __ovld __cnfn sinpi(float);
8477float2 __ovld __cnfn sinpi(float2);
8478float3 __ovld __cnfn sinpi(float3);
8479float4 __ovld __cnfn sinpi(float4);
8480float8 __ovld __cnfn sinpi(float8);
8481float16 __ovld __cnfn sinpi(float16);
8482#ifdef cl_khr_fp64
8483double __ovld __cnfn sinpi(double);
8484double2 __ovld __cnfn sinpi(double2);
8485double3 __ovld __cnfn sinpi(double3);
8486double4 __ovld __cnfn sinpi(double4);
8487double8 __ovld __cnfn sinpi(double8);
8488double16 __ovld __cnfn sinpi(double16);
8489#endif //cl_khr_fp64
8490#ifdef cl_khr_fp16
8491half __ovld __cnfn sinpi(half);
8492half2 __ovld __cnfn sinpi(half2);
8493half3 __ovld __cnfn sinpi(half3);
8494half4 __ovld __cnfn sinpi(half4);
8495half8 __ovld __cnfn sinpi(half8);
8496half16 __ovld __cnfn sinpi(half16);
8497#endif //cl_khr_fp16
8498
8499/**
8500 * Compute square root.
8501 */
8502float __ovld __cnfn sqrt(float);
8503float2 __ovld __cnfn sqrt(float2);
8504float3 __ovld __cnfn sqrt(float3);
8505float4 __ovld __cnfn sqrt(float4);
8506float8 __ovld __cnfn sqrt(float8);
8507float16 __ovld __cnfn sqrt(float16);
8508#ifdef cl_khr_fp64
8509double __ovld __cnfn sqrt(double);
8510double2 __ovld __cnfn sqrt(double2);
8511double3 __ovld __cnfn sqrt(double3);
8512double4 __ovld __cnfn sqrt(double4);
8513double8 __ovld __cnfn sqrt(double8);
8514double16 __ovld __cnfn sqrt(double16);
8515#endif //cl_khr_fp64
8516#ifdef cl_khr_fp16
8517half __ovld __cnfn sqrt(half);
8518half2 __ovld __cnfn sqrt(half2);
8519half3 __ovld __cnfn sqrt(half3);
8520half4 __ovld __cnfn sqrt(half4);
8521half8 __ovld __cnfn sqrt(half8);
8522half16 __ovld __cnfn sqrt(half16);
8523#endif //cl_khr_fp16
8524
8525/**
8526 * Compute tangent.
8527 */
8528float __ovld __cnfn tan(float);
8529float2 __ovld __cnfn tan(float2);
8530float3 __ovld __cnfn tan(float3);
8531float4 __ovld __cnfn tan(float4);
8532float8 __ovld __cnfn tan(float8);
8533float16 __ovld __cnfn tan(float16);
8534#ifdef cl_khr_fp64
8535double __ovld __cnfn tan(double);
8536double2 __ovld __cnfn tan(double2);
8537double3 __ovld __cnfn tan(double3);
8538double4 __ovld __cnfn tan(double4);
8539double8 __ovld __cnfn tan(double8);
8540double16 __ovld __cnfn tan(double16);
8541#endif //cl_khr_fp64
8542#ifdef cl_khr_fp16
8543half __ovld __cnfn tan(half);
8544half2 __ovld __cnfn tan(half2);
8545half3 __ovld __cnfn tan(half3);
8546half4 __ovld __cnfn tan(half4);
8547half8 __ovld __cnfn tan(half8);
8548half16 __ovld __cnfn tan(half16);
8549#endif //cl_khr_fp16
8550
8551/**
8552 * Compute hyperbolic tangent.
8553 */
8554float __ovld __cnfn tanh(float);
8555float2 __ovld __cnfn tanh(float2);
8556float3 __ovld __cnfn tanh(float3);
8557float4 __ovld __cnfn tanh(float4);
8558float8 __ovld __cnfn tanh(float8);
8559float16 __ovld __cnfn tanh(float16);
8560#ifdef cl_khr_fp64
8561double __ovld __cnfn tanh(double);
8562double2 __ovld __cnfn tanh(double2);
8563double3 __ovld __cnfn tanh(double3);
8564double4 __ovld __cnfn tanh(double4);
8565double8 __ovld __cnfn tanh(double8);
8566double16 __ovld __cnfn tanh(double16);
8567#endif //cl_khr_fp64
8568#ifdef cl_khr_fp16
8569half __ovld __cnfn tanh(half);
8570half2 __ovld __cnfn tanh(half2);
8571half3 __ovld __cnfn tanh(half3);
8572half4 __ovld __cnfn tanh(half4);
8573half8 __ovld __cnfn tanh(half8);
8574half16 __ovld __cnfn tanh(half16);
8575#endif //cl_khr_fp16
8576
8577/**
8578 * Compute tan (PI * x).
8579 */
8580float __ovld __cnfn tanpi(float);
8581float2 __ovld __cnfn tanpi(float2);
8582float3 __ovld __cnfn tanpi(float3);
8583float4 __ovld __cnfn tanpi(float4);
8584float8 __ovld __cnfn tanpi(float8);
8585float16 __ovld __cnfn tanpi(float16);
8586#ifdef cl_khr_fp64
8587double __ovld __cnfn tanpi(double);
8588double2 __ovld __cnfn tanpi(double2);
8589double3 __ovld __cnfn tanpi(double3);
8590double4 __ovld __cnfn tanpi(double4);
8591double8 __ovld __cnfn tanpi(double8);
8592double16 __ovld __cnfn tanpi(double16);
8593#endif //cl_khr_fp64
8594#ifdef cl_khr_fp16
8595half __ovld __cnfn tanpi(half);
8596half2 __ovld __cnfn tanpi(half2);
8597half3 __ovld __cnfn tanpi(half3);
8598half4 __ovld __cnfn tanpi(half4);
8599half8 __ovld __cnfn tanpi(half8);
8600half16 __ovld __cnfn tanpi(half16);
8601#endif //cl_khr_fp16
8602
8603/**
8604 * Compute the gamma function.
8605 */
8606float __ovld __cnfn tgamma(float);
8607float2 __ovld __cnfn tgamma(float2);
8608float3 __ovld __cnfn tgamma(float3);
8609float4 __ovld __cnfn tgamma(float4);
8610float8 __ovld __cnfn tgamma(float8);
8611float16 __ovld __cnfn tgamma(float16);
8612#ifdef cl_khr_fp64
8613double __ovld __cnfn tgamma(double);
8614double2 __ovld __cnfn tgamma(double2);
8615double3 __ovld __cnfn tgamma(double3);
8616double4 __ovld __cnfn tgamma(double4);
8617double8 __ovld __cnfn tgamma(double8);
8618double16 __ovld __cnfn tgamma(double16);
8619#endif //cl_khr_fp64
8620#ifdef cl_khr_fp16
8621half __ovld __cnfn tgamma(half);
8622half2 __ovld __cnfn tgamma(half2);
8623half3 __ovld __cnfn tgamma(half3);
8624half4 __ovld __cnfn tgamma(half4);
8625half8 __ovld __cnfn tgamma(half8);
8626half16 __ovld __cnfn tgamma(half16);
8627#endif //cl_khr_fp16
8628
8629/**
8630 * Round to integral value using the round to zero
8631 * rounding mode.
8632 */
8633float __ovld __cnfn trunc(float);
8634float2 __ovld __cnfn trunc(float2);
8635float3 __ovld __cnfn trunc(float3);
8636float4 __ovld __cnfn trunc(float4);
8637float8 __ovld __cnfn trunc(float8);
8638float16 __ovld __cnfn trunc(float16);
8639#ifdef cl_khr_fp64
8640double __ovld __cnfn trunc(double);
8641double2 __ovld __cnfn trunc(double2);
8642double3 __ovld __cnfn trunc(double3);
8643double4 __ovld __cnfn trunc(double4);
8644double8 __ovld __cnfn trunc(double8);
8645double16 __ovld __cnfn trunc(double16);
8646#endif //cl_khr_fp64
8647#ifdef cl_khr_fp16
8648half __ovld __cnfn trunc(half);
8649half2 __ovld __cnfn trunc(half2);
8650half3 __ovld __cnfn trunc(half3);
8651half4 __ovld __cnfn trunc(half4);
8652half8 __ovld __cnfn trunc(half8);
8653half16 __ovld __cnfn trunc(half16);
8654#endif //cl_khr_fp16
8655
8656/**
8657 * Compute cosine. x must be in the range -2^16 ... +2^16.
8658 */
8660float2 __ovld __cnfn half_cos(float2);
8661float3 __ovld __cnfn half_cos(float3);
8662float4 __ovld __cnfn half_cos(float4);
8663float8 __ovld __cnfn half_cos(float8);
8664float16 __ovld __cnfn half_cos(float16);
8665
8666/**
8667 * Compute x / y.
8668 */
8669float __ovld __cnfn half_divide(float, float);
8670float2 __ovld __cnfn half_divide(float2, float2);
8671float3 __ovld __cnfn half_divide(float3, float3);
8672float4 __ovld __cnfn half_divide(float4, float4);
8673float8 __ovld __cnfn half_divide(float8, float8);
8674float16 __ovld __cnfn half_divide(float16, float16);
8675
8676/**
8677 * Compute the base- e exponential of x.
8678 */
8680float2 __ovld __cnfn half_exp(float2);
8681float3 __ovld __cnfn half_exp(float3);
8682float4 __ovld __cnfn half_exp(float4);
8683float8 __ovld __cnfn half_exp(float8);
8684float16 __ovld __cnfn half_exp(float16);
8685
8686/**
8687 * Compute the base- 2 exponential of x.
8688 */
8690float2 __ovld __cnfn half_exp2(float2);
8691float3 __ovld __cnfn half_exp2(float3);
8692float4 __ovld __cnfn half_exp2(float4);
8693float8 __ovld __cnfn half_exp2(float8);
8694float16 __ovld __cnfn half_exp2(float16);
8695
8696/**
8697 * Compute the base- 10 exponential of x.
8698 */
8700float2 __ovld __cnfn half_exp10(float2);
8701float3 __ovld __cnfn half_exp10(float3);
8702float4 __ovld __cnfn half_exp10(float4);
8703float8 __ovld __cnfn half_exp10(float8);
8704float16 __ovld __cnfn half_exp10(float16);
8705
8706/**
8707 * Compute natural logarithm.
8708 */
8710float2 __ovld __cnfn half_log(float2);
8711float3 __ovld __cnfn half_log(float3);
8712float4 __ovld __cnfn half_log(float4);
8713float8 __ovld __cnfn half_log(float8);
8714float16 __ovld __cnfn half_log(float16);
8715
8716/**
8717 * Compute a base 2 logarithm.
8718 */
8720float2 __ovld __cnfn half_log2(float2);
8721float3 __ovld __cnfn half_log2(float3);
8722float4 __ovld __cnfn half_log2(float4);
8723float8 __ovld __cnfn half_log2(float8);
8724float16 __ovld __cnfn half_log2(float16);
8725
8726/**
8727 * Compute a base 10 logarithm.
8728 */
8730float2 __ovld __cnfn half_log10(float2);
8731float3 __ovld __cnfn half_log10(float3);
8732float4 __ovld __cnfn half_log10(float4);
8733float8 __ovld __cnfn half_log10(float8);
8734float16 __ovld __cnfn half_log10(float16);
8735
8736/**
8737 * Compute x to the power y, where x is >= 0.
8738 */
8739float __ovld __cnfn half_powr(float, float);
8740float2 __ovld __cnfn half_powr(float2, float2);
8741float3 __ovld __cnfn half_powr(float3, float3);
8742float4 __ovld __cnfn half_powr(float4, float4);
8743float8 __ovld __cnfn half_powr(float8, float8);
8744float16 __ovld __cnfn half_powr(float16, float16);
8745
8746/**
8747 * Compute reciprocal.
8748 */
8750float2 __ovld __cnfn half_recip(float2);
8751float3 __ovld __cnfn half_recip(float3);
8752float4 __ovld __cnfn half_recip(float4);
8753float8 __ovld __cnfn half_recip(float8);
8754float16 __ovld __cnfn half_recip(float16);
8755
8756/**
8757 * Compute inverse square root.
8758 */
8760float2 __ovld __cnfn half_rsqrt(float2);
8761float3 __ovld __cnfn half_rsqrt(float3);
8762float4 __ovld __cnfn half_rsqrt(float4);
8763float8 __ovld __cnfn half_rsqrt(float8);
8764float16 __ovld __cnfn half_rsqrt(float16);
8765
8766/**
8767 * Compute sine. x must be in the range -2^16 ... +2^16.
8768 */
8770float2 __ovld __cnfn half_sin(float2);
8771float3 __ovld __cnfn half_sin(float3);
8772float4 __ovld __cnfn half_sin(float4);
8773float8 __ovld __cnfn half_sin(float8);
8774float16 __ovld __cnfn half_sin(float16);
8775
8776/**
8777 * Compute square root.
8778 */
8780float2 __ovld __cnfn half_sqrt(float2);
8781float3 __ovld __cnfn half_sqrt(float3);
8782float4 __ovld __cnfn half_sqrt(float4);
8783float8 __ovld __cnfn half_sqrt(float8);
8784float16 __ovld __cnfn half_sqrt(float16);
8785
8786/**
8787 * Compute tangent. x must be in the range -216 ... +216.
8788 */
8790float2 __ovld __cnfn half_tan(float2);
8791float3 __ovld __cnfn half_tan(float3);
8792float4 __ovld __cnfn half_tan(float4);
8793float8 __ovld __cnfn half_tan(float8);
8794float16 __ovld __cnfn half_tan(float16);
8795
8796/**
8797 * Compute cosine over an implementation-defined range.
8798 * The maximum error is implementation-defined.
8799 */
8801float2 __ovld __cnfn native_cos(float2);
8802float3 __ovld __cnfn native_cos(float3);
8803float4 __ovld __cnfn native_cos(float4);
8804float8 __ovld __cnfn native_cos(float8);
8805float16 __ovld __cnfn native_cos(float16);
8806
8807/**
8808 * Compute x / y over an implementation-defined range.
8809 * The maximum error is implementation-defined.
8810 */
8811float __ovld __cnfn native_divide(float, float);
8812float2 __ovld __cnfn native_divide(float2, float2);
8813float3 __ovld __cnfn native_divide(float3, float3);
8814float4 __ovld __cnfn native_divide(float4, float4);
8815float8 __ovld __cnfn native_divide(float8, float8);
8816float16 __ovld __cnfn native_divide(float16, float16);
8817
8818/**
8819 * Compute the base- e exponential of x over an
8820 * implementation-defined range. The maximum error is
8821 * implementation-defined.
8822 */
8824float2 __ovld __cnfn native_exp(float2);
8825float3 __ovld __cnfn native_exp(float3);
8826float4 __ovld __cnfn native_exp(float4);
8827float8 __ovld __cnfn native_exp(float8);
8828float16 __ovld __cnfn native_exp(float16);
8829
8830/**
8831 * Compute the base- 2 exponential of x over an
8832 * implementation-defined range. The maximum error is
8833 * implementation-defined.
8834 */
8840float16 __ovld __cnfn native_exp2(float16);
8841
8842/**
8843 * Compute the base- 10 exponential of x over an
8844 * implementation-defined range. The maximum error is
8845 * implementation-defined.
8846 */
8852float16 __ovld __cnfn native_exp10(float16);
8853
8854/**
8855 * Compute natural logarithm over an implementationdefined
8856 * range. The maximum error is implementation
8857 * defined.
8858 */
8860float2 __ovld __cnfn native_log(float2);
8861float3 __ovld __cnfn native_log(float3);
8862float4 __ovld __cnfn native_log(float4);
8863float8 __ovld __cnfn native_log(float8);
8864float16 __ovld __cnfn native_log(float16);
8865
8866/**
8867 * Compute a base 2 logarithm over an implementationdefined
8868 * range. The maximum error is implementationdefined.
8869 */
8875float16 __ovld __cnfn native_log2(float16);
8876
8877/**
8878 * Compute a base 10 logarithm over an implementationdefined
8879 * range. The maximum error is implementationdefined.
8880 */
8886float16 __ovld __cnfn native_log10(float16);
8887
8888/**
8889 * Compute x to the power y, where x is >= 0. The range of
8890 * x and y are implementation-defined. The maximum error
8891 * is implementation-defined.
8892 */
8893float __ovld __cnfn native_powr(float, float);
8894float2 __ovld __cnfn native_powr(float2, float2);
8895float3 __ovld __cnfn native_powr(float3, float3);
8896float4 __ovld __cnfn native_powr(float4, float4);
8897float8 __ovld __cnfn native_powr(float8, float8);
8898float16 __ovld __cnfn native_powr(float16, float16);
8899
8900/**
8901 * Compute reciprocal over an implementation-defined
8902 * range. The maximum error is implementation-defined.
8903 */
8909float16 __ovld __cnfn native_recip(float16);
8910
8911/**
8912 * Compute inverse square root over an implementationdefined
8913 * range. The maximum error is implementationdefined.
8914 */
8920float16 __ovld __cnfn native_rsqrt(float16);
8921
8922/**
8923 * Compute sine over an implementation-defined range.
8924 * The maximum error is implementation-defined.
8925 */
8927float2 __ovld __cnfn native_sin(float2);
8928float3 __ovld __cnfn native_sin(float3);
8929float4 __ovld __cnfn native_sin(float4);
8930float8 __ovld __cnfn native_sin(float8);
8931float16 __ovld __cnfn native_sin(float16);
8932
8933/**
8934 * Compute square root over an implementation-defined
8935 * range. The maximum error is implementation-defined.
8936 */
8942float16 __ovld __cnfn native_sqrt(float16);
8943
8944/**
8945 * Compute tangent over an implementation-defined range.
8946 * The maximum error is implementation-defined.
8947 */
8949float2 __ovld __cnfn native_tan(float2);
8950float3 __ovld __cnfn native_tan(float3);
8951float4 __ovld __cnfn native_tan(float4);
8952float8 __ovld __cnfn native_tan(float8);
8953float16 __ovld __cnfn native_tan(float16);
8954
8955// OpenCL v1.1 s6.11.3, v1.2 s6.12.3, v2.0 s6.13.3 - Integer Functions
8956
8957/**
8958 * Returns | x |.
8959 */
8962uchar2 __ovld __cnfn abs(char2);
8963uchar2 __ovld __cnfn abs(uchar2);
8964uchar3 __ovld __cnfn abs(char3);
8965uchar3 __ovld __cnfn abs(uchar3);
8966uchar4 __ovld __cnfn abs(char4);
8967uchar4 __ovld __cnfn abs(uchar4);
8968uchar8 __ovld __cnfn abs(char8);
8969uchar8 __ovld __cnfn abs(uchar8);
8970uchar16 __ovld __cnfn abs(char16);
8971uchar16 __ovld __cnfn abs(uchar16);
8974ushort2 __ovld __cnfn abs(short2);
8975ushort2 __ovld __cnfn abs(ushort2);
8976ushort3 __ovld __cnfn abs(short3);
8977ushort3 __ovld __cnfn abs(ushort3);
8978ushort4 __ovld __cnfn abs(short4);
8979ushort4 __ovld __cnfn abs(ushort4);
8980ushort8 __ovld __cnfn abs(short8);
8981ushort8 __ovld __cnfn abs(ushort8);
8982ushort16 __ovld __cnfn abs(short16);
8983ushort16 __ovld __cnfn abs(ushort16);
8984uint __ovld __cnfn abs(int);
8986uint2 __ovld __cnfn abs(int2);
8987uint2 __ovld __cnfn abs(uint2);
8988uint3 __ovld __cnfn abs(int3);
8989uint3 __ovld __cnfn abs(uint3);
8990uint4 __ovld __cnfn abs(int4);
8991uint4 __ovld __cnfn abs(uint4);
8992uint8 __ovld __cnfn abs(int8);
8993uint8 __ovld __cnfn abs(uint8);
8994uint16 __ovld __cnfn abs(int16);
8995uint16 __ovld __cnfn abs(uint16);
8996ulong __ovld __cnfn abs(long);
8998ulong2 __ovld __cnfn abs(long2);
8999ulong2 __ovld __cnfn abs(ulong2);
9000ulong3 __ovld __cnfn abs(long3);
9001ulong3 __ovld __cnfn abs(ulong3);
9002ulong4 __ovld __cnfn abs(long4);
9003ulong4 __ovld __cnfn abs(ulong4);
9004ulong8 __ovld __cnfn abs(long8);
9005ulong8 __ovld __cnfn abs(ulong8);
9006ulong16 __ovld __cnfn abs(long16);
9007ulong16 __ovld __cnfn abs(ulong16);
9008
9009/**
9010 * Returns | x - y | without modulo overflow.
9011 */
9014uchar2 __ovld __cnfn abs_diff(char2, char2);
9015uchar2 __ovld __cnfn abs_diff(uchar2, uchar2);
9016uchar3 __ovld __cnfn abs_diff(char3, char3);
9017uchar3 __ovld __cnfn abs_diff(uchar3, uchar3);
9018uchar4 __ovld __cnfn abs_diff(char4, char4);
9019uchar4 __ovld __cnfn abs_diff(uchar4, uchar4);
9020uchar8 __ovld __cnfn abs_diff(char8, char8);
9021uchar8 __ovld __cnfn abs_diff(uchar8, uchar8);
9022uchar16 __ovld __cnfn abs_diff(char16, char16);
9023uchar16 __ovld __cnfn abs_diff(uchar16, uchar16);
9026ushort2 __ovld __cnfn abs_diff(short2, short2);
9027ushort2 __ovld __cnfn abs_diff(ushort2, ushort2);
9028ushort3 __ovld __cnfn abs_diff(short3, short3);
9029ushort3 __ovld __cnfn abs_diff(ushort3, ushort3);
9030ushort4 __ovld __cnfn abs_diff(short4, short4);
9031ushort4 __ovld __cnfn abs_diff(ushort4, ushort4);
9032ushort8 __ovld __cnfn abs_diff(short8, short8);
9033ushort8 __ovld __cnfn abs_diff(ushort8, ushort8);
9034ushort16 __ovld __cnfn abs_diff(short16, short16);
9035ushort16 __ovld __cnfn abs_diff(ushort16, ushort16);
9038uint2 __ovld __cnfn abs_diff(int2, int2);
9039uint2 __ovld __cnfn abs_diff(uint2, uint2);
9040uint3 __ovld __cnfn abs_diff(int3, int3);
9041uint3 __ovld __cnfn abs_diff(uint3, uint3);
9042uint4 __ovld __cnfn abs_diff(int4, int4);
9043uint4 __ovld __cnfn abs_diff(uint4, uint4);
9044uint8 __ovld __cnfn abs_diff(int8, int8);
9045uint8 __ovld __cnfn abs_diff(uint8, uint8);
9046uint16 __ovld __cnfn abs_diff(int16, int16);
9047uint16 __ovld __cnfn abs_diff(uint16, uint16);
9050ulong2 __ovld __cnfn abs_diff(long2, long2);
9051ulong2 __ovld __cnfn abs_diff(ulong2, ulong2);
9052ulong3 __ovld __cnfn abs_diff(long3, long3);
9053ulong3 __ovld __cnfn abs_diff(ulong3, ulong3);
9054ulong4 __ovld __cnfn abs_diff(long4, long4);
9055ulong4 __ovld __cnfn abs_diff(ulong4, ulong4);
9056ulong8 __ovld __cnfn abs_diff(long8, long8);
9057ulong8 __ovld __cnfn abs_diff(ulong8, ulong8);
9058ulong16 __ovld __cnfn abs_diff(long16, long16);
9059ulong16 __ovld __cnfn abs_diff(ulong16, ulong16);
9060
9061/**
9062 * Returns x + y and saturates the result.
9063 */
9064char __ovld __cnfn add_sat(char, char);
9066char2 __ovld __cnfn add_sat(char2, char2);
9067uchar2 __ovld __cnfn add_sat(uchar2, uchar2);
9068char3 __ovld __cnfn add_sat(char3, char3);
9069uchar3 __ovld __cnfn add_sat(uchar3, uchar3);
9070char4 __ovld __cnfn add_sat(char4, char4);
9071uchar4 __ovld __cnfn add_sat(uchar4, uchar4);
9072char8 __ovld __cnfn add_sat(char8, char8);
9073uchar8 __ovld __cnfn add_sat(uchar8, uchar8);
9074char16 __ovld __cnfn add_sat(char16, char16);
9075uchar16 __ovld __cnfn add_sat(uchar16, uchar16);
9076short __ovld __cnfn add_sat(short, short);
9078short2 __ovld __cnfn add_sat(short2, short2);
9079ushort2 __ovld __cnfn add_sat(ushort2, ushort2);
9080short3 __ovld __cnfn add_sat(short3, short3);
9081ushort3 __ovld __cnfn add_sat(ushort3, ushort3);
9082short4 __ovld __cnfn add_sat(short4, short4);
9083ushort4 __ovld __cnfn add_sat(ushort4, ushort4);
9084short8 __ovld __cnfn add_sat(short8, short8);
9085ushort8 __ovld __cnfn add_sat(ushort8, ushort8);
9086short16 __ovld __cnfn add_sat(short16, short16);
9087ushort16 __ovld __cnfn add_sat(ushort16, ushort16);
9088int __ovld __cnfn add_sat(int, int);
9090int2 __ovld __cnfn add_sat(int2, int2);
9091uint2 __ovld __cnfn add_sat(uint2, uint2);
9092int3 __ovld __cnfn add_sat(int3, int3);
9093uint3 __ovld __cnfn add_sat(uint3, uint3);
9094int4 __ovld __cnfn add_sat(int4, int4);
9095uint4 __ovld __cnfn add_sat(uint4, uint4);
9096int8 __ovld __cnfn add_sat(int8, int8);
9097uint8 __ovld __cnfn add_sat(uint8, uint8);
9098int16 __ovld __cnfn add_sat(int16, int16);
9099uint16 __ovld __cnfn add_sat(uint16, uint16);
9100long __ovld __cnfn add_sat(long, long);
9102long2 __ovld __cnfn add_sat(long2, long2);
9103ulong2 __ovld __cnfn add_sat(ulong2, ulong2);
9104long3 __ovld __cnfn add_sat(long3, long3);
9105ulong3 __ovld __cnfn add_sat(ulong3, ulong3);
9106long4 __ovld __cnfn add_sat(long4, long4);
9107ulong4 __ovld __cnfn add_sat(ulong4, ulong4);
9108long8 __ovld __cnfn add_sat(long8, long8);
9109ulong8 __ovld __cnfn add_sat(ulong8, ulong8);
9110long16 __ovld __cnfn add_sat(long16, long16);
9111ulong16 __ovld __cnfn add_sat(ulong16, ulong16);
9112
9113/**
9114 * Returns (x + y) >> 1. The intermediate sum does
9115 * not modulo overflow.
9116 */
9117char __ovld __cnfn hadd(char, char);
9119char2 __ovld __cnfn hadd(char2, char2);
9120uchar2 __ovld __cnfn hadd(uchar2, uchar2);
9121char3 __ovld __cnfn hadd(char3, char3);
9122uchar3 __ovld __cnfn hadd(uchar3, uchar3);
9123char4 __ovld __cnfn hadd(char4, char4);
9124uchar4 __ovld __cnfn hadd(uchar4, uchar4);
9125char8 __ovld __cnfn hadd(char8, char8);
9126uchar8 __ovld __cnfn hadd(uchar8, uchar8);
9127char16 __ovld __cnfn hadd(char16, char16);
9128uchar16 __ovld __cnfn hadd(uchar16, uchar16);
9129short __ovld __cnfn hadd(short, short);
9131short2 __ovld __cnfn hadd(short2, short2);
9132ushort2 __ovld __cnfn hadd(ushort2, ushort2);
9133short3 __ovld __cnfn hadd(short3, short3);
9134ushort3 __ovld __cnfn hadd(ushort3, ushort3);
9135short4 __ovld __cnfn hadd(short4, short4);
9136ushort4 __ovld __cnfn hadd(ushort4, ushort4);
9137short8 __ovld __cnfn hadd(short8, short8);
9138ushort8 __ovld __cnfn hadd(ushort8, ushort8);
9139short16 __ovld __cnfn hadd(short16, short16);
9140ushort16 __ovld __cnfn hadd(ushort16, ushort16);
9141int __ovld __cnfn hadd(int, int);
9143int2 __ovld __cnfn hadd(int2, int2);
9144uint2 __ovld __cnfn hadd(uint2, uint2);
9145int3 __ovld __cnfn hadd(int3, int3);
9146uint3 __ovld __cnfn hadd(uint3, uint3);
9147int4 __ovld __cnfn hadd(int4, int4);
9148uint4 __ovld __cnfn hadd(uint4, uint4);
9149int8 __ovld __cnfn hadd(int8, int8);
9150uint8 __ovld __cnfn hadd(uint8, uint8);
9151int16 __ovld __cnfn hadd(int16, int16);
9152uint16 __ovld __cnfn hadd(uint16, uint16);
9153long __ovld __cnfn hadd(long, long);
9155long2 __ovld __cnfn hadd(long2, long2);
9156ulong2 __ovld __cnfn hadd(ulong2, ulong2);
9157long3 __ovld __cnfn hadd(long3, long3);
9158ulong3 __ovld __cnfn hadd(ulong3, ulong3);
9159long4 __ovld __cnfn hadd(long4, long4);
9160ulong4 __ovld __cnfn hadd(ulong4, ulong4);
9161long8 __ovld __cnfn hadd(long8, long8);
9162ulong8 __ovld __cnfn hadd(ulong8, ulong8);
9163long16 __ovld __cnfn hadd(long16, long16);
9164ulong16 __ovld __cnfn hadd(ulong16, ulong16);
9165
9166/**
9167 * Returns (x + y + 1) >> 1. The intermediate sum
9168 * does not modulo overflow.
9169 */
9170char __ovld __cnfn rhadd(char, char);
9172char2 __ovld __cnfn rhadd(char2, char2);
9173uchar2 __ovld __cnfn rhadd(uchar2, uchar2);
9174char3 __ovld __cnfn rhadd(char3, char3);
9175uchar3 __ovld __cnfn rhadd(uchar3, uchar3);
9176char4 __ovld __cnfn rhadd(char4, char4);
9177uchar4 __ovld __cnfn rhadd(uchar4, uchar4);
9178char8 __ovld __cnfn rhadd(char8, char8);
9179uchar8 __ovld __cnfn rhadd(uchar8, uchar8);
9180char16 __ovld __cnfn rhadd(char16, char16);
9181uchar16 __ovld __cnfn rhadd(uchar16, uchar16);
9182short __ovld __cnfn rhadd(short, short);
9184short2 __ovld __cnfn rhadd(short2, short2);
9185ushort2 __ovld __cnfn rhadd(ushort2, ushort2);
9186short3 __ovld __cnfn rhadd(short3, short3);
9187ushort3 __ovld __cnfn rhadd(ushort3, ushort3);
9188short4 __ovld __cnfn rhadd(short4, short4);
9189ushort4 __ovld __cnfn rhadd(ushort4, ushort4);
9190short8 __ovld __cnfn rhadd(short8, short8);
9191ushort8 __ovld __cnfn rhadd(ushort8, ushort8);
9192short16 __ovld __cnfn rhadd(short16, short16);
9193ushort16 __ovld __cnfn rhadd(ushort16, ushort16);
9194int __ovld __cnfn rhadd(int, int);
9196int2 __ovld __cnfn rhadd(int2, int2);
9197uint2 __ovld __cnfn rhadd(uint2, uint2);
9198int3 __ovld __cnfn rhadd(int3, int3);
9199uint3 __ovld __cnfn rhadd(uint3, uint3);
9200int4 __ovld __cnfn rhadd(int4, int4);
9201uint4 __ovld __cnfn rhadd(uint4, uint4);
9202int8 __ovld __cnfn rhadd(int8, int8);
9203uint8 __ovld __cnfn rhadd(uint8, uint8);
9204int16 __ovld __cnfn rhadd(int16, int16);
9205uint16 __ovld __cnfn rhadd(uint16, uint16);
9206long __ovld __cnfn rhadd(long, long);
9208long2 __ovld __cnfn rhadd(long2, long2);
9209ulong2 __ovld __cnfn rhadd(ulong2, ulong2);
9210long3 __ovld __cnfn rhadd(long3, long3);
9211ulong3 __ovld __cnfn rhadd(ulong3, ulong3);
9212long4 __ovld __cnfn rhadd(long4, long4);
9213ulong4 __ovld __cnfn rhadd(ulong4, ulong4);
9214long8 __ovld __cnfn rhadd(long8, long8);
9215ulong8 __ovld __cnfn rhadd(ulong8, ulong8);
9216long16 __ovld __cnfn rhadd(long16, long16);
9217ulong16 __ovld __cnfn rhadd(ulong16, ulong16);
9218
9219/**
9220 * Returns min(max(x, minval), maxval).
9221 * Results are undefined if minval > maxval.
9222 */
9223char __ovld __cnfn clamp(char, char, char);
9225char2 __ovld __cnfn clamp(char2, char2, char2);
9226uchar2 __ovld __cnfn clamp(uchar2, uchar2, uchar2);
9227char3 __ovld __cnfn clamp(char3, char3, char3);
9228uchar3 __ovld __cnfn clamp(uchar3, uchar3, uchar3);
9229char4 __ovld __cnfn clamp(char4, char4, char4);
9230uchar4 __ovld __cnfn clamp(uchar4, uchar4, uchar4);
9231char8 __ovld __cnfn clamp(char8, char8, char8);
9232uchar8 __ovld __cnfn clamp(uchar8, uchar8, uchar8);
9233char16 __ovld __cnfn clamp(char16, char16, char16);
9234uchar16 __ovld __cnfn clamp(uchar16, uchar16, uchar16);
9235short __ovld __cnfn clamp(short, short, short);
9237short2 __ovld __cnfn clamp(short2, short2, short2);
9238ushort2 __ovld __cnfn clamp(ushort2, ushort2, ushort2);
9239short3 __ovld __cnfn clamp(short3, short3, short3);
9240ushort3 __ovld __cnfn clamp(ushort3, ushort3, ushort3);
9241short4 __ovld __cnfn clamp(short4, short4, short4);
9242ushort4 __ovld __cnfn clamp(ushort4, ushort4, ushort4);
9243short8 __ovld __cnfn clamp(short8, short8, short8);
9244ushort8 __ovld __cnfn clamp(ushort8, ushort8, ushort8);
9245short16 __ovld __cnfn clamp(short16, short16, short16);
9246ushort16 __ovld __cnfn clamp(ushort16, ushort16, ushort16);
9247int __ovld __cnfn clamp(int, int, int);
9249int2 __ovld __cnfn clamp(int2, int2, int2);
9250uint2 __ovld __cnfn clamp(uint2, uint2, uint2);
9251int3 __ovld __cnfn clamp(int3, int3, int3);
9252uint3 __ovld __cnfn clamp(uint3, uint3, uint3);
9253int4 __ovld __cnfn clamp(int4, int4, int4);
9254uint4 __ovld __cnfn clamp(uint4, uint4, uint4);
9255int8 __ovld __cnfn clamp(int8, int8, int8);
9256uint8 __ovld __cnfn clamp(uint8, uint8, uint8);
9257int16 __ovld __cnfn clamp(int16, int16, int16);
9258uint16 __ovld __cnfn clamp(uint16, uint16, uint16);
9259long __ovld __cnfn clamp(long, long, long);
9261long2 __ovld __cnfn clamp(long2, long2, long2);
9262ulong2 __ovld __cnfn clamp(ulong2, ulong2, ulong2);
9263long3 __ovld __cnfn clamp(long3, long3, long3);
9264ulong3 __ovld __cnfn clamp(ulong3, ulong3, ulong3);
9265long4 __ovld __cnfn clamp(long4, long4, long4);
9266ulong4 __ovld __cnfn clamp(ulong4, ulong4, ulong4);
9267long8 __ovld __cnfn clamp(long8, long8, long8);
9268ulong8 __ovld __cnfn clamp(ulong8, ulong8, ulong8);
9269long16 __ovld __cnfn clamp(long16, long16, long16);
9270ulong16 __ovld __cnfn clamp(ulong16, ulong16, ulong16);
9271char2 __ovld __cnfn clamp(char2, char, char);
9272uchar2 __ovld __cnfn clamp(uchar2, uchar, uchar);
9273char3 __ovld __cnfn clamp(char3, char, char);
9274uchar3 __ovld __cnfn clamp(uchar3, uchar, uchar);
9275char4 __ovld __cnfn clamp(char4, char, char);
9276uchar4 __ovld __cnfn clamp(uchar4, uchar, uchar);
9277char8 __ovld __cnfn clamp(char8, char, char);
9278uchar8 __ovld __cnfn clamp(uchar8, uchar, uchar);
9279char16 __ovld __cnfn clamp(char16, char, char);
9280uchar16 __ovld __cnfn clamp(uchar16, uchar, uchar);
9281short2 __ovld __cnfn clamp(short2, short, short);
9282ushort2 __ovld __cnfn clamp(ushort2, ushort, ushort);
9283short3 __ovld __cnfn clamp(short3, short, short);
9284ushort3 __ovld __cnfn clamp(ushort3, ushort, ushort);
9285short4 __ovld __cnfn clamp(short4, short, short);
9286ushort4 __ovld __cnfn clamp(ushort4, ushort, ushort);
9287short8 __ovld __cnfn clamp(short8, short, short);
9288ushort8 __ovld __cnfn clamp(ushort8, ushort, ushort);
9289short16 __ovld __cnfn clamp(short16, short, short);
9290ushort16 __ovld __cnfn clamp(ushort16, ushort, ushort);
9291int2 __ovld __cnfn clamp(int2, int, int);
9292uint2 __ovld __cnfn clamp(uint2, uint, uint);
9293int3 __ovld __cnfn clamp(int3, int, int);
9294uint3 __ovld __cnfn clamp(uint3, uint, uint);
9295int4 __ovld __cnfn clamp(int4, int, int);
9296uint4 __ovld __cnfn clamp(uint4, uint, uint);
9297int8 __ovld __cnfn clamp(int8, int, int);
9298uint8 __ovld __cnfn clamp(uint8, uint, uint);
9299int16 __ovld __cnfn clamp(int16, int, int);
9300uint16 __ovld __cnfn clamp(uint16, uint, uint);
9301long2 __ovld __cnfn clamp(long2, long, long);
9302ulong2 __ovld __cnfn clamp(ulong2, ulong, ulong);
9303long3 __ovld __cnfn clamp(long3, long, long);
9304ulong3 __ovld __cnfn clamp(ulong3, ulong, ulong);
9305long4 __ovld __cnfn clamp(long4, long, long);
9306ulong4 __ovld __cnfn clamp(ulong4, ulong, ulong);
9307long8 __ovld __cnfn clamp(long8, long, long);
9308ulong8 __ovld __cnfn clamp(ulong8, ulong, ulong);
9309long16 __ovld __cnfn clamp(long16, long, long);
9310ulong16 __ovld __cnfn clamp(ulong16, ulong, ulong);
9311
9312/**
9313 * Returns the number of leading 0-bits in x, starting
9314 * at the most significant bit position.
9315 */
9316char __ovld __cnfn clz(char);
9318char2 __ovld __cnfn clz(char2);
9319uchar2 __ovld __cnfn clz(uchar2);
9320char3 __ovld __cnfn clz(char3);
9321uchar3 __ovld __cnfn clz(uchar3);
9322char4 __ovld __cnfn clz(char4);
9323uchar4 __ovld __cnfn clz(uchar4);
9324char8 __ovld __cnfn clz(char8);
9325uchar8 __ovld __cnfn clz(uchar8);
9326char16 __ovld __cnfn clz(char16);
9327uchar16 __ovld __cnfn clz(uchar16);
9328short __ovld __cnfn clz(short);
9330short2 __ovld __cnfn clz(short2);
9331ushort2 __ovld __cnfn clz(ushort2);
9332short3 __ovld __cnfn clz(short3);
9333ushort3 __ovld __cnfn clz(ushort3);
9334short4 __ovld __cnfn clz(short4);
9335ushort4 __ovld __cnfn clz(ushort4);
9336short8 __ovld __cnfn clz(short8);
9337ushort8 __ovld __cnfn clz(ushort8);
9338short16 __ovld __cnfn clz(short16);
9339ushort16 __ovld __cnfn clz(ushort16);
9342int2 __ovld __cnfn clz(int2);
9343uint2 __ovld __cnfn clz(uint2);
9344int3 __ovld __cnfn clz(int3);
9345uint3 __ovld __cnfn clz(uint3);
9346int4 __ovld __cnfn clz(int4);
9347uint4 __ovld __cnfn clz(uint4);
9348int8 __ovld __cnfn clz(int8);
9349uint8 __ovld __cnfn clz(uint8);
9350int16 __ovld __cnfn clz(int16);
9351uint16 __ovld __cnfn clz(uint16);
9352long __ovld __cnfn clz(long);
9354long2 __ovld __cnfn clz(long2);
9355ulong2 __ovld __cnfn clz(ulong2);
9356long3 __ovld __cnfn clz(long3);
9357ulong3 __ovld __cnfn clz(ulong3);
9358long4 __ovld __cnfn clz(long4);
9359ulong4 __ovld __cnfn clz(ulong4);
9360long8 __ovld __cnfn clz(long8);
9361ulong8 __ovld __cnfn clz(ulong8);
9362long16 __ovld __cnfn clz(long16);
9363ulong16 __ovld __cnfn clz(ulong16);
9364
9365/**
9366 * Returns the count of trailing 0-bits in x. If x is 0,
9367 * returns the size in bits of the type of x or
9368 * component type of x, if x is a vector.
9369 */
9370#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
9371char __ovld __cnfn ctz(char);
9373char2 __ovld __cnfn ctz(char2);
9374uchar2 __ovld __cnfn ctz(uchar2);
9375char3 __ovld __cnfn ctz(char3);
9376uchar3 __ovld __cnfn ctz(uchar3);
9377char4 __ovld __cnfn ctz(char4);
9378uchar4 __ovld __cnfn ctz(uchar4);
9379char8 __ovld __cnfn ctz(char8);
9380uchar8 __ovld __cnfn ctz(uchar8);
9381char16 __ovld __cnfn ctz(char16);
9382uchar16 __ovld __cnfn ctz(uchar16);
9383short __ovld __cnfn ctz(short);
9385short2 __ovld __cnfn ctz(short2);
9386ushort2 __ovld __cnfn ctz(ushort2);
9387short3 __ovld __cnfn ctz(short3);
9388ushort3 __ovld __cnfn ctz(ushort3);
9389short4 __ovld __cnfn ctz(short4);
9390ushort4 __ovld __cnfn ctz(ushort4);
9391short8 __ovld __cnfn ctz(short8);
9392ushort8 __ovld __cnfn ctz(ushort8);
9393short16 __ovld __cnfn ctz(short16);
9394ushort16 __ovld __cnfn ctz(ushort16);
9397int2 __ovld __cnfn ctz(int2);
9398uint2 __ovld __cnfn ctz(uint2);
9399int3 __ovld __cnfn ctz(int3);
9400uint3 __ovld __cnfn ctz(uint3);
9401int4 __ovld __cnfn ctz(int4);
9402uint4 __ovld __cnfn ctz(uint4);
9403int8 __ovld __cnfn ctz(int8);
9404uint8 __ovld __cnfn ctz(uint8);
9405int16 __ovld __cnfn ctz(int16);
9406uint16 __ovld __cnfn ctz(uint16);
9407long __ovld __cnfn ctz(long);
9409long2 __ovld __cnfn ctz(long2);
9410ulong2 __ovld __cnfn ctz(ulong2);
9411long3 __ovld __cnfn ctz(long3);
9412ulong3 __ovld __cnfn ctz(ulong3);
9413long4 __ovld __cnfn ctz(long4);
9414ulong4 __ovld __cnfn ctz(ulong4);
9415long8 __ovld __cnfn ctz(long8);
9416ulong8 __ovld __cnfn ctz(ulong8);
9417long16 __ovld __cnfn ctz(long16);
9418ulong16 __ovld __cnfn ctz(ulong16);
9419#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
9420
9421/**
9422 * Returns mul_hi(a, b) + c.
9423 */
9424char __ovld __cnfn mad_hi(char, char, char);
9426char2 __ovld __cnfn mad_hi(char2, char2, char2);
9427uchar2 __ovld __cnfn mad_hi(uchar2, uchar2, uchar2);
9428char3 __ovld __cnfn mad_hi(char3, char3, char3);
9429uchar3 __ovld __cnfn mad_hi(uchar3, uchar3, uchar3);
9430char4 __ovld __cnfn mad_hi(char4, char4, char4);
9431uchar4 __ovld __cnfn mad_hi(uchar4, uchar4, uchar4);
9432char8 __ovld __cnfn mad_hi(char8, char8, char8);
9433uchar8 __ovld __cnfn mad_hi(uchar8, uchar8, uchar8);
9434char16 __ovld __cnfn mad_hi(char16, char16, char16);
9435uchar16 __ovld __cnfn mad_hi(uchar16, uchar16, uchar16);
9436short __ovld __cnfn mad_hi(short, short, short);
9438short2 __ovld __cnfn mad_hi(short2, short2, short2);
9439ushort2 __ovld __cnfn mad_hi(ushort2, ushort2, ushort2);
9440short3 __ovld __cnfn mad_hi(short3, short3, short3);
9441ushort3 __ovld __cnfn mad_hi(ushort3, ushort3, ushort3);
9442short4 __ovld __cnfn mad_hi(short4, short4, short4);
9443ushort4 __ovld __cnfn mad_hi(ushort4, ushort4, ushort4);
9444short8 __ovld __cnfn mad_hi(short8, short8, short8);
9445ushort8 __ovld __cnfn mad_hi(ushort8, ushort8, ushort8);
9446short16 __ovld __cnfn mad_hi(short16, short16, short16);
9447ushort16 __ovld __cnfn mad_hi(ushort16, ushort16, ushort16);
9448int __ovld __cnfn mad_hi(int, int, int);
9450int2 __ovld __cnfn mad_hi(int2, int2, int2);
9451uint2 __ovld __cnfn mad_hi(uint2, uint2, uint2);
9452int3 __ovld __cnfn mad_hi(int3, int3, int3);
9453uint3 __ovld __cnfn mad_hi(uint3, uint3, uint3);
9454int4 __ovld __cnfn mad_hi(int4, int4, int4);
9455uint4 __ovld __cnfn mad_hi(uint4, uint4, uint4);
9456int8 __ovld __cnfn mad_hi(int8, int8, int8);
9457uint8 __ovld __cnfn mad_hi(uint8, uint8, uint8);
9458int16 __ovld __cnfn mad_hi(int16, int16, int16);
9459uint16 __ovld __cnfn mad_hi(uint16, uint16, uint16);
9460long __ovld __cnfn mad_hi(long, long, long);
9462long2 __ovld __cnfn mad_hi(long2, long2, long2);
9463ulong2 __ovld __cnfn mad_hi(ulong2, ulong2, ulong2);
9464long3 __ovld __cnfn mad_hi(long3, long3, long3);
9465ulong3 __ovld __cnfn mad_hi(ulong3, ulong3, ulong3);
9466long4 __ovld __cnfn mad_hi(long4, long4, long4);
9467ulong4 __ovld __cnfn mad_hi(ulong4, ulong4, ulong4);
9468long8 __ovld __cnfn mad_hi(long8, long8, long8);
9469ulong8 __ovld __cnfn mad_hi(ulong8, ulong8, ulong8);
9470long16 __ovld __cnfn mad_hi(long16, long16, long16);
9471ulong16 __ovld __cnfn mad_hi(ulong16, ulong16, ulong16);
9472
9473/**
9474 * Returns a * b + c and saturates the result.
9475 */
9476char __ovld __cnfn mad_sat(char, char, char);
9478char2 __ovld __cnfn mad_sat(char2, char2, char2);
9479uchar2 __ovld __cnfn mad_sat(uchar2, uchar2, uchar2);
9480char3 __ovld __cnfn mad_sat(char3, char3, char3);
9481uchar3 __ovld __cnfn mad_sat(uchar3, uchar3, uchar3);
9482char4 __ovld __cnfn mad_sat(char4, char4, char4);
9483uchar4 __ovld __cnfn mad_sat(uchar4, uchar4, uchar4);
9484char8 __ovld __cnfn mad_sat(char8, char8, char8);
9485uchar8 __ovld __cnfn mad_sat(uchar8, uchar8, uchar8);
9486char16 __ovld __cnfn mad_sat(char16, char16, char16);
9487uchar16 __ovld __cnfn mad_sat(uchar16, uchar16, uchar16);
9488short __ovld __cnfn mad_sat(short, short, short);
9490short2 __ovld __cnfn mad_sat(short2, short2, short2);
9491ushort2 __ovld __cnfn mad_sat(ushort2, ushort2, ushort2);
9492short3 __ovld __cnfn mad_sat(short3, short3, short3);
9493ushort3 __ovld __cnfn mad_sat(ushort3, ushort3, ushort3);
9494short4 __ovld __cnfn mad_sat(short4, short4, short4);
9495ushort4 __ovld __cnfn mad_sat(ushort4, ushort4, ushort4);
9496short8 __ovld __cnfn mad_sat(short8, short8, short8);
9497ushort8 __ovld __cnfn mad_sat(ushort8, ushort8, ushort8);
9498short16 __ovld __cnfn mad_sat(short16, short16, short16);
9499ushort16 __ovld __cnfn mad_sat(ushort16, ushort16, ushort16);
9500int __ovld __cnfn mad_sat(int, int, int);
9502int2 __ovld __cnfn mad_sat(int2, int2, int2);
9503uint2 __ovld __cnfn mad_sat(uint2, uint2, uint2);
9504int3 __ovld __cnfn mad_sat(int3, int3, int3);
9505uint3 __ovld __cnfn mad_sat(uint3, uint3, uint3);
9506int4 __ovld __cnfn mad_sat(int4, int4, int4);
9507uint4 __ovld __cnfn mad_sat(uint4, uint4, uint4);
9508int8 __ovld __cnfn mad_sat(int8, int8, int8);
9509uint8 __ovld __cnfn mad_sat(uint8, uint8, uint8);
9510int16 __ovld __cnfn mad_sat(int16, int16, int16);
9511uint16 __ovld __cnfn mad_sat(uint16, uint16, uint16);
9512long __ovld __cnfn mad_sat(long, long, long);
9514long2 __ovld __cnfn mad_sat(long2, long2, long2);
9515ulong2 __ovld __cnfn mad_sat(ulong2, ulong2, ulong2);
9516long3 __ovld __cnfn mad_sat(long3, long3, long3);
9517ulong3 __ovld __cnfn mad_sat(ulong3, ulong3, ulong3);
9518long4 __ovld __cnfn mad_sat(long4, long4, long4);
9519ulong4 __ovld __cnfn mad_sat(ulong4, ulong4, ulong4);
9520long8 __ovld __cnfn mad_sat(long8, long8, long8);
9521ulong8 __ovld __cnfn mad_sat(ulong8, ulong8, ulong8);
9522long16 __ovld __cnfn mad_sat(long16, long16, long16);
9523ulong16 __ovld __cnfn mad_sat(ulong16, ulong16, ulong16);
9524
9525/**
9526 * Returns y if x < y, otherwise it returns x.
9527 */
9528char __ovld __cnfn max(char, char);
9530char2 __ovld __cnfn max(char2, char2);
9531uchar2 __ovld __cnfn max(uchar2, uchar2);
9532char3 __ovld __cnfn max(char3, char3);
9533uchar3 __ovld __cnfn max(uchar3, uchar3);
9534char4 __ovld __cnfn max(char4, char4);
9535uchar4 __ovld __cnfn max(uchar4, uchar4);
9536char8 __ovld __cnfn max(char8, char8);
9537uchar8 __ovld __cnfn max(uchar8, uchar8);
9538char16 __ovld __cnfn max(char16, char16);
9539uchar16 __ovld __cnfn max(uchar16, uchar16);
9540short __ovld __cnfn max(short, short);
9542short2 __ovld __cnfn max(short2, short2);
9543ushort2 __ovld __cnfn max(ushort2, ushort2);
9544short3 __ovld __cnfn max(short3, short3);
9545ushort3 __ovld __cnfn max(ushort3, ushort3);
9546short4 __ovld __cnfn max(short4, short4);
9547ushort4 __ovld __cnfn max(ushort4, ushort4);
9548short8 __ovld __cnfn max(short8, short8);
9549ushort8 __ovld __cnfn max(ushort8, ushort8);
9550short16 __ovld __cnfn max(short16, short16);
9551ushort16 __ovld __cnfn max(ushort16, ushort16);
9552int __ovld __cnfn max(int, int);
9554int2 __ovld __cnfn max(int2, int2);
9555uint2 __ovld __cnfn max(uint2, uint2);
9556int3 __ovld __cnfn max(int3, int3);
9557uint3 __ovld __cnfn max(uint3, uint3);
9558int4 __ovld __cnfn max(int4, int4);
9559uint4 __ovld __cnfn max(uint4, uint4);
9560int8 __ovld __cnfn max(int8, int8);
9561uint8 __ovld __cnfn max(uint8, uint8);
9562int16 __ovld __cnfn max(int16, int16);
9563uint16 __ovld __cnfn max(uint16, uint16);
9564long __ovld __cnfn max(long, long);
9566long2 __ovld __cnfn max(long2, long2);
9567ulong2 __ovld __cnfn max(ulong2, ulong2);
9568long3 __ovld __cnfn max(long3, long3);
9569ulong3 __ovld __cnfn max(ulong3, ulong3);
9570long4 __ovld __cnfn max(long4, long4);
9571ulong4 __ovld __cnfn max(ulong4, ulong4);
9572long8 __ovld __cnfn max(long8, long8);
9573ulong8 __ovld __cnfn max(ulong8, ulong8);
9574long16 __ovld __cnfn max(long16, long16);
9575ulong16 __ovld __cnfn max(ulong16, ulong16);
9576char2 __ovld __cnfn max(char2, char);
9577uchar2 __ovld __cnfn max(uchar2, uchar);
9578char3 __ovld __cnfn max(char3, char);
9579uchar3 __ovld __cnfn max(uchar3, uchar);
9580char4 __ovld __cnfn max(char4, char);
9581uchar4 __ovld __cnfn max(uchar4, uchar);
9582char8 __ovld __cnfn max(char8, char);
9583uchar8 __ovld __cnfn max(uchar8, uchar);
9584char16 __ovld __cnfn max(char16, char);
9585uchar16 __ovld __cnfn max(uchar16, uchar);
9586short2 __ovld __cnfn max(short2, short);
9587ushort2 __ovld __cnfn max(ushort2, ushort);
9588short3 __ovld __cnfn max(short3, short);
9589ushort3 __ovld __cnfn max(ushort3, ushort);
9590short4 __ovld __cnfn max(short4, short);
9591ushort4 __ovld __cnfn max(ushort4, ushort);
9592short8 __ovld __cnfn max(short8, short);
9593ushort8 __ovld __cnfn max(ushort8, ushort);
9594short16 __ovld __cnfn max(short16, short);
9595ushort16 __ovld __cnfn max(ushort16, ushort);
9596int2 __ovld __cnfn max(int2, int);
9597uint2 __ovld __cnfn max(uint2, uint);
9598int3 __ovld __cnfn max(int3, int);
9599uint3 __ovld __cnfn max(uint3, uint);
9600int4 __ovld __cnfn max(int4, int);
9601uint4 __ovld __cnfn max(uint4, uint);
9602int8 __ovld __cnfn max(int8, int);
9603uint8 __ovld __cnfn max(uint8, uint);
9604int16 __ovld __cnfn max(int16, int);
9605uint16 __ovld __cnfn max(uint16, uint);
9606long2 __ovld __cnfn max(long2, long);
9607ulong2 __ovld __cnfn max(ulong2, ulong);
9608long3 __ovld __cnfn max(long3, long);
9609ulong3 __ovld __cnfn max(ulong3, ulong);
9610long4 __ovld __cnfn max(long4, long);
9611ulong4 __ovld __cnfn max(ulong4, ulong);
9612long8 __ovld __cnfn max(long8, long);
9613ulong8 __ovld __cnfn max(ulong8, ulong);
9614long16 __ovld __cnfn max(long16, long);
9615ulong16 __ovld __cnfn max(ulong16, ulong);
9616
9617/**
9618 * Returns y if y < x, otherwise it returns x.
9619 */
9620char __ovld __cnfn min(char, char);
9622char2 __ovld __cnfn min(char2, char2);
9623uchar2 __ovld __cnfn min(uchar2, uchar2);
9624char3 __ovld __cnfn min(char3, char3);
9625uchar3 __ovld __cnfn min(uchar3, uchar3);
9626char4 __ovld __cnfn min(char4, char4);
9627uchar4 __ovld __cnfn min(uchar4, uchar4);
9628char8 __ovld __cnfn min(char8, char8);
9629uchar8 __ovld __cnfn min(uchar8, uchar8);
9630char16 __ovld __cnfn min(char16, char16);
9631uchar16 __ovld __cnfn min(uchar16, uchar16);
9632short __ovld __cnfn min(short, short);
9634short2 __ovld __cnfn min(short2, short2);
9635ushort2 __ovld __cnfn min(ushort2, ushort2);
9636short3 __ovld __cnfn min(short3, short3);
9637ushort3 __ovld __cnfn min(ushort3, ushort3);
9638short4 __ovld __cnfn min(short4, short4);
9639ushort4 __ovld __cnfn min(ushort4, ushort4);
9640short8 __ovld __cnfn min(short8, short8);
9641ushort8 __ovld __cnfn min(ushort8, ushort8);
9642short16 __ovld __cnfn min(short16, short16);
9643ushort16 __ovld __cnfn min(ushort16, ushort16);
9644int __ovld __cnfn min(int, int);
9646int2 __ovld __cnfn min(int2, int2);
9647uint2 __ovld __cnfn min(uint2, uint2);
9648int3 __ovld __cnfn min(int3, int3);
9649uint3 __ovld __cnfn min(uint3, uint3);
9650int4 __ovld __cnfn min(int4, int4);
9651uint4 __ovld __cnfn min(uint4, uint4);
9652int8 __ovld __cnfn min(int8, int8);
9653uint8 __ovld __cnfn min(uint8, uint8);
9654int16 __ovld __cnfn min(int16, int16);
9655uint16 __ovld __cnfn min(uint16, uint16);
9656long __ovld __cnfn min(long, long);
9658long2 __ovld __cnfn min(long2, long2);
9659ulong2 __ovld __cnfn min(ulong2, ulong2);
9660long3 __ovld __cnfn min(long3, long3);
9661ulong3 __ovld __cnfn min(ulong3, ulong3);
9662long4 __ovld __cnfn min(long4, long4);
9663ulong4 __ovld __cnfn min(ulong4, ulong4);
9664long8 __ovld __cnfn min(long8, long8);
9665ulong8 __ovld __cnfn min(ulong8, ulong8);
9666long16 __ovld __cnfn min(long16, long16);
9667ulong16 __ovld __cnfn min(ulong16, ulong16);
9668char2 __ovld __cnfn min(char2, char);
9669uchar2 __ovld __cnfn min(uchar2, uchar);
9670char3 __ovld __cnfn min(char3, char);
9671uchar3 __ovld __cnfn min(uchar3, uchar);
9672char4 __ovld __cnfn min(char4, char);
9673uchar4 __ovld __cnfn min(uchar4, uchar);
9674char8 __ovld __cnfn min(char8, char);
9675uchar8 __ovld __cnfn min(uchar8, uchar);
9676char16 __ovld __cnfn min(char16, char);
9677uchar16 __ovld __cnfn min(uchar16, uchar);
9678short2 __ovld __cnfn min(short2, short);
9679ushort2 __ovld __cnfn min(ushort2, ushort);
9680short3 __ovld __cnfn min(short3, short);
9681ushort3 __ovld __cnfn min(ushort3, ushort);
9682short4 __ovld __cnfn min(short4, short);
9683ushort4 __ovld __cnfn min(ushort4, ushort);
9684short8 __ovld __cnfn min(short8, short);
9685ushort8 __ovld __cnfn min(ushort8, ushort);
9686short16 __ovld __cnfn min(short16, short);
9687ushort16 __ovld __cnfn min(ushort16, ushort);
9688int2 __ovld __cnfn min(int2, int);
9689uint2 __ovld __cnfn min(uint2, uint);
9690int3 __ovld __cnfn min(int3, int);
9691uint3 __ovld __cnfn min(uint3, uint);
9692int4 __ovld __cnfn min(int4, int);
9693uint4 __ovld __cnfn min(uint4, uint);
9694int8 __ovld __cnfn min(int8, int);
9695uint8 __ovld __cnfn min(uint8, uint);
9696int16 __ovld __cnfn min(int16, int);
9697uint16 __ovld __cnfn min(uint16, uint);
9698long2 __ovld __cnfn min(long2, long);
9699ulong2 __ovld __cnfn min(ulong2, ulong);
9700long3 __ovld __cnfn min(long3, long);
9701ulong3 __ovld __cnfn min(ulong3, ulong);
9702long4 __ovld __cnfn min(long4, long);
9703ulong4 __ovld __cnfn min(ulong4, ulong);
9704long8 __ovld __cnfn min(long8, long);
9705ulong8 __ovld __cnfn min(ulong8, ulong);
9706long16 __ovld __cnfn min(long16, long);
9707ulong16 __ovld __cnfn min(ulong16, ulong);
9708
9709/**
9710 * Computes x * y and returns the high half of the
9711 * product of x and y.
9712 */
9713char __ovld __cnfn mul_hi(char, char);
9715char2 __ovld __cnfn mul_hi(char2, char2);
9716uchar2 __ovld __cnfn mul_hi(uchar2, uchar2);
9717char3 __ovld __cnfn mul_hi(char3, char3);
9718uchar3 __ovld __cnfn mul_hi(uchar3, uchar3);
9719char4 __ovld __cnfn mul_hi(char4, char4);
9720uchar4 __ovld __cnfn mul_hi(uchar4, uchar4);
9721char8 __ovld __cnfn mul_hi(char8, char8);
9722uchar8 __ovld __cnfn mul_hi(uchar8, uchar8);
9723char16 __ovld __cnfn mul_hi(char16, char16);
9724uchar16 __ovld __cnfn mul_hi(uchar16, uchar16);
9725short __ovld __cnfn mul_hi(short, short);
9727short2 __ovld __cnfn mul_hi(short2, short2);
9728ushort2 __ovld __cnfn mul_hi(ushort2, ushort2);
9729short3 __ovld __cnfn mul_hi(short3, short3);
9730ushort3 __ovld __cnfn mul_hi(ushort3, ushort3);
9731short4 __ovld __cnfn mul_hi(short4, short4);
9732ushort4 __ovld __cnfn mul_hi(ushort4, ushort4);
9733short8 __ovld __cnfn mul_hi(short8, short8);
9734ushort8 __ovld __cnfn mul_hi(ushort8, ushort8);
9735short16 __ovld __cnfn mul_hi(short16, short16);
9736ushort16 __ovld __cnfn mul_hi(ushort16, ushort16);
9737int __ovld __cnfn mul_hi(int, int);
9739int2 __ovld __cnfn mul_hi(int2, int2);
9740uint2 __ovld __cnfn mul_hi(uint2, uint2);
9741int3 __ovld __cnfn mul_hi(int3, int3);
9742uint3 __ovld __cnfn mul_hi(uint3, uint3);
9743int4 __ovld __cnfn mul_hi(int4, int4);
9744uint4 __ovld __cnfn mul_hi(uint4, uint4);
9745int8 __ovld __cnfn mul_hi(int8, int8);
9746uint8 __ovld __cnfn mul_hi(uint8, uint8);
9747int16 __ovld __cnfn mul_hi(int16, int16);
9748uint16 __ovld __cnfn mul_hi(uint16, uint16);
9749long __ovld __cnfn mul_hi(long, long);
9751long2 __ovld __cnfn mul_hi(long2, long2);
9752ulong2 __ovld __cnfn mul_hi(ulong2, ulong2);
9753long3 __ovld __cnfn mul_hi(long3, long3);
9754ulong3 __ovld __cnfn mul_hi(ulong3, ulong3);
9755long4 __ovld __cnfn mul_hi(long4, long4);
9756ulong4 __ovld __cnfn mul_hi(ulong4, ulong4);
9757long8 __ovld __cnfn mul_hi(long8, long8);
9758ulong8 __ovld __cnfn mul_hi(ulong8, ulong8);
9759long16 __ovld __cnfn mul_hi(long16, long16);
9760ulong16 __ovld __cnfn mul_hi(ulong16, ulong16);
9761
9762/**
9763 * For each element in v, the bits are shifted left by
9764 * the number of bits given by the corresponding
9765 * element in i (subject to usual shift modulo rules
9766 * described in section 6.3). Bits shifted off the left
9767 * side of the element are shifted back in from the
9768 * right.
9769 */
9770char __ovld __cnfn rotate(char, char);
9772char2 __ovld __cnfn rotate(char2, char2);
9773uchar2 __ovld __cnfn rotate(uchar2, uchar2);
9774char3 __ovld __cnfn rotate(char3, char3);
9775uchar3 __ovld __cnfn rotate(uchar3, uchar3);
9776char4 __ovld __cnfn rotate(char4, char4);
9777uchar4 __ovld __cnfn rotate(uchar4, uchar4);
9778char8 __ovld __cnfn rotate(char8, char8);
9779uchar8 __ovld __cnfn rotate(uchar8, uchar8);
9780char16 __ovld __cnfn rotate(char16, char16);
9781uchar16 __ovld __cnfn rotate(uchar16, uchar16);
9782short __ovld __cnfn rotate(short, short);
9784short2 __ovld __cnfn rotate(short2, short2);
9785ushort2 __ovld __cnfn rotate(ushort2, ushort2);
9786short3 __ovld __cnfn rotate(short3, short3);
9787ushort3 __ovld __cnfn rotate(ushort3, ushort3);
9788short4 __ovld __cnfn rotate(short4, short4);
9789ushort4 __ovld __cnfn rotate(ushort4, ushort4);
9790short8 __ovld __cnfn rotate(short8, short8);
9791ushort8 __ovld __cnfn rotate(ushort8, ushort8);
9792short16 __ovld __cnfn rotate(short16, short16);
9793ushort16 __ovld __cnfn rotate(ushort16, ushort16);
9794int __ovld __cnfn rotate(int, int);
9796int2 __ovld __cnfn rotate(int2, int2);
9797uint2 __ovld __cnfn rotate(uint2, uint2);
9798int3 __ovld __cnfn rotate(int3, int3);
9799uint3 __ovld __cnfn rotate(uint3, uint3);
9800int4 __ovld __cnfn rotate(int4, int4);
9801uint4 __ovld __cnfn rotate(uint4, uint4);
9802int8 __ovld __cnfn rotate(int8, int8);
9803uint8 __ovld __cnfn rotate(uint8, uint8);
9804int16 __ovld __cnfn rotate(int16, int16);
9805uint16 __ovld __cnfn rotate(uint16, uint16);
9806long __ovld __cnfn rotate(long, long);
9808long2 __ovld __cnfn rotate(long2, long2);
9809ulong2 __ovld __cnfn rotate(ulong2, ulong2);
9810long3 __ovld __cnfn rotate(long3, long3);
9811ulong3 __ovld __cnfn rotate(ulong3, ulong3);
9812long4 __ovld __cnfn rotate(long4, long4);
9813ulong4 __ovld __cnfn rotate(ulong4, ulong4);
9814long8 __ovld __cnfn rotate(long8, long8);
9815ulong8 __ovld __cnfn rotate(ulong8, ulong8);
9816long16 __ovld __cnfn rotate(long16, long16);
9817ulong16 __ovld __cnfn rotate(ulong16, ulong16);
9818
9819/**
9820 * Returns x - y and saturates the result.
9821 */
9822char __ovld __cnfn sub_sat(char, char);
9824char2 __ovld __cnfn sub_sat(char2, char2);
9825uchar2 __ovld __cnfn sub_sat(uchar2, uchar2);
9826char3 __ovld __cnfn sub_sat(char3, char3);
9827uchar3 __ovld __cnfn sub_sat(uchar3, uchar3);
9828char4 __ovld __cnfn sub_sat(char4, char4);
9829uchar4 __ovld __cnfn sub_sat(uchar4, uchar4);
9830char8 __ovld __cnfn sub_sat(char8, char8);
9831uchar8 __ovld __cnfn sub_sat(uchar8, uchar8);
9832char16 __ovld __cnfn sub_sat(char16, char16);
9833uchar16 __ovld __cnfn sub_sat(uchar16, uchar16);
9834short __ovld __cnfn sub_sat(short, short);
9836short2 __ovld __cnfn sub_sat(short2, short2);
9837ushort2 __ovld __cnfn sub_sat(ushort2, ushort2);
9838short3 __ovld __cnfn sub_sat(short3, short3);
9839ushort3 __ovld __cnfn sub_sat(ushort3, ushort3);
9840short4 __ovld __cnfn sub_sat(short4, short4);
9841ushort4 __ovld __cnfn sub_sat(ushort4, ushort4);
9842short8 __ovld __cnfn sub_sat(short8, short8);
9843ushort8 __ovld __cnfn sub_sat(ushort8, ushort8);
9844short16 __ovld __cnfn sub_sat(short16, short16);
9845ushort16 __ovld __cnfn sub_sat(ushort16, ushort16);
9846int __ovld __cnfn sub_sat(int, int);
9848int2 __ovld __cnfn sub_sat(int2, int2);
9849uint2 __ovld __cnfn sub_sat(uint2, uint2);
9850int3 __ovld __cnfn sub_sat(int3, int3);
9851uint3 __ovld __cnfn sub_sat(uint3, uint3);
9852int4 __ovld __cnfn sub_sat(int4, int4);
9853uint4 __ovld __cnfn sub_sat(uint4, uint4);
9854int8 __ovld __cnfn sub_sat(int8, int8);
9855uint8 __ovld __cnfn sub_sat(uint8, uint8);
9856int16 __ovld __cnfn sub_sat(int16, int16);
9857uint16 __ovld __cnfn sub_sat(uint16, uint16);
9858long __ovld __cnfn sub_sat(long, long);
9860long2 __ovld __cnfn sub_sat(long2, long2);
9861ulong2 __ovld __cnfn sub_sat(ulong2, ulong2);
9862long3 __ovld __cnfn sub_sat(long3, long3);
9863ulong3 __ovld __cnfn sub_sat(ulong3, ulong3);
9864long4 __ovld __cnfn sub_sat(long4, long4);
9865ulong4 __ovld __cnfn sub_sat(ulong4, ulong4);
9866long8 __ovld __cnfn sub_sat(long8, long8);
9867ulong8 __ovld __cnfn sub_sat(ulong8, ulong8);
9868long16 __ovld __cnfn sub_sat(long16, long16);
9869ulong16 __ovld __cnfn sub_sat(ulong16, ulong16);
9870
9871/**
9872 * result[i] = ((short)hi[i] << 8) | lo[i]
9873 * result[i] = ((ushort)hi[i] << 8) | lo[i]
9874 */
9877short2 __ovld __cnfn upsample(char2, uchar2);
9878short3 __ovld __cnfn upsample(char3, uchar3);
9879short4 __ovld __cnfn upsample(char4, uchar4);
9880short8 __ovld __cnfn upsample(char8, uchar8);
9881short16 __ovld __cnfn upsample(char16, uchar16);
9882ushort2 __ovld __cnfn upsample(uchar2, uchar2);
9883ushort3 __ovld __cnfn upsample(uchar3, uchar3);
9884ushort4 __ovld __cnfn upsample(uchar4, uchar4);
9885ushort8 __ovld __cnfn upsample(uchar8, uchar8);
9886ushort16 __ovld __cnfn upsample(uchar16, uchar16);
9887
9888/**
9889 * result[i] = ((int)hi[i] << 16) | lo[i]
9890 * result[i] = ((uint)hi[i] << 16) | lo[i]
9891 */
9894int2 __ovld __cnfn upsample(short2, ushort2);
9895int3 __ovld __cnfn upsample(short3, ushort3);
9896int4 __ovld __cnfn upsample(short4, ushort4);
9897int8 __ovld __cnfn upsample(short8, ushort8);
9898int16 __ovld __cnfn upsample(short16, ushort16);
9899uint2 __ovld __cnfn upsample(ushort2, ushort2);
9900uint3 __ovld __cnfn upsample(ushort3, ushort3);
9901uint4 __ovld __cnfn upsample(ushort4, ushort4);
9902uint8 __ovld __cnfn upsample(ushort8, ushort8);
9903uint16 __ovld __cnfn upsample(ushort16, ushort16);
9904/**
9905 * result[i] = ((long)hi[i] << 32) | lo[i]
9906 * result[i] = ((ulong)hi[i] << 32) | lo[i]
9907 */
9910long2 __ovld __cnfn upsample(int2, uint2);
9911long3 __ovld __cnfn upsample(int3, uint3);
9912long4 __ovld __cnfn upsample(int4, uint4);
9913long8 __ovld __cnfn upsample(int8, uint8);
9914long16 __ovld __cnfn upsample(int16, uint16);
9915ulong2 __ovld __cnfn upsample(uint2, uint2);
9916ulong3 __ovld __cnfn upsample(uint3, uint3);
9917ulong4 __ovld __cnfn upsample(uint4, uint4);
9918ulong8 __ovld __cnfn upsample(uint8, uint8);
9919ulong16 __ovld __cnfn upsample(uint16, uint16);
9920
9921/*
9922 * popcount(x): returns the number of set bit in x
9923 */
9924#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
9928uchar2 __ovld __cnfn popcount(uchar2);
9930uchar3 __ovld __cnfn popcount(uchar3);
9932uchar4 __ovld __cnfn popcount(uchar4);
9934uchar8 __ovld __cnfn popcount(uchar8);
9935char16 __ovld __cnfn popcount(char16);
9936uchar16 __ovld __cnfn popcount(uchar16);
9939short2 __ovld __cnfn popcount(short2);
9940ushort2 __ovld __cnfn popcount(ushort2);
9941short3 __ovld __cnfn popcount(short3);
9942ushort3 __ovld __cnfn popcount(ushort3);
9943short4 __ovld __cnfn popcount(short4);
9944ushort4 __ovld __cnfn popcount(ushort4);
9945short8 __ovld __cnfn popcount(short8);
9946ushort8 __ovld __cnfn popcount(ushort8);
9947short16 __ovld __cnfn popcount(short16);
9948ushort16 __ovld __cnfn popcount(ushort16);
9960uint16 __ovld __cnfn popcount(uint16);
9964ulong2 __ovld __cnfn popcount(ulong2);
9966ulong3 __ovld __cnfn popcount(ulong3);
9968ulong4 __ovld __cnfn popcount(ulong4);
9970ulong8 __ovld __cnfn popcount(ulong8);
9971long16 __ovld __cnfn popcount(long16);
9972ulong16 __ovld __cnfn popcount(ulong16);
9973#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
9974
9975/**
9976 * Multiply two 24-bit integer values x and y and add
9977 * the 32-bit integer result to the 32-bit integer z.
9978 * Refer to definition of mul24 to see how the 24-bit
9979 * integer multiplication is performed.
9980 */
9981int __ovld __cnfn mad24(int, int, int);
9983int2 __ovld __cnfn mad24(int2, int2, int2);
9984uint2 __ovld __cnfn mad24(uint2, uint2, uint2);
9985int3 __ovld __cnfn mad24(int3, int3, int3);
9986uint3 __ovld __cnfn mad24(uint3, uint3, uint3);
9987int4 __ovld __cnfn mad24(int4, int4, int4);
9988uint4 __ovld __cnfn mad24(uint4, uint4, uint4);
9989int8 __ovld __cnfn mad24(int8, int8, int8);
9990uint8 __ovld __cnfn mad24(uint8, uint8, uint8);
9991int16 __ovld __cnfn mad24(int16, int16, int16);
9992uint16 __ovld __cnfn mad24(uint16, uint16, uint16);
9993
9994/**
9995 * Multiply two 24-bit integer values x and y. x and y
9996 * are 32-bit integers but only the low 24-bits are used
9997 * to perform the multiplication. mul24 should only
9998 * be used when values in x and y are in the range [-
9999 * 2^23, 2^23-1] if x and y are signed integers and in the
10000 * range [0, 2^24-1] if x and y are unsigned integers. If
10001 * x and y are not in this range, the multiplication
10002 * result is implementation-defined.
10003 */
10004int __ovld __cnfn mul24(int, int);
10006int2 __ovld __cnfn mul24(int2, int2);
10007uint2 __ovld __cnfn mul24(uint2, uint2);
10008int3 __ovld __cnfn mul24(int3, int3);
10009uint3 __ovld __cnfn mul24(uint3, uint3);
10010int4 __ovld __cnfn mul24(int4, int4);
10011uint4 __ovld __cnfn mul24(uint4, uint4);
10012int8 __ovld __cnfn mul24(int8, int8);
10013uint8 __ovld __cnfn mul24(uint8, uint8);
10014int16 __ovld __cnfn mul24(int16, int16);
10015uint16 __ovld __cnfn mul24(uint16, uint16);
10016
10017// OpenCL v1.1 s6.11.4, v1.2 s6.12.4, v2.0 s6.13.4 - Common Functions
10018
10019/**
10020 * Returns fmin(fmax(x, minval), maxval).
10021 * Results are undefined if minval > maxval.
10022 */
10023float __ovld __cnfn clamp(float, float, float);
10024float2 __ovld __cnfn clamp(float2, float2, float2);
10025float3 __ovld __cnfn clamp(float3, float3, float3);
10026float4 __ovld __cnfn clamp(float4, float4, float4);
10027float8 __ovld __cnfn clamp(float8, float8, float8);
10028float16 __ovld __cnfn clamp(float16, float16, float16);
10029float2 __ovld __cnfn clamp(float2, float, float);
10030float3 __ovld __cnfn clamp(float3, float, float);
10031float4 __ovld __cnfn clamp(float4, float, float);
10032float8 __ovld __cnfn clamp(float8, float, float);
10033float16 __ovld __cnfn clamp(float16, float, float);
10034#ifdef cl_khr_fp64
10035double __ovld __cnfn clamp(double, double, double);
10036double2 __ovld __cnfn clamp(double2, double2, double2);
10037double3 __ovld __cnfn clamp(double3, double3, double3);
10038double4 __ovld __cnfn clamp(double4, double4, double4);
10039double8 __ovld __cnfn clamp(double8, double8, double8);
10040double16 __ovld __cnfn clamp(double16, double16, double16);
10041double2 __ovld __cnfn clamp(double2, double, double);
10042double3 __ovld __cnfn clamp(double3, double, double);
10043double4 __ovld __cnfn clamp(double4, double, double);
10044double8 __ovld __cnfn clamp(double8, double, double);
10045double16 __ovld __cnfn clamp(double16, double, double);
10046#endif //cl_khr_fp64
10047#ifdef cl_khr_fp16
10048half __ovld __cnfn clamp(half, half, half);
10049half2 __ovld __cnfn clamp(half2, half2, half2);
10050half3 __ovld __cnfn clamp(half3, half3, half3);
10051half4 __ovld __cnfn clamp(half4, half4, half4);
10052half8 __ovld __cnfn clamp(half8, half8, half8);
10053half16 __ovld __cnfn clamp(half16, half16, half16);
10054half2 __ovld __cnfn clamp(half2, half, half);
10055half3 __ovld __cnfn clamp(half3, half, half);
10056half4 __ovld __cnfn clamp(half4, half, half);
10057half8 __ovld __cnfn clamp(half8, half, half);
10058half16 __ovld __cnfn clamp(half16, half, half);
10059#endif //cl_khr_fp16
10060
10061/**
10062 * Converts radians to degrees, i.e. (180 / PI) *
10063 * radians.
10064 */
10065float __ovld __cnfn degrees(float);
10066float2 __ovld __cnfn degrees(float2);
10067float3 __ovld __cnfn degrees(float3);
10068float4 __ovld __cnfn degrees(float4);
10069float8 __ovld __cnfn degrees(float8);
10070float16 __ovld __cnfn degrees(float16);
10071#ifdef cl_khr_fp64
10072double __ovld __cnfn degrees(double);
10073double2 __ovld __cnfn degrees(double2);
10074double3 __ovld __cnfn degrees(double3);
10075double4 __ovld __cnfn degrees(double4);
10076double8 __ovld __cnfn degrees(double8);
10077double16 __ovld __cnfn degrees(double16);
10078#endif //cl_khr_fp64
10079#ifdef cl_khr_fp16
10080half __ovld __cnfn degrees(half);
10081half2 __ovld __cnfn degrees(half2);
10082half3 __ovld __cnfn degrees(half3);
10083half4 __ovld __cnfn degrees(half4);
10084half8 __ovld __cnfn degrees(half8);
10085half16 __ovld __cnfn degrees(half16);
10086#endif //cl_khr_fp16
10087
10088/**
10089 * Returns y if x < y, otherwise it returns x. If x and y
10090 * are infinite or NaN, the return values are undefined.
10091 */
10092float __ovld __cnfn max(float, float);
10093float2 __ovld __cnfn max(float2, float2);
10094float3 __ovld __cnfn max(float3, float3);
10095float4 __ovld __cnfn max(float4, float4);
10096float8 __ovld __cnfn max(float8, float8);
10097float16 __ovld __cnfn max(float16, float16);
10098float2 __ovld __cnfn max(float2, float);
10099float3 __ovld __cnfn max(float3, float);
10100float4 __ovld __cnfn max(float4, float);
10101float8 __ovld __cnfn max(float8, float);
10102float16 __ovld __cnfn max(float16, float);
10103#ifdef cl_khr_fp64
10104double __ovld __cnfn max(double, double);
10105double2 __ovld __cnfn max(double2, double2);
10106double3 __ovld __cnfn max(double3, double3);
10107double4 __ovld __cnfn max(double4, double4);
10108double8 __ovld __cnfn max(double8, double8);
10109double16 __ovld __cnfn max(double16, double16);
10110double2 __ovld __cnfn max(double2, double);
10111double3 __ovld __cnfn max(double3, double);
10112double4 __ovld __cnfn max(double4, double);
10113double8 __ovld __cnfn max(double8, double);
10114double16 __ovld __cnfn max(double16, double);
10115#endif //cl_khr_fp64
10116#ifdef cl_khr_fp16
10117half __ovld __cnfn max(half, half);
10118half2 __ovld __cnfn max(half2, half2);
10119half3 __ovld __cnfn max(half3, half3);
10120half4 __ovld __cnfn max(half4, half4);
10121half8 __ovld __cnfn max(half8, half8);
10122half16 __ovld __cnfn max(half16, half16);
10123half2 __ovld __cnfn max(half2, half);
10124half3 __ovld __cnfn max(half3, half);
10125half4 __ovld __cnfn max(half4, half);
10126half8 __ovld __cnfn max(half8, half);
10127half16 __ovld __cnfn max(half16, half);
10128#endif //cl_khr_fp16
10129
10130/**
10131 * Returns y if y < x, otherwise it returns x. If x and y
10132 * are infinite or NaN, the return values are undefined.
10133 */
10134float __ovld __cnfn min(float, float);
10135float2 __ovld __cnfn min(float2, float2);
10136float3 __ovld __cnfn min(float3, float3);
10137float4 __ovld __cnfn min(float4, float4);
10138float8 __ovld __cnfn min(float8, float8);
10139float16 __ovld __cnfn min(float16, float16);
10140float2 __ovld __cnfn min(float2, float);
10141float3 __ovld __cnfn min(float3, float);
10142float4 __ovld __cnfn min(float4, float);
10143float8 __ovld __cnfn min(float8, float);
10144float16 __ovld __cnfn min(float16, float);
10145#ifdef cl_khr_fp64
10146double __ovld __cnfn min(double, double);
10147double2 __ovld __cnfn min(double2, double2);
10148double3 __ovld __cnfn min(double3, double3);
10149double4 __ovld __cnfn min(double4, double4);
10150double8 __ovld __cnfn min(double8, double8);
10151double16 __ovld __cnfn min(double16, double16);
10152double2 __ovld __cnfn min(double2, double);
10153double3 __ovld __cnfn min(double3, double);
10154double4 __ovld __cnfn min(double4, double);
10155double8 __ovld __cnfn min(double8, double);
10156double16 __ovld __cnfn min(double16, double);
10157#endif //cl_khr_fp64
10158#ifdef cl_khr_fp16
10159half __ovld __cnfn min(half, half);
10160half2 __ovld __cnfn min(half2, half2);
10161half3 __ovld __cnfn min(half3, half3);
10162half4 __ovld __cnfn min(half4, half4);
10163half8 __ovld __cnfn min(half8, half8);
10164half16 __ovld __cnfn min(half16, half16);
10165half2 __ovld __cnfn min(half2, half);
10166half3 __ovld __cnfn min(half3, half);
10167half4 __ovld __cnfn min(half4, half);
10168half8 __ovld __cnfn min(half8, half);
10169half16 __ovld __cnfn min(half16, half);
10170#endif //cl_khr_fp16
10171
10172/**
10173 * Returns the linear blend of x & y implemented as:
10174 * x + (y - x) * a
10175 * a must be a value in the range 0.0 ... 1.0. If a is not
10176 * in the range 0.0 ... 1.0, the return values are
10177 * undefined.
10178 */
10179float __ovld __cnfn mix(float, float, float);
10180float2 __ovld __cnfn mix(float2, float2, float2);
10181float3 __ovld __cnfn mix(float3, float3, float3);
10182float4 __ovld __cnfn mix(float4, float4, float4);
10183float8 __ovld __cnfn mix(float8, float8, float8);
10184float16 __ovld __cnfn mix(float16, float16, float16);
10185float2 __ovld __cnfn mix(float2, float2, float);
10186float3 __ovld __cnfn mix(float3, float3, float);
10187float4 __ovld __cnfn mix(float4, float4, float);
10188float8 __ovld __cnfn mix(float8, float8, float);
10189float16 __ovld __cnfn mix(float16, float16, float);
10190#ifdef cl_khr_fp64
10191double __ovld __cnfn mix(double, double, double);
10192double2 __ovld __cnfn mix(double2, double2, double2);
10193double3 __ovld __cnfn mix(double3, double3, double3);
10194double4 __ovld __cnfn mix(double4, double4, double4);
10195double8 __ovld __cnfn mix(double8, double8, double8);
10196double16 __ovld __cnfn mix(double16, double16, double16);
10197double2 __ovld __cnfn mix(double2, double2, double);
10198double3 __ovld __cnfn mix(double3, double3, double);
10199double4 __ovld __cnfn mix(double4, double4, double);
10200double8 __ovld __cnfn mix(double8, double8, double);
10201double16 __ovld __cnfn mix(double16, double16, double);
10202#endif //cl_khr_fp64
10203#ifdef cl_khr_fp16
10204half __ovld __cnfn mix(half, half, half);
10205half2 __ovld __cnfn mix(half2, half2, half2);
10206half3 __ovld __cnfn mix(half3, half3, half3);
10207half4 __ovld __cnfn mix(half4, half4, half4);
10208half8 __ovld __cnfn mix(half8, half8, half8);
10209half16 __ovld __cnfn mix(half16, half16, half16);
10210half2 __ovld __cnfn mix(half2, half2, half);
10211half3 __ovld __cnfn mix(half3, half3, half);
10212half4 __ovld __cnfn mix(half4, half4, half);
10213half8 __ovld __cnfn mix(half8, half8, half);
10214half16 __ovld __cnfn mix(half16, half16, half);
10215#endif //cl_khr_fp16
10216
10217/**
10218 * Converts degrees to radians, i.e. (PI / 180) *
10219 * degrees.
10220 */
10221float __ovld __cnfn radians(float);
10222float2 __ovld __cnfn radians(float2);
10223float3 __ovld __cnfn radians(float3);
10224float4 __ovld __cnfn radians(float4);
10225float8 __ovld __cnfn radians(float8);
10226float16 __ovld __cnfn radians(float16);
10227#ifdef cl_khr_fp64
10228double __ovld __cnfn radians(double);
10229double2 __ovld __cnfn radians(double2);
10230double3 __ovld __cnfn radians(double3);
10231double4 __ovld __cnfn radians(double4);
10232double8 __ovld __cnfn radians(double8);
10233double16 __ovld __cnfn radians(double16);
10234#endif //cl_khr_fp64
10235#ifdef cl_khr_fp16
10236half __ovld __cnfn radians(half);
10237half2 __ovld __cnfn radians(half2);
10238half3 __ovld __cnfn radians(half3);
10239half4 __ovld __cnfn radians(half4);
10240half8 __ovld __cnfn radians(half8);
10241half16 __ovld __cnfn radians(half16);
10242#endif //cl_khr_fp16
10243
10244/**
10245 * Returns 0.0 if x < edge, otherwise it returns 1.0.
10246 */
10247float __ovld __cnfn step(float, float);
10248float2 __ovld __cnfn step(float2, float2);
10249float3 __ovld __cnfn step(float3, float3);
10250float4 __ovld __cnfn step(float4, float4);
10251float8 __ovld __cnfn step(float8, float8);
10252float16 __ovld __cnfn step(float16, float16);
10253float2 __ovld __cnfn step(float, float2);
10254float3 __ovld __cnfn step(float, float3);
10255float4 __ovld __cnfn step(float, float4);
10256float8 __ovld __cnfn step(float, float8);
10257float16 __ovld __cnfn step(float, float16);
10258#ifdef cl_khr_fp64
10259double __ovld __cnfn step(double, double);
10260double2 __ovld __cnfn step(double2, double2);
10261double3 __ovld __cnfn step(double3, double3);
10262double4 __ovld __cnfn step(double4, double4);
10263double8 __ovld __cnfn step(double8, double8);
10264double16 __ovld __cnfn step(double16, double16);
10265double2 __ovld __cnfn step(double, double2);
10266double3 __ovld __cnfn step(double, double3);
10267double4 __ovld __cnfn step(double, double4);
10268double8 __ovld __cnfn step(double, double8);
10269double16 __ovld __cnfn step(double, double16);
10270#endif //cl_khr_fp64
10271#ifdef cl_khr_fp16
10272half __ovld __cnfn step(half, half);
10273half2 __ovld __cnfn step(half2, half2);
10274half3 __ovld __cnfn step(half3, half3);
10275half4 __ovld __cnfn step(half4, half4);
10276half8 __ovld __cnfn step(half8, half8);
10277half16 __ovld __cnfn step(half16, half16);
10278half2 __ovld __cnfn step(half, half2);
10279half3 __ovld __cnfn step(half, half3);
10280half4 __ovld __cnfn step(half, half4);
10281half8 __ovld __cnfn step(half, half8);
10282half16 __ovld __cnfn step(half, half16);
10283#endif //cl_khr_fp16
10284
10285/**
10286 * Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
10287 * performs smooth Hermite interpolation between 0
10288 * and 1when edge0 < x < edge1. This is useful in
10289 * cases where you would want a threshold function
10290 * with a smooth transition.
10291 * This is equivalent to:
10292 * gentype t;
10293 * t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
10294 * return t * t * (3 - 2 * t);
10295 * Results are undefined if edge0 >= edge1 or if x,
10296 * edge0 or edge1 is a NaN.
10297 */
10298float __ovld __cnfn smoothstep(float, float, float);
10299float2 __ovld __cnfn smoothstep(float2, float2, float2);
10300float3 __ovld __cnfn smoothstep(float3, float3, float3);
10301float4 __ovld __cnfn smoothstep(float4, float4, float4);
10302float8 __ovld __cnfn smoothstep(float8, float8, float8);
10303float16 __ovld __cnfn smoothstep(float16, float16, float16);
10304float2 __ovld __cnfn smoothstep(float, float, float2);
10305float3 __ovld __cnfn smoothstep(float, float, float3);
10306float4 __ovld __cnfn smoothstep(float, float, float4);
10307float8 __ovld __cnfn smoothstep(float, float, float8);
10308float16 __ovld __cnfn smoothstep(float, float, float16);
10309#ifdef cl_khr_fp64
10310double __ovld __cnfn smoothstep(double, double, double);
10311double2 __ovld __cnfn smoothstep(double2, double2, double2);
10312double3 __ovld __cnfn smoothstep(double3, double3, double3);
10313double4 __ovld __cnfn smoothstep(double4, double4, double4);
10314double8 __ovld __cnfn smoothstep(double8, double8, double8);
10315double16 __ovld __cnfn smoothstep(double16, double16, double16);
10316double2 __ovld __cnfn smoothstep(double, double, double2);
10317double3 __ovld __cnfn smoothstep(double, double, double3);
10318double4 __ovld __cnfn smoothstep(double, double, double4);
10319double8 __ovld __cnfn smoothstep(double, double, double8);
10320double16 __ovld __cnfn smoothstep(double, double, double16);
10321#endif //cl_khr_fp64
10322#ifdef cl_khr_fp16
10323half __ovld __cnfn smoothstep(half, half, half);
10324half2 __ovld __cnfn smoothstep(half2, half2, half2);
10325half3 __ovld __cnfn smoothstep(half3, half3, half3);
10326half4 __ovld __cnfn smoothstep(half4, half4, half4);
10327half8 __ovld __cnfn smoothstep(half8, half8, half8);
10328half16 __ovld __cnfn smoothstep(half16, half16, half16);
10329half2 __ovld __cnfn smoothstep(half, half, half2);
10330half3 __ovld __cnfn smoothstep(half, half, half3);
10331half4 __ovld __cnfn smoothstep(half, half, half4);
10332half8 __ovld __cnfn smoothstep(half, half, half8);
10333half16 __ovld __cnfn smoothstep(half, half, half16);
10334#endif //cl_khr_fp16
10335
10336/**
10337 * Returns 1.0 if x > 0, -0.0 if x = -0.0, +0.0 if x =
10338 * +0.0, or -1.0 if x < 0. Returns 0.0 if x is a NaN.
10339 */
10340float __ovld __cnfn sign(float);
10341float2 __ovld __cnfn sign(float2);
10342float3 __ovld __cnfn sign(float3);
10343float4 __ovld __cnfn sign(float4);
10344float8 __ovld __cnfn sign(float8);
10345float16 __ovld __cnfn sign(float16);
10346#ifdef cl_khr_fp64
10347double __ovld __cnfn sign(double);
10348double2 __ovld __cnfn sign(double2);
10349double3 __ovld __cnfn sign(double3);
10350double4 __ovld __cnfn sign(double4);
10351double8 __ovld __cnfn sign(double8);
10352double16 __ovld __cnfn sign(double16);
10353#endif //cl_khr_fp64
10354#ifdef cl_khr_fp16
10355half __ovld __cnfn sign(half);
10356half2 __ovld __cnfn sign(half2);
10357half3 __ovld __cnfn sign(half3);
10358half4 __ovld __cnfn sign(half4);
10359half8 __ovld __cnfn sign(half8);
10360half16 __ovld __cnfn sign(half16);
10361#endif //cl_khr_fp16
10362
10363// OpenCL v1.1 s6.11.5, v1.2 s6.12.5, v2.0 s6.13.5 - Geometric Functions
10364
10365/**
10366 * Returns the cross product of p0.xyz and p1.xyz. The
10367 * w component of float4 result returned will be 0.0.
10368 */
10369float4 __ovld __cnfn cross(float4, float4);
10370float3 __ovld __cnfn cross(float3, float3);
10371#ifdef cl_khr_fp64
10372double4 __ovld __cnfn cross(double4, double4);
10373double3 __ovld __cnfn cross(double3, double3);
10374#endif //cl_khr_fp64
10375#ifdef cl_khr_fp16
10376half4 __ovld __cnfn cross(half4, half4);
10377half3 __ovld __cnfn cross(half3, half3);
10378#endif //cl_khr_fp16
10379
10380/**
10381 * Compute dot product.
10382 */
10383float __ovld __cnfn dot(float, float);
10384float __ovld __cnfn dot(float2, float2);
10385float __ovld __cnfn dot(float3, float3);
10386float __ovld __cnfn dot(float4, float4);
10387#ifdef cl_khr_fp64
10388double __ovld __cnfn dot(double, double);
10389double __ovld __cnfn dot(double2, double2);
10390double __ovld __cnfn dot(double3, double3);
10391double __ovld __cnfn dot(double4, double4);
10392#endif //cl_khr_fp64
10393#ifdef cl_khr_fp16
10394half __ovld __cnfn dot(half, half);
10395half __ovld __cnfn dot(half2, half2);
10396half __ovld __cnfn dot(half3, half3);
10397half __ovld __cnfn dot(half4, half4);
10398#endif //cl_khr_fp16
10399
10400/**
10401 * Returns the distance between p0 and p1. This is
10402 * calculated as length(p0 - p1).
10403 */
10404float __ovld __cnfn distance(float, float);
10405float __ovld __cnfn distance(float2, float2);
10406float __ovld __cnfn distance(float3, float3);
10407float __ovld __cnfn distance(float4, float4);
10408#ifdef cl_khr_fp64
10409double __ovld __cnfn distance(double, double);
10410double __ovld __cnfn distance(double2, double2);
10411double __ovld __cnfn distance(double3, double3);
10412double __ovld __cnfn distance(double4, double4);
10413#endif //cl_khr_fp64
10414#ifdef cl_khr_fp16
10415half __ovld __cnfn distance(half, half);
10416half __ovld __cnfn distance(half2, half2);
10417half __ovld __cnfn distance(half3, half3);
10418half __ovld __cnfn distance(half4, half4);
10419#endif //cl_khr_fp16
10420
10421/**
10422 * Return the length of vector p, i.e.,
10423 * sqrt(p.x2 + p.y 2 + ...)
10424 */
10425float __ovld __cnfn length(float);
10426float __ovld __cnfn length(float2);
10427float __ovld __cnfn length(float3);
10428float __ovld __cnfn length(float4);
10429#ifdef cl_khr_fp64
10430double __ovld __cnfn length(double);
10431double __ovld __cnfn length(double2);
10432double __ovld __cnfn length(double3);
10433double __ovld __cnfn length(double4);
10434#endif //cl_khr_fp64
10435#ifdef cl_khr_fp16
10436half __ovld __cnfn length(half);
10437half __ovld __cnfn length(half2);
10438half __ovld __cnfn length(half3);
10439half __ovld __cnfn length(half4);
10440#endif //cl_khr_fp16
10441
10442/**
10443 * Returns a vector in the same direction as p but with a
10444 * length of 1.
10445 */
10447float2 __ovld __cnfn normalize(float2);
10448float3 __ovld __cnfn normalize(float3);
10449float4 __ovld __cnfn normalize(float4);
10450#ifdef cl_khr_fp64
10451double __ovld __cnfn normalize(double);
10452double2 __ovld __cnfn normalize(double2);
10453double3 __ovld __cnfn normalize(double3);
10454double4 __ovld __cnfn normalize(double4);
10455#endif //cl_khr_fp64
10456#ifdef cl_khr_fp16
10457half __ovld __cnfn normalize(half);
10458half2 __ovld __cnfn normalize(half2);
10459half3 __ovld __cnfn normalize(half3);
10460half4 __ovld __cnfn normalize(half4);
10461#endif //cl_khr_fp16
10462
10463/**
10464 * Returns fast_length(p0 - p1).
10465 */
10466float __ovld __cnfn fast_distance(float, float);
10467float __ovld __cnfn fast_distance(float2, float2);
10468float __ovld __cnfn fast_distance(float3, float3);
10469float __ovld __cnfn fast_distance(float4, float4);
10470
10471/**
10472 * Returns the length of vector p computed as:
10473 * half_sqrt(p.x2 + p.y2 + ...)
10474 */
10479
10480/**
10481 * Returns a vector in the same direction as p but with a
10482 * length of 1. fast_normalize is computed as:
10483 * p * half_rsqrt (p.x^2 + p.y^2 + ... )
10484 * The result shall be within 8192 ulps error from the
10485 * infinitely precise result of
10486 * if (all(p == 0.0f))
10487 * result = p;
10488 * else
10489 * result = p / sqrt (p.x^2 + p.y^2 + ...);
10490 * with the following exceptions:
10491 * 1) If the sum of squares is greater than FLT_MAX
10492 * then the value of the floating-point values in the
10493 * result vector are undefined.
10494 * 2) If the sum of squares is less than FLT_MIN then
10495 * the implementation may return back p.
10496 * 3) If the device is in "denorms are flushed to zero"
10497 * mode, individual operand elements with magnitude
10498 * less than sqrt(FLT_MIN) may be flushed to zero
10499 * before proceeding with the calculation.
10500 */
10505
10506// OpenCL v1.1 s6.11.6, v1.2 s6.12.6, v2.0 s6.13.6 - Relational Functions
10507
10508/**
10509 * intn isequal (floatn x, floatn y)
10510 * Returns the component-wise compare of x == y.
10511 */
10512int __ovld __cnfn isequal(float, float);
10513int2 __ovld __cnfn isequal(float2, float2);
10514int3 __ovld __cnfn isequal(float3, float3);
10515int4 __ovld __cnfn isequal(float4, float4);
10516int8 __ovld __cnfn isequal(float8, float8);
10517int16 __ovld __cnfn isequal(float16, float16);
10518#ifdef cl_khr_fp64
10519int __ovld __cnfn isequal(double, double);
10520long2 __ovld __cnfn isequal(double2, double2);
10521long3 __ovld __cnfn isequal(double3, double3);
10522long4 __ovld __cnfn isequal(double4, double4);
10523long8 __ovld __cnfn isequal(double8, double8);
10524long16 __ovld __cnfn isequal(double16, double16);
10525#endif //cl_khr_fp64
10526#ifdef cl_khr_fp16
10527int __ovld __cnfn isequal(half, half);
10528short2 __ovld __cnfn isequal(half2, half2);
10529short3 __ovld __cnfn isequal(half3, half3);
10530short4 __ovld __cnfn isequal(half4, half4);
10531short8 __ovld __cnfn isequal(half8, half8);
10532short16 __ovld __cnfn isequal(half16, half16);
10533#endif //cl_khr_fp16
10534
10535/**
10536 * Returns the component-wise compare of x != y.
10537 */
10538int __ovld __cnfn isnotequal(float, float);
10539int2 __ovld __cnfn isnotequal(float2, float2);
10540int3 __ovld __cnfn isnotequal(float3, float3);
10541int4 __ovld __cnfn isnotequal(float4, float4);
10542int8 __ovld __cnfn isnotequal(float8, float8);
10543int16 __ovld __cnfn isnotequal(float16, float16);
10544#ifdef cl_khr_fp64
10545int __ovld __cnfn isnotequal(double, double);
10546long2 __ovld __cnfn isnotequal(double2, double2);
10547long3 __ovld __cnfn isnotequal(double3, double3);
10548long4 __ovld __cnfn isnotequal(double4, double4);
10549long8 __ovld __cnfn isnotequal(double8, double8);
10550long16 __ovld __cnfn isnotequal(double16, double16);
10551#endif //cl_khr_fp64
10552#ifdef cl_khr_fp16
10553int __ovld __cnfn isnotequal(half, half);
10554short2 __ovld __cnfn isnotequal(half2, half2);
10555short3 __ovld __cnfn isnotequal(half3, half3);
10556short4 __ovld __cnfn isnotequal(half4, half4);
10557short8 __ovld __cnfn isnotequal(half8, half8);
10558short16 __ovld __cnfn isnotequal(half16, half16);
10559#endif //cl_khr_fp16
10560
10561/**
10562 * Returns the component-wise compare of x > y.
10563 */
10564int __ovld __cnfn isgreater(float, float);
10565int2 __ovld __cnfn isgreater(float2, float2);
10566int3 __ovld __cnfn isgreater(float3, float3);
10567int4 __ovld __cnfn isgreater(float4, float4);
10568int8 __ovld __cnfn isgreater(float8, float8);
10569int16 __ovld __cnfn isgreater(float16, float16);
10570#ifdef cl_khr_fp64
10571int __ovld __cnfn isgreater(double, double);
10572long2 __ovld __cnfn isgreater(double2, double2);
10573long3 __ovld __cnfn isgreater(double3, double3);
10574long4 __ovld __cnfn isgreater(double4, double4);
10575long8 __ovld __cnfn isgreater(double8, double8);
10576long16 __ovld __cnfn isgreater(double16, double16);
10577#endif //cl_khr_fp64
10578#ifdef cl_khr_fp16
10579int __ovld __cnfn isgreater(half, half);
10580short2 __ovld __cnfn isgreater(half2, half2);
10581short3 __ovld __cnfn isgreater(half3, half3);
10582short4 __ovld __cnfn isgreater(half4, half4);
10583short8 __ovld __cnfn isgreater(half8, half8);
10584short16 __ovld __cnfn isgreater(half16, half16);
10585#endif //cl_khr_fp16
10586
10587/**
10588 * Returns the component-wise compare of x >= y.
10589 */
10590int __ovld __cnfn isgreaterequal(float, float);
10591int2 __ovld __cnfn isgreaterequal(float2, float2);
10592int3 __ovld __cnfn isgreaterequal(float3, float3);
10593int4 __ovld __cnfn isgreaterequal(float4, float4);
10594int8 __ovld __cnfn isgreaterequal(float8, float8);
10595int16 __ovld __cnfn isgreaterequal(float16, float16);
10596#ifdef cl_khr_fp64
10597int __ovld __cnfn isgreaterequal(double, double);
10598long2 __ovld __cnfn isgreaterequal(double2, double2);
10599long3 __ovld __cnfn isgreaterequal(double3, double3);
10600long4 __ovld __cnfn isgreaterequal(double4, double4);
10601long8 __ovld __cnfn isgreaterequal(double8, double8);
10602long16 __ovld __cnfn isgreaterequal(double16, double16);
10603#endif //cl_khr_fp64
10604#ifdef cl_khr_fp16
10605int __ovld __cnfn isgreaterequal(half, half);
10606short2 __ovld __cnfn isgreaterequal(half2, half2);
10607short3 __ovld __cnfn isgreaterequal(half3, half3);
10608short4 __ovld __cnfn isgreaterequal(half4, half4);
10609short8 __ovld __cnfn isgreaterequal(half8, half8);
10610short16 __ovld __cnfn isgreaterequal(half16, half16);
10611#endif //cl_khr_fp16
10612
10613/**
10614 * Returns the component-wise compare of x < y.
10615 */
10616int __ovld __cnfn isless(float, float);
10617int2 __ovld __cnfn isless(float2, float2);
10618int3 __ovld __cnfn isless(float3, float3);
10619int4 __ovld __cnfn isless(float4, float4);
10620int8 __ovld __cnfn isless(float8, float8);
10621int16 __ovld __cnfn isless(float16, float16);
10622#ifdef cl_khr_fp64
10623int __ovld __cnfn isless(double, double);
10624long2 __ovld __cnfn isless(double2, double2);
10625long3 __ovld __cnfn isless(double3, double3);
10626long4 __ovld __cnfn isless(double4, double4);
10627long8 __ovld __cnfn isless(double8, double8);
10628long16 __ovld __cnfn isless(double16, double16);
10629#endif //cl_khr_fp64
10630#ifdef cl_khr_fp16
10631int __ovld __cnfn isless(half, half);
10632short2 __ovld __cnfn isless(half2, half2);
10633short3 __ovld __cnfn isless(half3, half3);
10634short4 __ovld __cnfn isless(half4, half4);
10635short8 __ovld __cnfn isless(half8, half8);
10636short16 __ovld __cnfn isless(half16, half16);
10637#endif //cl_khr_fp16
10638
10639/**
10640 * Returns the component-wise compare of x <= y.
10641 */
10642int __ovld __cnfn islessequal(float, float);
10643int2 __ovld __cnfn islessequal(float2, float2);
10644int3 __ovld __cnfn islessequal(float3, float3);
10645int4 __ovld __cnfn islessequal(float4, float4);
10646int8 __ovld __cnfn islessequal(float8, float8);
10647int16 __ovld __cnfn islessequal(float16, float16);
10648#ifdef cl_khr_fp64
10649int __ovld __cnfn islessequal(double, double);
10650long2 __ovld __cnfn islessequal(double2, double2);
10651long3 __ovld __cnfn islessequal(double3, double3);
10652long4 __ovld __cnfn islessequal(double4, double4);
10653long8 __ovld __cnfn islessequal(double8, double8);
10654long16 __ovld __cnfn islessequal(double16, double16);
10655#endif //cl_khr_fp64
10656#ifdef cl_khr_fp16
10657int __ovld __cnfn islessequal(half, half);
10658short2 __ovld __cnfn islessequal(half2, half2);
10659short3 __ovld __cnfn islessequal(half3, half3);
10660short4 __ovld __cnfn islessequal(half4, half4);
10661short8 __ovld __cnfn islessequal(half8, half8);
10662short16 __ovld __cnfn islessequal(half16, half16);
10663#endif //cl_khr_fp16
10664
10665/**
10666 * Returns the component-wise compare of
10667 * (x < y) || (x > y) .
10668 */
10669int __ovld __cnfn islessgreater(float, float);
10670int2 __ovld __cnfn islessgreater(float2, float2);
10671int3 __ovld __cnfn islessgreater(float3, float3);
10672int4 __ovld __cnfn islessgreater(float4, float4);
10673int8 __ovld __cnfn islessgreater(float8, float8);
10674int16 __ovld __cnfn islessgreater(float16, float16);
10675#ifdef cl_khr_fp64
10676int __ovld __cnfn islessgreater(double, double);
10677long2 __ovld __cnfn islessgreater(double2, double2);
10678long3 __ovld __cnfn islessgreater(double3, double3);
10679long4 __ovld __cnfn islessgreater(double4, double4);
10680long8 __ovld __cnfn islessgreater(double8, double8);
10681long16 __ovld __cnfn islessgreater(double16, double16);
10682#endif //cl_khr_fp64
10683#ifdef cl_khr_fp16
10684int __ovld __cnfn islessgreater(half, half);
10685short2 __ovld __cnfn islessgreater(half2, half2);
10686short3 __ovld __cnfn islessgreater(half3, half3);
10687short4 __ovld __cnfn islessgreater(half4, half4);
10688short8 __ovld __cnfn islessgreater(half8, half8);
10689short16 __ovld __cnfn islessgreater(half16, half16);
10690#endif //cl_khr_fp16
10691
10692/**
10693 * Test for finite value.
10694 */
10695int __ovld __cnfn isfinite(float);
10700int16 __ovld __cnfn isfinite(float16);
10701#ifdef cl_khr_fp64
10702int __ovld __cnfn isfinite(double);
10703long2 __ovld __cnfn isfinite(double2);
10704long3 __ovld __cnfn isfinite(double3);
10705long4 __ovld __cnfn isfinite(double4);
10706long8 __ovld __cnfn isfinite(double8);
10707long16 __ovld __cnfn isfinite(double16);
10708#endif //cl_khr_fp64
10709#ifdef cl_khr_fp16
10710int __ovld __cnfn isfinite(half);
10711short2 __ovld __cnfn isfinite(half2);
10712short3 __ovld __cnfn isfinite(half3);
10713short4 __ovld __cnfn isfinite(half4);
10714short8 __ovld __cnfn isfinite(half8);
10715short16 __ovld __cnfn isfinite(half16);
10716#endif //cl_khr_fp16
10717
10718/**
10719 * Test for infinity value (+ve or -ve) .
10720 */
10721int __ovld __cnfn isinf(float);
10722int2 __ovld __cnfn isinf(float2);
10723int3 __ovld __cnfn isinf(float3);
10724int4 __ovld __cnfn isinf(float4);
10725int8 __ovld __cnfn isinf(float8);
10726int16 __ovld __cnfn isinf(float16);
10727#ifdef cl_khr_fp64
10728int __ovld __cnfn isinf(double);
10729long2 __ovld __cnfn isinf(double2);
10730long3 __ovld __cnfn isinf(double3);
10731long4 __ovld __cnfn isinf(double4);
10732long8 __ovld __cnfn isinf(double8);
10733long16 __ovld __cnfn isinf(double16);
10734#endif //cl_khr_fp64
10735#ifdef cl_khr_fp16
10736int __ovld __cnfn isinf(half);
10737short2 __ovld __cnfn isinf(half2);
10738short3 __ovld __cnfn isinf(half3);
10739short4 __ovld __cnfn isinf(half4);
10740short8 __ovld __cnfn isinf(half8);
10741short16 __ovld __cnfn isinf(half16);
10742#endif //cl_khr_fp16
10743
10744/**
10745 * Test for a NaN.
10746 */
10747int __ovld __cnfn isnan(float);
10748int2 __ovld __cnfn isnan(float2);
10749int3 __ovld __cnfn isnan(float3);
10750int4 __ovld __cnfn isnan(float4);
10751int8 __ovld __cnfn isnan(float8);
10752int16 __ovld __cnfn isnan(float16);
10753#ifdef cl_khr_fp64
10754int __ovld __cnfn isnan(double);
10755long2 __ovld __cnfn isnan(double2);
10756long3 __ovld __cnfn isnan(double3);
10757long4 __ovld __cnfn isnan(double4);
10758long8 __ovld __cnfn isnan(double8);
10759long16 __ovld __cnfn isnan(double16);
10760#endif //cl_khr_fp64
10761#ifdef cl_khr_fp16
10762int __ovld __cnfn isnan(half);
10763short2 __ovld __cnfn isnan(half2);
10764short3 __ovld __cnfn isnan(half3);
10765short4 __ovld __cnfn isnan(half4);
10766short8 __ovld __cnfn isnan(half8);
10767short16 __ovld __cnfn isnan(half16);
10768#endif //cl_khr_fp16
10769
10770/**
10771 * Test for a normal value.
10772 */
10773int __ovld __cnfn isnormal(float);
10778int16 __ovld __cnfn isnormal(float16);
10779#ifdef cl_khr_fp64
10780int __ovld __cnfn isnormal(double);
10781long2 __ovld __cnfn isnormal(double2);
10782long3 __ovld __cnfn isnormal(double3);
10783long4 __ovld __cnfn isnormal(double4);
10784long8 __ovld __cnfn isnormal(double8);
10785long16 __ovld __cnfn isnormal(double16);
10786#endif //cl_khr_fp64
10787#ifdef cl_khr_fp16
10788int __ovld __cnfn isnormal(half);
10789short2 __ovld __cnfn isnormal(half2);
10790short3 __ovld __cnfn isnormal(half3);
10791short4 __ovld __cnfn isnormal(half4);
10792short8 __ovld __cnfn isnormal(half8);
10793short16 __ovld __cnfn isnormal(half16);
10794#endif //cl_khr_fp16
10795
10796/**
10797 * Test if arguments are ordered. isordered() takes
10798 * arguments x and y, and returns the result
10799 * isequal(x, x) && isequal(y, y).
10800 */
10801int __ovld __cnfn isordered(float, float);
10802int2 __ovld __cnfn isordered(float2, float2);
10803int3 __ovld __cnfn isordered(float3, float3);
10804int4 __ovld __cnfn isordered(float4, float4);
10805int8 __ovld __cnfn isordered(float8, float8);
10806int16 __ovld __cnfn isordered(float16, float16);
10807#ifdef cl_khr_fp64
10808int __ovld __cnfn isordered(double, double);
10809long2 __ovld __cnfn isordered(double2, double2);
10810long3 __ovld __cnfn isordered(double3, double3);
10811long4 __ovld __cnfn isordered(double4, double4);
10812long8 __ovld __cnfn isordered(double8, double8);
10813long16 __ovld __cnfn isordered(double16, double16);
10814#endif //cl_khr_fp64
10815#ifdef cl_khr_fp16
10816int __ovld __cnfn isordered(half, half);
10817short2 __ovld __cnfn isordered(half2, half2);
10818short3 __ovld __cnfn isordered(half3, half3);
10819short4 __ovld __cnfn isordered(half4, half4);
10820short8 __ovld __cnfn isordered(half8, half8);
10821short16 __ovld __cnfn isordered(half16, half16);
10822#endif //cl_khr_fp16
10823
10824/**
10825 * Test if arguments are unordered. isunordered()
10826 * takes arguments x and y, returning non-zero if x or y
10827 * is NaN, and zero otherwise.
10828 */
10829int __ovld __cnfn isunordered(float, float);
10830int2 __ovld __cnfn isunordered(float2, float2);
10831int3 __ovld __cnfn isunordered(float3, float3);
10832int4 __ovld __cnfn isunordered(float4, float4);
10833int8 __ovld __cnfn isunordered(float8, float8);
10834int16 __ovld __cnfn isunordered(float16, float16);
10835#ifdef cl_khr_fp64
10836int __ovld __cnfn isunordered(double, double);
10837long2 __ovld __cnfn isunordered(double2, double2);
10838long3 __ovld __cnfn isunordered(double3, double3);
10839long4 __ovld __cnfn isunordered(double4, double4);
10840long8 __ovld __cnfn isunordered(double8, double8);
10841long16 __ovld __cnfn isunordered(double16, double16);
10842#endif //cl_khr_fp64
10843#ifdef cl_khr_fp16
10844int __ovld __cnfn isunordered(half, half);
10845short2 __ovld __cnfn isunordered(half2, half2);
10846short3 __ovld __cnfn isunordered(half3, half3);
10847short4 __ovld __cnfn isunordered(half4, half4);
10848short8 __ovld __cnfn isunordered(half8, half8);
10849short16 __ovld __cnfn isunordered(half16, half16);
10850#endif //cl_khr_fp16
10851
10852/**
10853 * Test for sign bit. The scalar version of the function
10854 * returns a 1 if the sign bit in the float is set else returns
10855 * 0. The vector version of the function returns the
10856 * following for each component in floatn: a -1 if the
10857 * sign bit in the float is set else returns 0.
10858 */
10859int __ovld __cnfn signbit(float);
10860int2 __ovld __cnfn signbit(float2);
10861int3 __ovld __cnfn signbit(float3);
10862int4 __ovld __cnfn signbit(float4);
10863int8 __ovld __cnfn signbit(float8);
10864int16 __ovld __cnfn signbit(float16);
10865#ifdef cl_khr_fp64
10866int __ovld __cnfn signbit(double);
10867long2 __ovld __cnfn signbit(double2);
10868long3 __ovld __cnfn signbit(double3);
10869long4 __ovld __cnfn signbit(double4);
10870long8 __ovld __cnfn signbit(double8);
10871long16 __ovld __cnfn signbit(double16);
10872#endif //cl_khr_fp64
10873#ifdef cl_khr_fp16
10874int __ovld __cnfn signbit(half);
10875short2 __ovld __cnfn signbit(half2);
10876short3 __ovld __cnfn signbit(half3);
10877short4 __ovld __cnfn signbit(half4);
10878short8 __ovld __cnfn signbit(half8);
10879short16 __ovld __cnfn signbit(half16);
10880#endif //cl_khr_fp16
10881
10882/**
10883 * Returns 1 if the most significant bit in any component
10884 * of x is set; otherwise returns 0.
10885 */
10887int __ovld __cnfn any(char2);
10888int __ovld __cnfn any(char3);
10889int __ovld __cnfn any(char4);
10890int __ovld __cnfn any(char8);
10891int __ovld __cnfn any(char16);
10892int __ovld __cnfn any(short);
10893int __ovld __cnfn any(short2);
10894int __ovld __cnfn any(short3);
10895int __ovld __cnfn any(short4);
10896int __ovld __cnfn any(short8);
10897int __ovld __cnfn any(short16);
10903int __ovld __cnfn any(int16);
10905int __ovld __cnfn any(long2);
10906int __ovld __cnfn any(long3);
10907int __ovld __cnfn any(long4);
10908int __ovld __cnfn any(long8);
10909int __ovld __cnfn any(long16);
10910
10911/**
10912 * Returns 1 if the most significant bit in all components
10913 * of x is set; otherwise returns 0.
10914 */
10916int __ovld __cnfn all(char2);
10917int __ovld __cnfn all(char3);
10918int __ovld __cnfn all(char4);
10919int __ovld __cnfn all(char8);
10920int __ovld __cnfn all(char16);
10921int __ovld __cnfn all(short);
10922int __ovld __cnfn all(short2);
10923int __ovld __cnfn all(short3);
10924int __ovld __cnfn all(short4);
10925int __ovld __cnfn all(short8);
10926int __ovld __cnfn all(short16);
10932int __ovld __cnfn all(int16);
10934int __ovld __cnfn all(long2);
10935int __ovld __cnfn all(long3);
10936int __ovld __cnfn all(long4);
10937int __ovld __cnfn all(long8);
10938int __ovld __cnfn all(long16);
10939
10940/**
10941 * Each bit of the result is the corresponding bit of a if
10942 * the corresponding bit of c is 0. Otherwise it is the
10943 * corresponding bit of b.
10944 */
10945char __ovld __cnfn bitselect(char, char, char);
10947char2 __ovld __cnfn bitselect(char2, char2, char2);
10948uchar2 __ovld __cnfn bitselect(uchar2, uchar2, uchar2);
10949char3 __ovld __cnfn bitselect(char3, char3, char3);
10950uchar3 __ovld __cnfn bitselect(uchar3, uchar3, uchar3);
10951char4 __ovld __cnfn bitselect(char4, char4, char4);
10952uchar4 __ovld __cnfn bitselect(uchar4, uchar4, uchar4);
10953char8 __ovld __cnfn bitselect(char8, char8, char8);
10954uchar8 __ovld __cnfn bitselect(uchar8, uchar8, uchar8);
10955char16 __ovld __cnfn bitselect(char16, char16, char16);
10956uchar16 __ovld __cnfn bitselect(uchar16, uchar16, uchar16);
10957short __ovld __cnfn bitselect(short, short, short);
10959short2 __ovld __cnfn bitselect(short2, short2, short2);
10960ushort2 __ovld __cnfn bitselect(ushort2, ushort2, ushort2);
10961short3 __ovld __cnfn bitselect(short3, short3, short3);
10962ushort3 __ovld __cnfn bitselect(ushort3, ushort3, ushort3);
10963short4 __ovld __cnfn bitselect(short4, short4, short4);
10964ushort4 __ovld __cnfn bitselect(ushort4, ushort4, ushort4);
10965short8 __ovld __cnfn bitselect(short8, short8, short8);
10966ushort8 __ovld __cnfn bitselect(ushort8, ushort8, ushort8);
10967short16 __ovld __cnfn bitselect(short16, short16, short16);
10968ushort16 __ovld __cnfn bitselect(ushort16, ushort16, ushort16);
10969int __ovld __cnfn bitselect(int, int, int);
10971int2 __ovld __cnfn bitselect(int2, int2, int2);
10972uint2 __ovld __cnfn bitselect(uint2, uint2, uint2);
10973int3 __ovld __cnfn bitselect(int3, int3, int3);
10974uint3 __ovld __cnfn bitselect(uint3, uint3, uint3);
10975int4 __ovld __cnfn bitselect(int4, int4, int4);
10976uint4 __ovld __cnfn bitselect(uint4, uint4, uint4);
10977int8 __ovld __cnfn bitselect(int8, int8, int8);
10978uint8 __ovld __cnfn bitselect(uint8, uint8, uint8);
10979int16 __ovld __cnfn bitselect(int16, int16, int16);
10980uint16 __ovld __cnfn bitselect(uint16, uint16, uint16);
10981long __ovld __cnfn bitselect(long, long, long);
10983long2 __ovld __cnfn bitselect(long2, long2, long2);
10984ulong2 __ovld __cnfn bitselect(ulong2, ulong2, ulong2);
10985long3 __ovld __cnfn bitselect(long3, long3, long3);
10986ulong3 __ovld __cnfn bitselect(ulong3, ulong3, ulong3);
10987long4 __ovld __cnfn bitselect(long4, long4, long4);
10988ulong4 __ovld __cnfn bitselect(ulong4, ulong4, ulong4);
10989long8 __ovld __cnfn bitselect(long8, long8, long8);
10990ulong8 __ovld __cnfn bitselect(ulong8, ulong8, ulong8);
10991long16 __ovld __cnfn bitselect(long16, long16, long16);
10992ulong16 __ovld __cnfn bitselect(ulong16, ulong16, ulong16);
10993float __ovld __cnfn bitselect(float, float, float);
10994float2 __ovld __cnfn bitselect(float2, float2, float2);
10995float3 __ovld __cnfn bitselect(float3, float3, float3);
10996float4 __ovld __cnfn bitselect(float4, float4, float4);
10997float8 __ovld __cnfn bitselect(float8, float8, float8);
10998float16 __ovld __cnfn bitselect(float16, float16, float16);
10999#ifdef cl_khr_fp64
11000double __ovld __cnfn bitselect(double, double, double);
11001double2 __ovld __cnfn bitselect(double2, double2, double2);
11002double3 __ovld __cnfn bitselect(double3, double3, double3);
11003double4 __ovld __cnfn bitselect(double4, double4, double4);
11004double8 __ovld __cnfn bitselect(double8, double8, double8);
11005double16 __ovld __cnfn bitselect(double16, double16, double16);
11006#endif //cl_khr_fp64
11007#ifdef cl_khr_fp16
11008half __ovld __cnfn bitselect(half, half, half);
11009half2 __ovld __cnfn bitselect(half2, half2, half2);
11010half3 __ovld __cnfn bitselect(half3, half3, half3);
11011half4 __ovld __cnfn bitselect(half4, half4, half4);
11012half8 __ovld __cnfn bitselect(half8, half8, half8);
11013half16 __ovld __cnfn bitselect(half16, half16, half16);
11014#endif //cl_khr_fp16
11015
11016/**
11017 * For each component of a vector type,
11018 * result[i] = if MSB of c[i] is set ? b[i] : a[i].
11019 * For a scalar type, result = c ? b : a.
11020 * b and a must have the same type.
11021 * c must have the same number of elements and bits as a.
11022 */
11023char __ovld __cnfn select(char, char, char);
11025char2 __ovld __cnfn select(char2, char2, char2);
11026uchar2 __ovld __cnfn select(uchar2, uchar2, char2);
11027char3 __ovld __cnfn select(char3, char3, char3);
11028uchar3 __ovld __cnfn select(uchar3, uchar3, char3);
11029char4 __ovld __cnfn select(char4, char4, char4);
11030uchar4 __ovld __cnfn select(uchar4, uchar4, char4);
11031char8 __ovld __cnfn select(char8, char8, char8);
11032uchar8 __ovld __cnfn select(uchar8, uchar8, char8);
11033char16 __ovld __cnfn select(char16, char16, char16);
11034uchar16 __ovld __cnfn select(uchar16, uchar16, char16);
11035
11036short __ovld __cnfn select(short, short, short);
11038short2 __ovld __cnfn select(short2, short2, short2);
11039ushort2 __ovld __cnfn select(ushort2, ushort2, short2);
11040short3 __ovld __cnfn select(short3, short3, short3);
11041ushort3 __ovld __cnfn select(ushort3, ushort3, short3);
11042short4 __ovld __cnfn select(short4, short4, short4);
11043ushort4 __ovld __cnfn select(ushort4, ushort4, short4);
11044short8 __ovld __cnfn select(short8, short8, short8);
11045ushort8 __ovld __cnfn select(ushort8, ushort8, short8);
11046short16 __ovld __cnfn select(short16, short16, short16);
11047ushort16 __ovld __cnfn select(ushort16, ushort16, short16);
11048
11049int __ovld __cnfn select(int, int, int);
11051int2 __ovld __cnfn select(int2, int2, int2);
11052uint2 __ovld __cnfn select(uint2, uint2, int2);
11053int3 __ovld __cnfn select(int3, int3, int3);
11054uint3 __ovld __cnfn select(uint3, uint3, int3);
11055int4 __ovld __cnfn select(int4, int4, int4);
11056uint4 __ovld __cnfn select(uint4, uint4, int4);
11057int8 __ovld __cnfn select(int8, int8, int8);
11058uint8 __ovld __cnfn select(uint8, uint8, int8);
11059int16 __ovld __cnfn select(int16, int16, int16);
11060uint16 __ovld __cnfn select(uint16, uint16, int16);
11061float __ovld __cnfn select(float, float, int);
11062float2 __ovld __cnfn select(float2, float2, int2);
11063float3 __ovld __cnfn select(float3, float3, int3);
11064float4 __ovld __cnfn select(float4, float4, int4);
11065float8 __ovld __cnfn select(float8, float8, int8);
11066float16 __ovld __cnfn select(float16, float16, int16);
11067
11068long __ovld __cnfn select(long, long, long);
11070long2 __ovld __cnfn select(long2, long2, long2);
11071ulong2 __ovld __cnfn select(ulong2, ulong2, long2);
11072long3 __ovld __cnfn select(long3, long3, long3);
11073ulong3 __ovld __cnfn select(ulong3, ulong3, long3);
11074long4 __ovld __cnfn select(long4, long4, long4);
11075ulong4 __ovld __cnfn select(ulong4, ulong4, long4);
11076long8 __ovld __cnfn select(long8, long8, long8);
11077ulong8 __ovld __cnfn select(ulong8, ulong8, long8);
11078long16 __ovld __cnfn select(long16, long16, long16);
11079ulong16 __ovld __cnfn select(ulong16, ulong16, long16);
11080
11081char __ovld __cnfn select(char, char, uchar);
11083char2 __ovld __cnfn select(char2, char2, uchar2);
11084uchar2 __ovld __cnfn select(uchar2, uchar2, uchar2);
11085char3 __ovld __cnfn select(char3, char3, uchar3);
11086uchar3 __ovld __cnfn select(uchar3, uchar3, uchar3);
11087char4 __ovld __cnfn select(char4, char4, uchar4);
11088uchar4 __ovld __cnfn select(uchar4, uchar4, uchar4);
11089char8 __ovld __cnfn select(char8, char8, uchar8);
11090uchar8 __ovld __cnfn select(uchar8, uchar8, uchar8);
11091char16 __ovld __cnfn select(char16, char16, uchar16);
11092uchar16 __ovld __cnfn select(uchar16, uchar16, uchar16);
11093
11094short __ovld __cnfn select(short, short, ushort);
11096short2 __ovld __cnfn select(short2, short2, ushort2);
11097ushort2 __ovld __cnfn select(ushort2, ushort2, ushort2);
11098short3 __ovld __cnfn select(short3, short3, ushort3);
11099ushort3 __ovld __cnfn select(ushort3, ushort3, ushort3);
11100short4 __ovld __cnfn select(short4, short4, ushort4);
11101ushort4 __ovld __cnfn select(ushort4, ushort4, ushort4);
11102short8 __ovld __cnfn select(short8, short8, ushort8);
11103ushort8 __ovld __cnfn select(ushort8, ushort8, ushort8);
11104short16 __ovld __cnfn select(short16, short16, ushort16);
11105ushort16 __ovld __cnfn select(ushort16, ushort16, ushort16);
11106
11107int __ovld __cnfn select(int, int, uint);
11109int2 __ovld __cnfn select(int2, int2, uint2);
11110uint2 __ovld __cnfn select(uint2, uint2, uint2);
11111int3 __ovld __cnfn select(int3, int3, uint3);
11112uint3 __ovld __cnfn select(uint3, uint3, uint3);
11113int4 __ovld __cnfn select(int4, int4, uint4);
11114uint4 __ovld __cnfn select(uint4, uint4, uint4);
11115int8 __ovld __cnfn select(int8, int8, uint8);
11116uint8 __ovld __cnfn select(uint8, uint8, uint8);
11117int16 __ovld __cnfn select(int16, int16, uint16);
11118uint16 __ovld __cnfn select(uint16, uint16, uint16);
11119float __ovld __cnfn select(float, float, uint);
11120float2 __ovld __cnfn select(float2, float2, uint2);
11121float3 __ovld __cnfn select(float3, float3, uint3);
11122float4 __ovld __cnfn select(float4, float4, uint4);
11123float8 __ovld __cnfn select(float8, float8, uint8);
11124float16 __ovld __cnfn select(float16, float16, uint16);
11125
11126long __ovld __cnfn select(long, long, ulong);
11128long2 __ovld __cnfn select(long2, long2, ulong2);
11129ulong2 __ovld __cnfn select(ulong2, ulong2, ulong2);
11130long3 __ovld __cnfn select(long3, long3, ulong3);
11131ulong3 __ovld __cnfn select(ulong3, ulong3, ulong3);
11132long4 __ovld __cnfn select(long4, long4, ulong4);
11133ulong4 __ovld __cnfn select(ulong4, ulong4, ulong4);
11134long8 __ovld __cnfn select(long8, long8, ulong8);
11135ulong8 __ovld __cnfn select(ulong8, ulong8, ulong8);
11136long16 __ovld __cnfn select(long16, long16, ulong16);
11137ulong16 __ovld __cnfn select(ulong16, ulong16, ulong16);
11138
11139#ifdef cl_khr_fp64
11140double __ovld __cnfn select(double, double, long);
11141double2 __ovld __cnfn select(double2, double2, long2);
11142double3 __ovld __cnfn select(double3, double3, long3);
11143double4 __ovld __cnfn select(double4, double4, long4);
11144double8 __ovld __cnfn select(double8, double8, long8);
11145double16 __ovld __cnfn select(double16, double16, long16);
11146double __ovld __cnfn select(double, double, ulong);
11147double2 __ovld __cnfn select(double2, double2, ulong2);
11148double3 __ovld __cnfn select(double3, double3, ulong3);
11149double4 __ovld __cnfn select(double4, double4, ulong4);
11150double8 __ovld __cnfn select(double8, double8, ulong8);
11151double16 __ovld __cnfn select(double16, double16, ulong16);
11152#endif //cl_khr_fp64
11153#ifdef cl_khr_fp16
11154half __ovld __cnfn select(half, half, short);
11155half2 __ovld __cnfn select(half2, half2, short2);
11156half3 __ovld __cnfn select(half3, half3, short3);
11157half4 __ovld __cnfn select(half4, half4, short4);
11158half8 __ovld __cnfn select(half8, half8, short8);
11159half16 __ovld __cnfn select(half16, half16, short16);
11160half __ovld __cnfn select(half, half, ushort);
11161half2 __ovld __cnfn select(half2, half2, ushort2);
11162half3 __ovld __cnfn select(half3, half3, ushort3);
11163half4 __ovld __cnfn select(half4, half4, ushort4);
11164half8 __ovld __cnfn select(half8, half8, ushort8);
11165half16 __ovld __cnfn select(half16, half16, ushort16);
11166#endif //cl_khr_fp16
11167
11168// OpenCL v1.1 s6.11.7, v1.2 s6.12.7, v2.0 s6.13.7 - Vector Data Load and Store Functions
11169// OpenCL extensions v1.1 s9.6.6, v1.2 s9.5.6, v2.0 s9.4.6 - Vector Data Load and Store Functions for Half Type
11170/**
11171 * Use generic type gentype to indicate the built-in data types
11172 * char, uchar, short, ushort, int, uint, long, ulong, float,
11173 * double or half.
11174 *
11175 * vloadn return sizeof (gentypen) bytes of data read from address (p + (offset * n)).
11176 *
11177 * vstoren write sizeof (gentypen) bytes given by data to address (p + (offset * n)).
11178 *
11179 * The address computed as (p + (offset * n)) must be
11180 * 8-bit aligned if gentype is char, uchar;
11181 * 16-bit aligned if gentype is short, ushort, half;
11182 * 32-bit aligned if gentype is int, uint, float;
11183 * 64-bit aligned if gentype is long, ulong, double.
11184 */
11185
11186char2 __ovld __purefn vload2(size_t, const __constant char *);
11187uchar2 __ovld __purefn vload2(size_t, const __constant uchar *);
11188short2 __ovld __purefn vload2(size_t, const __constant short *);
11189ushort2 __ovld __purefn vload2(size_t, const __constant ushort *);
11190int2 __ovld __purefn vload2(size_t, const __constant int *);
11191uint2 __ovld __purefn vload2(size_t, const __constant uint *);
11192long2 __ovld __purefn vload2(size_t, const __constant long *);
11193ulong2 __ovld __purefn vload2(size_t, const __constant ulong *);
11194float2 __ovld __purefn vload2(size_t, const __constant float *);
11195char3 __ovld __purefn vload3(size_t, const __constant char *);
11196uchar3 __ovld __purefn vload3(size_t, const __constant uchar *);
11197short3 __ovld __purefn vload3(size_t, const __constant short *);
11198ushort3 __ovld __purefn vload3(size_t, const __constant ushort *);
11199int3 __ovld __purefn vload3(size_t, const __constant int *);
11200uint3 __ovld __purefn vload3(size_t, const __constant uint *);
11201long3 __ovld __purefn vload3(size_t, const __constant long *);
11202ulong3 __ovld __purefn vload3(size_t, const __constant ulong *);
11203float3 __ovld __purefn vload3(size_t, const __constant float *);
11204char4 __ovld __purefn vload4(size_t, const __constant char *);
11205uchar4 __ovld __purefn vload4(size_t, const __constant uchar *);
11206short4 __ovld __purefn vload4(size_t, const __constant short *);
11207ushort4 __ovld __purefn vload4(size_t, const __constant ushort *);
11208int4 __ovld __purefn vload4(size_t, const __constant int *);
11209uint4 __ovld __purefn vload4(size_t, const __constant uint *);
11210long4 __ovld __purefn vload4(size_t, const __constant long *);
11211ulong4 __ovld __purefn vload4(size_t, const __constant ulong *);
11212float4 __ovld __purefn vload4(size_t, const __constant float *);
11213char8 __ovld __purefn vload8(size_t, const __constant char *);
11214uchar8 __ovld __purefn vload8(size_t, const __constant uchar *);
11215short8 __ovld __purefn vload8(size_t, const __constant short *);
11216ushort8 __ovld __purefn vload8(size_t, const __constant ushort *);
11217int8 __ovld __purefn vload8(size_t, const __constant int *);
11218uint8 __ovld __purefn vload8(size_t, const __constant uint *);
11219long8 __ovld __purefn vload8(size_t, const __constant long *);
11220ulong8 __ovld __purefn vload8(size_t, const __constant ulong *);
11221float8 __ovld __purefn vload8(size_t, const __constant float *);
11222char16 __ovld __purefn vload16(size_t, const __constant char *);
11223uchar16 __ovld __purefn vload16(size_t, const __constant uchar *);
11224short16 __ovld __purefn vload16(size_t, const __constant short *);
11225ushort16 __ovld __purefn vload16(size_t, const __constant ushort *);
11226int16 __ovld __purefn vload16(size_t, const __constant int *);
11227uint16 __ovld __purefn vload16(size_t, const __constant uint *);
11228long16 __ovld __purefn vload16(size_t, const __constant long *);
11229ulong16 __ovld __purefn vload16(size_t, const __constant ulong *);
11230float16 __ovld __purefn vload16(size_t, const __constant float *);
11231#ifdef cl_khr_fp64
11232double2 __ovld __purefn vload2(size_t, const __constant double *);
11233double3 __ovld __purefn vload3(size_t, const __constant double *);
11234double4 __ovld __purefn vload4(size_t, const __constant double *);
11235double8 __ovld __purefn vload8(size_t, const __constant double *);
11236double16 __ovld __purefn vload16(size_t, const __constant double *);
11237#endif //cl_khr_fp64
11238
11239#ifdef cl_khr_fp16
11240half2 __ovld __purefn vload2(size_t, const __constant half *);
11241half3 __ovld __purefn vload3(size_t, const __constant half *);
11242half4 __ovld __purefn vload4(size_t, const __constant half *);
11243half8 __ovld __purefn vload8(size_t, const __constant half *);
11244half16 __ovld __purefn vload16(size_t, const __constant half *);
11245#endif //cl_khr_fp16
11246
11247#if defined(__opencl_c_generic_address_space)
11248char2 __ovld __purefn vload2(size_t, const char *);
11249uchar2 __ovld __purefn vload2(size_t, const uchar *);
11250short2 __ovld __purefn vload2(size_t, const short *);
11251ushort2 __ovld __purefn vload2(size_t, const ushort *);
11252int2 __ovld __purefn vload2(size_t, const int *);
11253uint2 __ovld __purefn vload2(size_t, const uint *);
11254long2 __ovld __purefn vload2(size_t, const long *);
11255ulong2 __ovld __purefn vload2(size_t, const ulong *);
11256float2 __ovld __purefn vload2(size_t, const float *);
11257char3 __ovld __purefn vload3(size_t, const char *);
11258uchar3 __ovld __purefn vload3(size_t, const uchar *);
11259short3 __ovld __purefn vload3(size_t, const short *);
11260ushort3 __ovld __purefn vload3(size_t, const ushort *);
11261int3 __ovld __purefn vload3(size_t, const int *);
11262uint3 __ovld __purefn vload3(size_t, const uint *);
11263long3 __ovld __purefn vload3(size_t, const long *);
11264ulong3 __ovld __purefn vload3(size_t, const ulong *);
11265float3 __ovld __purefn vload3(size_t, const float *);
11266char4 __ovld __purefn vload4(size_t, const char *);
11267uchar4 __ovld __purefn vload4(size_t, const uchar *);
11268short4 __ovld __purefn vload4(size_t, const short *);
11269ushort4 __ovld __purefn vload4(size_t, const ushort *);
11270int4 __ovld __purefn vload4(size_t, const int *);
11271uint4 __ovld __purefn vload4(size_t, const uint *);
11272long4 __ovld __purefn vload4(size_t, const long *);
11273ulong4 __ovld __purefn vload4(size_t, const ulong *);
11274float4 __ovld __purefn vload4(size_t, const float *);
11275char8 __ovld __purefn vload8(size_t, const char *);
11276uchar8 __ovld __purefn vload8(size_t, const uchar *);
11277short8 __ovld __purefn vload8(size_t, const short *);
11278ushort8 __ovld __purefn vload8(size_t, const ushort *);
11279int8 __ovld __purefn vload8(size_t, const int *);
11280uint8 __ovld __purefn vload8(size_t, const uint *);
11281long8 __ovld __purefn vload8(size_t, const long *);
11282ulong8 __ovld __purefn vload8(size_t, const ulong *);
11283float8 __ovld __purefn vload8(size_t, const float *);
11284char16 __ovld __purefn vload16(size_t, const char *);
11285uchar16 __ovld __purefn vload16(size_t, const uchar *);
11286short16 __ovld __purefn vload16(size_t, const short *);
11287ushort16 __ovld __purefn vload16(size_t, const ushort *);
11288int16 __ovld __purefn vload16(size_t, const int *);
11289uint16 __ovld __purefn vload16(size_t, const uint *);
11290long16 __ovld __purefn vload16(size_t, const long *);
11291ulong16 __ovld __purefn vload16(size_t, const ulong *);
11292float16 __ovld __purefn vload16(size_t, const float *);
11293
11294#ifdef cl_khr_fp64
11295double2 __ovld __purefn vload2(size_t, const double *);
11296double3 __ovld __purefn vload3(size_t, const double *);
11297double4 __ovld __purefn vload4(size_t, const double *);
11298double8 __ovld __purefn vload8(size_t, const double *);
11299double16 __ovld __purefn vload16(size_t, const double *);
11300#endif //cl_khr_fp64
11301
11302#ifdef cl_khr_fp16
11303half2 __ovld __purefn vload2(size_t, const half *);
11304half3 __ovld __purefn vload3(size_t, const half *);
11305half4 __ovld __purefn vload4(size_t, const half *);
11306half8 __ovld __purefn vload8(size_t, const half *);
11307half16 __ovld __purefn vload16(size_t, const half *);
11308#endif //cl_khr_fp16
11309#endif //defined(__opencl_c_generic_address_space)
11310
11311#if defined(__opencl_c_named_address_space_builtins)
11312char2 __ovld __purefn vload2(size_t, const __global char *);
11313uchar2 __ovld __purefn vload2(size_t, const __global uchar *);
11314short2 __ovld __purefn vload2(size_t, const __global short *);
11315ushort2 __ovld __purefn vload2(size_t, const __global ushort *);
11316int2 __ovld __purefn vload2(size_t, const __global int *);
11317uint2 __ovld __purefn vload2(size_t, const __global uint *);
11318long2 __ovld __purefn vload2(size_t, const __global long *);
11319ulong2 __ovld __purefn vload2(size_t, const __global ulong *);
11320float2 __ovld __purefn vload2(size_t, const __global float *);
11321char3 __ovld __purefn vload3(size_t, const __global char *);
11322uchar3 __ovld __purefn vload3(size_t, const __global uchar *);
11323short3 __ovld __purefn vload3(size_t, const __global short *);
11324ushort3 __ovld __purefn vload3(size_t, const __global ushort *);
11325int3 __ovld __purefn vload3(size_t, const __global int *);
11326uint3 __ovld __purefn vload3(size_t, const __global uint *);
11327long3 __ovld __purefn vload3(size_t, const __global long *);
11328ulong3 __ovld __purefn vload3(size_t, const __global ulong *);
11329float3 __ovld __purefn vload3(size_t, const __global float *);
11330char4 __ovld __purefn vload4(size_t, const __global char *);
11331uchar4 __ovld __purefn vload4(size_t, const __global uchar *);
11332short4 __ovld __purefn vload4(size_t, const __global short *);
11333ushort4 __ovld __purefn vload4(size_t, const __global ushort *);
11334int4 __ovld __purefn vload4(size_t, const __global int *);
11335uint4 __ovld __purefn vload4(size_t, const __global uint *);
11336long4 __ovld __purefn vload4(size_t, const __global long *);
11337ulong4 __ovld __purefn vload4(size_t, const __global ulong *);
11338float4 __ovld __purefn vload4(size_t, const __global float *);
11339char8 __ovld __purefn vload8(size_t, const __global char *);
11340uchar8 __ovld __purefn vload8(size_t, const __global uchar *);
11341short8 __ovld __purefn vload8(size_t, const __global short *);
11342ushort8 __ovld __purefn vload8(size_t, const __global ushort *);
11343int8 __ovld __purefn vload8(size_t, const __global int *);
11344uint8 __ovld __purefn vload8(size_t, const __global uint *);
11345long8 __ovld __purefn vload8(size_t, const __global long *);
11346ulong8 __ovld __purefn vload8(size_t, const __global ulong *);
11347float8 __ovld __purefn vload8(size_t, const __global float *);
11348char16 __ovld __purefn vload16(size_t, const __global char *);
11349uchar16 __ovld __purefn vload16(size_t, const __global uchar *);
11350short16 __ovld __purefn vload16(size_t, const __global short *);
11351ushort16 __ovld __purefn vload16(size_t, const __global ushort *);
11352int16 __ovld __purefn vload16(size_t, const __global int *);
11353uint16 __ovld __purefn vload16(size_t, const __global uint *);
11354long16 __ovld __purefn vload16(size_t, const __global long *);
11355ulong16 __ovld __purefn vload16(size_t, const __global ulong *);
11356float16 __ovld __purefn vload16(size_t, const __global float *);
11357char2 __ovld __purefn vload2(size_t, const __local char *);
11358uchar2 __ovld __purefn vload2(size_t, const __local uchar *);
11359short2 __ovld __purefn vload2(size_t, const __local short *);
11360ushort2 __ovld __purefn vload2(size_t, const __local ushort *);
11361int2 __ovld __purefn vload2(size_t, const __local int *);
11362uint2 __ovld __purefn vload2(size_t, const __local uint *);
11363long2 __ovld __purefn vload2(size_t, const __local long *);
11364ulong2 __ovld __purefn vload2(size_t, const __local ulong *);
11365float2 __ovld __purefn vload2(size_t, const __local float *);
11366char3 __ovld __purefn vload3(size_t, const __local char *);
11367uchar3 __ovld __purefn vload3(size_t, const __local uchar *);
11368short3 __ovld __purefn vload3(size_t, const __local short *);
11369ushort3 __ovld __purefn vload3(size_t, const __local ushort *);
11370int3 __ovld __purefn vload3(size_t, const __local int *);
11371uint3 __ovld __purefn vload3(size_t, const __local uint *);
11372long3 __ovld __purefn vload3(size_t, const __local long *);
11373ulong3 __ovld __purefn vload3(size_t, const __local ulong *);
11374float3 __ovld __purefn vload3(size_t, const __local float *);
11375char4 __ovld __purefn vload4(size_t, const __local char *);
11376uchar4 __ovld __purefn vload4(size_t, const __local uchar *);
11377short4 __ovld __purefn vload4(size_t, const __local short *);
11378ushort4 __ovld __purefn vload4(size_t, const __local ushort *);
11379int4 __ovld __purefn vload4(size_t, const __local int *);
11380uint4 __ovld __purefn vload4(size_t, const __local uint *);
11381long4 __ovld __purefn vload4(size_t, const __local long *);
11382ulong4 __ovld __purefn vload4(size_t, const __local ulong *);
11383float4 __ovld __purefn vload4(size_t, const __local float *);
11384char8 __ovld __purefn vload8(size_t, const __local char *);
11385uchar8 __ovld __purefn vload8(size_t, const __local uchar *);
11386short8 __ovld __purefn vload8(size_t, const __local short *);
11387ushort8 __ovld __purefn vload8(size_t, const __local ushort *);
11388int8 __ovld __purefn vload8(size_t, const __local int *);
11389uint8 __ovld __purefn vload8(size_t, const __local uint *);
11390long8 __ovld __purefn vload8(size_t, const __local long *);
11391ulong8 __ovld __purefn vload8(size_t, const __local ulong *);
11392float8 __ovld __purefn vload8(size_t, const __local float *);
11393char16 __ovld __purefn vload16(size_t, const __local char *);
11394uchar16 __ovld __purefn vload16(size_t, const __local uchar *);
11395short16 __ovld __purefn vload16(size_t, const __local short *);
11396ushort16 __ovld __purefn vload16(size_t, const __local ushort *);
11397int16 __ovld __purefn vload16(size_t, const __local int *);
11398uint16 __ovld __purefn vload16(size_t, const __local uint *);
11399long16 __ovld __purefn vload16(size_t, const __local long *);
11400ulong16 __ovld __purefn vload16(size_t, const __local ulong *);
11401float16 __ovld __purefn vload16(size_t, const __local float *);
11402char2 __ovld __purefn vload2(size_t, const __private char *);
11403uchar2 __ovld __purefn vload2(size_t, const __private uchar *);
11404short2 __ovld __purefn vload2(size_t, const __private short *);
11405ushort2 __ovld __purefn vload2(size_t, const __private ushort *);
11406int2 __ovld __purefn vload2(size_t, const __private int *);
11407uint2 __ovld __purefn vload2(size_t, const __private uint *);
11408long2 __ovld __purefn vload2(size_t, const __private long *);
11409ulong2 __ovld __purefn vload2(size_t, const __private ulong *);
11410float2 __ovld __purefn vload2(size_t, const __private float *);
11411char3 __ovld __purefn vload3(size_t, const __private char *);
11412uchar3 __ovld __purefn vload3(size_t, const __private uchar *);
11413short3 __ovld __purefn vload3(size_t, const __private short *);
11414ushort3 __ovld __purefn vload3(size_t, const __private ushort *);
11415int3 __ovld __purefn vload3(size_t, const __private int *);
11416uint3 __ovld __purefn vload3(size_t, const __private uint *);
11417long3 __ovld __purefn vload3(size_t, const __private long *);
11418ulong3 __ovld __purefn vload3(size_t, const __private ulong *);
11419float3 __ovld __purefn vload3(size_t, const __private float *);
11420char4 __ovld __purefn vload4(size_t, const __private char *);
11421uchar4 __ovld __purefn vload4(size_t, const __private uchar *);
11422short4 __ovld __purefn vload4(size_t, const __private short *);
11423ushort4 __ovld __purefn vload4(size_t, const __private ushort *);
11424int4 __ovld __purefn vload4(size_t, const __private int *);
11425uint4 __ovld __purefn vload4(size_t, const __private uint *);
11426long4 __ovld __purefn vload4(size_t, const __private long *);
11427ulong4 __ovld __purefn vload4(size_t, const __private ulong *);
11428float4 __ovld __purefn vload4(size_t, const __private float *);
11429char8 __ovld __purefn vload8(size_t, const __private char *);
11430uchar8 __ovld __purefn vload8(size_t, const __private uchar *);
11431short8 __ovld __purefn vload8(size_t, const __private short *);
11432ushort8 __ovld __purefn vload8(size_t, const __private ushort *);
11433int8 __ovld __purefn vload8(size_t, const __private int *);
11434uint8 __ovld __purefn vload8(size_t, const __private uint *);
11435long8 __ovld __purefn vload8(size_t, const __private long *);
11436ulong8 __ovld __purefn vload8(size_t, const __private ulong *);
11437float8 __ovld __purefn vload8(size_t, const __private float *);
11438char16 __ovld __purefn vload16(size_t, const __private char *);
11439uchar16 __ovld __purefn vload16(size_t, const __private uchar *);
11440short16 __ovld __purefn vload16(size_t, const __private short *);
11441ushort16 __ovld __purefn vload16(size_t, const __private ushort *);
11442int16 __ovld __purefn vload16(size_t, const __private int *);
11443uint16 __ovld __purefn vload16(size_t, const __private uint *);
11444long16 __ovld __purefn vload16(size_t, const __private long *);
11445ulong16 __ovld __purefn vload16(size_t, const __private ulong *);
11446float16 __ovld __purefn vload16(size_t, const __private float *);
11447
11448#ifdef cl_khr_fp64
11449double2 __ovld __purefn vload2(size_t, const __global double *);
11450double3 __ovld __purefn vload3(size_t, const __global double *);
11451double4 __ovld __purefn vload4(size_t, const __global double *);
11452double8 __ovld __purefn vload8(size_t, const __global double *);
11453double16 __ovld __purefn vload16(size_t, const __global double *);
11454double2 __ovld __purefn vload2(size_t, const __local double *);
11455double3 __ovld __purefn vload3(size_t, const __local double *);
11456double4 __ovld __purefn vload4(size_t, const __local double *);
11457double8 __ovld __purefn vload8(size_t, const __local double *);
11458double16 __ovld __purefn vload16(size_t, const __local double *);
11459double2 __ovld __purefn vload2(size_t, const __private double *);
11460double3 __ovld __purefn vload3(size_t, const __private double *);
11461double4 __ovld __purefn vload4(size_t, const __private double *);
11462double8 __ovld __purefn vload8(size_t, const __private double *);
11463double16 __ovld __purefn vload16(size_t, const __private double *);
11464#endif //cl_khr_fp64
11465
11466#ifdef cl_khr_fp16
11467half2 __ovld __purefn vload2(size_t, const __global half *);
11468half3 __ovld __purefn vload3(size_t, const __global half *);
11469half4 __ovld __purefn vload4(size_t, const __global half *);
11470half8 __ovld __purefn vload8(size_t, const __global half *);
11471half16 __ovld __purefn vload16(size_t, const __global half *);
11472half2 __ovld __purefn vload2(size_t, const __local half *);
11473half3 __ovld __purefn vload3(size_t, const __local half *);
11474half4 __ovld __purefn vload4(size_t, const __local half *);
11475half8 __ovld __purefn vload8(size_t, const __local half *);
11476half16 __ovld __purefn vload16(size_t, const __local half *);
11477half2 __ovld __purefn vload2(size_t, const __private half *);
11478half3 __ovld __purefn vload3(size_t, const __private half *);
11479half4 __ovld __purefn vload4(size_t, const __private half *);
11480half8 __ovld __purefn vload8(size_t, const __private half *);
11481half16 __ovld __purefn vload16(size_t, const __private half *);
11482#endif //cl_khr_fp16
11483#endif //defined(__opencl_c_named_address_space_builtins)
11484
11485#if defined(__opencl_c_generic_address_space)
11486void __ovld vstore2(char2, size_t, char *);
11487void __ovld vstore2(uchar2, size_t, uchar *);
11488void __ovld vstore2(short2, size_t, short *);
11489void __ovld vstore2(ushort2, size_t, ushort *);
11490void __ovld vstore2(int2, size_t, int *);
11491void __ovld vstore2(uint2, size_t, uint *);
11492void __ovld vstore2(long2, size_t, long *);
11493void __ovld vstore2(ulong2, size_t, ulong *);
11494void __ovld vstore2(float2, size_t, float *);
11495void __ovld vstore3(char3, size_t, char *);
11496void __ovld vstore3(uchar3, size_t, uchar *);
11497void __ovld vstore3(short3, size_t, short *);
11498void __ovld vstore3(ushort3, size_t, ushort *);
11499void __ovld vstore3(int3, size_t, int *);
11500void __ovld vstore3(uint3, size_t, uint *);
11501void __ovld vstore3(long3, size_t, long *);
11502void __ovld vstore3(ulong3, size_t, ulong *);
11503void __ovld vstore3(float3, size_t, float *);
11504void __ovld vstore4(char4, size_t, char *);
11505void __ovld vstore4(uchar4, size_t, uchar *);
11506void __ovld vstore4(short4, size_t, short *);
11507void __ovld vstore4(ushort4, size_t, ushort *);
11508void __ovld vstore4(int4, size_t, int *);
11509void __ovld vstore4(uint4, size_t, uint *);
11510void __ovld vstore4(long4, size_t, long *);
11511void __ovld vstore4(ulong4, size_t, ulong *);
11512void __ovld vstore4(float4, size_t, float *);
11513void __ovld vstore8(char8, size_t, char *);
11514void __ovld vstore8(uchar8, size_t, uchar *);
11515void __ovld vstore8(short8, size_t, short *);
11516void __ovld vstore8(ushort8, size_t, ushort *);
11517void __ovld vstore8(int8, size_t, int *);
11518void __ovld vstore8(uint8, size_t, uint *);
11519void __ovld vstore8(long8, size_t, long *);
11520void __ovld vstore8(ulong8, size_t, ulong *);
11521void __ovld vstore8(float8, size_t, float *);
11522void __ovld vstore16(char16, size_t, char *);
11523void __ovld vstore16(uchar16, size_t, uchar *);
11524void __ovld vstore16(short16, size_t, short *);
11525void __ovld vstore16(ushort16, size_t, ushort *);
11526void __ovld vstore16(int16, size_t, int *);
11527void __ovld vstore16(uint16, size_t, uint *);
11528void __ovld vstore16(long16, size_t, long *);
11529void __ovld vstore16(ulong16, size_t, ulong *);
11530void __ovld vstore16(float16, size_t, float *);
11531#ifdef cl_khr_fp64
11532void __ovld vstore2(double2, size_t, double *);
11533void __ovld vstore3(double3, size_t, double *);
11534void __ovld vstore4(double4, size_t, double *);
11535void __ovld vstore8(double8, size_t, double *);
11536void __ovld vstore16(double16, size_t, double *);
11537#endif //cl_khr_fp64
11538#ifdef cl_khr_fp16
11539void __ovld vstore2(half2, size_t, half *);
11540void __ovld vstore3(half3, size_t, half *);
11541void __ovld vstore4(half4, size_t, half *);
11542void __ovld vstore8(half8, size_t, half *);
11543void __ovld vstore16(half16, size_t, half *);
11544#endif //cl_khr_fp16
11545#endif //defined(__opencl_c_generic_address_space)
11546
11547#if defined(__opencl_c_named_address_space_builtins)
11548void __ovld vstore2(char2, size_t, __global char *);
11549void __ovld vstore2(uchar2, size_t, __global uchar *);
11550void __ovld vstore2(short2, size_t, __global short *);
11551void __ovld vstore2(ushort2, size_t, __global ushort *);
11552void __ovld vstore2(int2, size_t, __global int *);
11553void __ovld vstore2(uint2, size_t, __global uint *);
11554void __ovld vstore2(long2, size_t, __global long *);
11555void __ovld vstore2(ulong2, size_t, __global ulong *);
11556void __ovld vstore2(float2, size_t, __global float *);
11557void __ovld vstore3(char3, size_t, __global char *);
11558void __ovld vstore3(uchar3, size_t, __global uchar *);
11559void __ovld vstore3(short3, size_t, __global short *);
11560void __ovld vstore3(ushort3, size_t, __global ushort *);
11561void __ovld vstore3(int3, size_t, __global int *);
11562void __ovld vstore3(uint3, size_t, __global uint *);
11563void __ovld vstore3(long3, size_t, __global long *);
11564void __ovld vstore3(ulong3, size_t, __global ulong *);
11565void __ovld vstore3(float3, size_t, __global float *);
11566void __ovld vstore4(char4, size_t, __global char *);
11567void __ovld vstore4(uchar4, size_t, __global uchar *);
11568void __ovld vstore4(short4, size_t, __global short *);
11569void __ovld vstore4(ushort4, size_t, __global ushort *);
11570void __ovld vstore4(int4, size_t, __global int *);
11571void __ovld vstore4(uint4, size_t, __global uint *);
11572void __ovld vstore4(long4, size_t, __global long *);
11573void __ovld vstore4(ulong4, size_t, __global ulong *);
11574void __ovld vstore4(float4, size_t, __global float *);
11575void __ovld vstore8(char8, size_t, __global char *);
11576void __ovld vstore8(uchar8, size_t, __global uchar *);
11577void __ovld vstore8(short8, size_t, __global short *);
11578void __ovld vstore8(ushort8, size_t, __global ushort *);
11579void __ovld vstore8(int8, size_t, __global int *);
11580void __ovld vstore8(uint8, size_t, __global uint *);
11581void __ovld vstore8(long8, size_t, __global long *);
11582void __ovld vstore8(ulong8, size_t, __global ulong *);
11583void __ovld vstore8(float8, size_t, __global float *);
11584void __ovld vstore16(char16, size_t, __global char *);
11585void __ovld vstore16(uchar16, size_t, __global uchar *);
11586void __ovld vstore16(short16, size_t, __global short *);
11587void __ovld vstore16(ushort16, size_t, __global ushort *);
11588void __ovld vstore16(int16, size_t, __global int *);
11589void __ovld vstore16(uint16, size_t, __global uint *);
11590void __ovld vstore16(long16, size_t, __global long *);
11591void __ovld vstore16(ulong16, size_t, __global ulong *);
11592void __ovld vstore16(float16, size_t, __global float *);
11593void __ovld vstore2(char2, size_t, __local char *);
11594void __ovld vstore2(uchar2, size_t, __local uchar *);
11595void __ovld vstore2(short2, size_t, __local short *);
11596void __ovld vstore2(ushort2, size_t, __local ushort *);
11597void __ovld vstore2(int2, size_t, __local int *);
11598void __ovld vstore2(uint2, size_t, __local uint *);
11599void __ovld vstore2(long2, size_t, __local long *);
11600void __ovld vstore2(ulong2, size_t, __local ulong *);
11601void __ovld vstore2(float2, size_t, __local float *);
11602void __ovld vstore3(char3, size_t, __local char *);
11603void __ovld vstore3(uchar3, size_t, __local uchar *);
11604void __ovld vstore3(short3, size_t, __local short *);
11605void __ovld vstore3(ushort3, size_t, __local ushort *);
11606void __ovld vstore3(int3, size_t, __local int *);
11607void __ovld vstore3(uint3, size_t, __local uint *);
11608void __ovld vstore3(long3, size_t, __local long *);
11609void __ovld vstore3(ulong3, size_t, __local ulong *);
11610void __ovld vstore3(float3, size_t, __local float *);
11611void __ovld vstore4(char4, size_t, __local char *);
11612void __ovld vstore4(uchar4, size_t, __local uchar *);
11613void __ovld vstore4(short4, size_t, __local short *);
11614void __ovld vstore4(ushort4, size_t, __local ushort *);
11615void __ovld vstore4(int4, size_t, __local int *);
11616void __ovld vstore4(uint4, size_t, __local uint *);
11617void __ovld vstore4(long4, size_t, __local long *);
11618void __ovld vstore4(ulong4, size_t, __local ulong *);
11619void __ovld vstore4(float4, size_t, __local float *);
11620void __ovld vstore8(char8, size_t, __local char *);
11621void __ovld vstore8(uchar8, size_t, __local uchar *);
11622void __ovld vstore8(short8, size_t, __local short *);
11623void __ovld vstore8(ushort8, size_t, __local ushort *);
11624void __ovld vstore8(int8, size_t, __local int *);
11625void __ovld vstore8(uint8, size_t, __local uint *);
11626void __ovld vstore8(long8, size_t, __local long *);
11627void __ovld vstore8(ulong8, size_t, __local ulong *);
11628void __ovld vstore8(float8, size_t, __local float *);
11629void __ovld vstore16(char16, size_t, __local char *);
11630void __ovld vstore16(uchar16, size_t, __local uchar *);
11631void __ovld vstore16(short16, size_t, __local short *);
11632void __ovld vstore16(ushort16, size_t, __local ushort *);
11633void __ovld vstore16(int16, size_t, __local int *);
11634void __ovld vstore16(uint16, size_t, __local uint *);
11635void __ovld vstore16(long16, size_t, __local long *);
11636void __ovld vstore16(ulong16, size_t, __local ulong *);
11637void __ovld vstore16(float16, size_t, __local float *);
11638void __ovld vstore2(char2, size_t, __private char *);
11639void __ovld vstore2(uchar2, size_t, __private uchar *);
11640void __ovld vstore2(short2, size_t, __private short *);
11641void __ovld vstore2(ushort2, size_t, __private ushort *);
11642void __ovld vstore2(int2, size_t, __private int *);
11643void __ovld vstore2(uint2, size_t, __private uint *);
11644void __ovld vstore2(long2, size_t, __private long *);
11645void __ovld vstore2(ulong2, size_t, __private ulong *);
11646void __ovld vstore2(float2, size_t, __private float *);
11647void __ovld vstore3(char3, size_t, __private char *);
11648void __ovld vstore3(uchar3, size_t, __private uchar *);
11649void __ovld vstore3(short3, size_t, __private short *);
11650void __ovld vstore3(ushort3, size_t, __private ushort *);
11651void __ovld vstore3(int3, size_t, __private int *);
11652void __ovld vstore3(uint3, size_t, __private uint *);
11653void __ovld vstore3(long3, size_t, __private long *);
11654void __ovld vstore3(ulong3, size_t, __private ulong *);
11655void __ovld vstore3(float3, size_t, __private float *);
11656void __ovld vstore4(char4, size_t, __private char *);
11657void __ovld vstore4(uchar4, size_t, __private uchar *);
11658void __ovld vstore4(short4, size_t, __private short *);
11659void __ovld vstore4(ushort4, size_t, __private ushort *);
11660void __ovld vstore4(int4, size_t, __private int *);
11661void __ovld vstore4(uint4, size_t, __private uint *);
11662void __ovld vstore4(long4, size_t, __private long *);
11663void __ovld vstore4(ulong4, size_t, __private ulong *);
11664void __ovld vstore4(float4, size_t, __private float *);
11665void __ovld vstore8(char8, size_t, __private char *);
11666void __ovld vstore8(uchar8, size_t, __private uchar *);
11667void __ovld vstore8(short8, size_t, __private short *);
11668void __ovld vstore8(ushort8, size_t, __private ushort *);
11669void __ovld vstore8(int8, size_t, __private int *);
11670void __ovld vstore8(uint8, size_t, __private uint *);
11671void __ovld vstore8(long8, size_t, __private long *);
11672void __ovld vstore8(ulong8, size_t, __private ulong *);
11673void __ovld vstore8(float8, size_t, __private float *);
11674void __ovld vstore16(char16, size_t, __private char *);
11675void __ovld vstore16(uchar16, size_t, __private uchar *);
11676void __ovld vstore16(short16, size_t, __private short *);
11677void __ovld vstore16(ushort16, size_t, __private ushort *);
11678void __ovld vstore16(int16, size_t, __private int *);
11679void __ovld vstore16(uint16, size_t, __private uint *);
11680void __ovld vstore16(long16, size_t, __private long *);
11681void __ovld vstore16(ulong16, size_t, __private ulong *);
11682void __ovld vstore16(float16, size_t, __private float *);
11683#ifdef cl_khr_fp64
11684void __ovld vstore2(double2, size_t, __global double *);
11685void __ovld vstore3(double3, size_t, __global double *);
11686void __ovld vstore4(double4, size_t, __global double *);
11687void __ovld vstore8(double8, size_t, __global double *);
11688void __ovld vstore16(double16, size_t, __global double *);
11689void __ovld vstore2(double2, size_t, __local double *);
11690void __ovld vstore3(double3, size_t, __local double *);
11691void __ovld vstore4(double4, size_t, __local double *);
11692void __ovld vstore8(double8, size_t, __local double *);
11693void __ovld vstore16(double16, size_t, __local double *);
11694void __ovld vstore2(double2, size_t, __private double *);
11695void __ovld vstore3(double3, size_t, __private double *);
11696void __ovld vstore4(double4, size_t, __private double *);
11697void __ovld vstore8(double8, size_t, __private double *);
11698void __ovld vstore16(double16, size_t, __private double *);
11699#endif //cl_khr_fp64
11700#ifdef cl_khr_fp16
11701void __ovld vstore2(half2, size_t, __global half *);
11702void __ovld vstore3(half3, size_t, __global half *);
11703void __ovld vstore4(half4, size_t, __global half *);
11704void __ovld vstore8(half8, size_t, __global half *);
11705void __ovld vstore16(half16, size_t, __global half *);
11706void __ovld vstore2(half2, size_t, __local half *);
11707void __ovld vstore3(half3, size_t, __local half *);
11708void __ovld vstore4(half4, size_t, __local half *);
11709void __ovld vstore8(half8, size_t, __local half *);
11710void __ovld vstore16(half16, size_t, __local half *);
11711void __ovld vstore2(half2, size_t, __private half *);
11712void __ovld vstore3(half3, size_t, __private half *);
11713void __ovld vstore4(half4, size_t, __private half *);
11714void __ovld vstore8(half8, size_t, __private half *);
11715void __ovld vstore16(half16, size_t, __private half *);
11716#endif //cl_khr_fp16
11717#endif //defined(__opencl_c_named_address_space_builtins)
11718
11719/**
11720 * Read sizeof (half) bytes of data from address
11721 * (p + offset). The data read is interpreted as a
11722 * half value. The half value is converted to a
11723 * float value and the float value is returned.
11724 * The read address computed as (p + offset)
11725 * must be 16-bit aligned.
11726 */
11727float __ovld __purefn vload_half(size_t, const __constant half *);
11728#if defined(__opencl_c_generic_address_space)
11729float __ovld __purefn vload_half(size_t, const half *);
11730#endif //defined(__opencl_c_generic_address_space)
11731
11732#if defined(__opencl_c_named_address_space_builtins)
11733float __ovld __purefn vload_half(size_t, const __global half *);
11734float __ovld __purefn vload_half(size_t, const __local half *);
11735float __ovld __purefn vload_half(size_t, const __private half *);
11736#endif //defined(__opencl_c_named_address_space_builtins)
11737
11738/**
11739 * Read sizeof (halfn) bytes of data from address
11740 * (p + (offset * n)). The data read is interpreted
11741 * as a halfn value. The halfn value read is
11742 * converted to a floatn value and the floatn
11743 * value is returned. The read address computed
11744 * as (p + (offset * n)) must be 16-bit aligned.
11745 */
11746float2 __ovld __purefn vload_half2(size_t, const __constant half *);
11747float3 __ovld __purefn vload_half3(size_t, const __constant half *);
11748float4 __ovld __purefn vload_half4(size_t, const __constant half *);
11749float8 __ovld __purefn vload_half8(size_t, const __constant half *);
11750float16 __ovld __purefn vload_half16(size_t, const __constant half *);
11751#if defined(__opencl_c_generic_address_space)
11752float2 __ovld __purefn vload_half2(size_t, const half *);
11753float3 __ovld __purefn vload_half3(size_t, const half *);
11754float4 __ovld __purefn vload_half4(size_t, const half *);
11755float8 __ovld __purefn vload_half8(size_t, const half *);
11756float16 __ovld __purefn vload_half16(size_t, const half *);
11757#endif //defined(__opencl_c_generic_address_space)
11758
11759#if defined(__opencl_c_named_address_space_builtins)
11760float2 __ovld __purefn vload_half2(size_t, const __global half *);
11761float3 __ovld __purefn vload_half3(size_t, const __global half *);
11762float4 __ovld __purefn vload_half4(size_t, const __global half *);
11763float8 __ovld __purefn vload_half8(size_t, const __global half *);
11764float16 __ovld __purefn vload_half16(size_t, const __global half *);
11765float2 __ovld __purefn vload_half2(size_t, const __local half *);
11766float3 __ovld __purefn vload_half3(size_t, const __local half *);
11767float4 __ovld __purefn vload_half4(size_t, const __local half *);
11768float8 __ovld __purefn vload_half8(size_t, const __local half *);
11769float16 __ovld __purefn vload_half16(size_t, const __local half *);
11770float2 __ovld __purefn vload_half2(size_t, const __private half *);
11771float3 __ovld __purefn vload_half3(size_t, const __private half *);
11772float4 __ovld __purefn vload_half4(size_t, const __private half *);
11773float8 __ovld __purefn vload_half8(size_t, const __private half *);
11774float16 __ovld __purefn vload_half16(size_t, const __private half *);
11775#endif //defined(__opencl_c_named_address_space_builtins)
11776
11777/**
11778 * The float value given by data is first
11779 * converted to a half value using the appropriate
11780 * rounding mode. The half value is then written
11781 * to address computed as (p + offset). The
11782 * address computed as (p + offset) must be 16-
11783 * bit aligned.
11784 * vstore_half use the current rounding mode.
11785 * The default current rounding mode is round to
11786 * nearest even.
11787 */
11788#if defined(__opencl_c_generic_address_space)
11789void __ovld vstore_half(float, size_t, half *);
11790void __ovld vstore_half_rte(float, size_t, half *);
11791void __ovld vstore_half_rtz(float, size_t, half *);
11792void __ovld vstore_half_rtp(float, size_t, half *);
11793void __ovld vstore_half_rtn(float, size_t, half *);
11794#ifdef cl_khr_fp64
11795void __ovld vstore_half(double, size_t, half *);
11796void __ovld vstore_half_rte(double, size_t, half *);
11797void __ovld vstore_half_rtz(double, size_t, half *);
11798void __ovld vstore_half_rtp(double, size_t, half *);
11799void __ovld vstore_half_rtn(double, size_t, half *);
11800#endif //cl_khr_fp64
11801#endif //defined(__opencl_c_generic_address_space)
11802
11803#if defined(__opencl_c_named_address_space_builtins)
11804void __ovld vstore_half(float, size_t, __global half *);
11805void __ovld vstore_half_rte(float, size_t, __global half *);
11806void __ovld vstore_half_rtz(float, size_t, __global half *);
11807void __ovld vstore_half_rtp(float, size_t, __global half *);
11808void __ovld vstore_half_rtn(float, size_t, __global half *);
11809void __ovld vstore_half(float, size_t, __local half *);
11810void __ovld vstore_half_rte(float, size_t, __local half *);
11811void __ovld vstore_half_rtz(float, size_t, __local half *);
11812void __ovld vstore_half_rtp(float, size_t, __local half *);
11813void __ovld vstore_half_rtn(float, size_t, __local half *);
11814void __ovld vstore_half(float, size_t, __private half *);
11815void __ovld vstore_half_rte(float, size_t, __private half *);
11816void __ovld vstore_half_rtz(float, size_t, __private half *);
11817void __ovld vstore_half_rtp(float, size_t, __private half *);
11818void __ovld vstore_half_rtn(float, size_t, __private half *);
11819#ifdef cl_khr_fp64
11820void __ovld vstore_half(double, size_t, __global half *);
11821void __ovld vstore_half_rte(double, size_t, __global half *);
11822void __ovld vstore_half_rtz(double, size_t, __global half *);
11823void __ovld vstore_half_rtp(double, size_t, __global half *);
11824void __ovld vstore_half_rtn(double, size_t, __global half *);
11825void __ovld vstore_half(double, size_t, __local half *);
11826void __ovld vstore_half_rte(double, size_t, __local half *);
11827void __ovld vstore_half_rtz(double, size_t, __local half *);
11828void __ovld vstore_half_rtp(double, size_t, __local half *);
11829void __ovld vstore_half_rtn(double, size_t, __local half *);
11830void __ovld vstore_half(double, size_t, __private half *);
11831void __ovld vstore_half_rte(double, size_t, __private half *);
11832void __ovld vstore_half_rtz(double, size_t, __private half *);
11833void __ovld vstore_half_rtp(double, size_t, __private half *);
11834void __ovld vstore_half_rtn(double, size_t, __private half *);
11835#endif //cl_khr_fp64
11836#endif //defined(__opencl_c_named_address_space_builtins)
11837
11838/**
11839 * The floatn value given by data is converted to
11840 * a halfn value using the appropriate rounding
11841 * mode. The halfn value is then written to
11842 * address computed as (p + (offset * n)). The
11843 * address computed as (p + (offset * n)) must be
11844 * 16-bit aligned.
11845 * vstore_halfn uses the current rounding mode.
11846 * The default current rounding mode is round to
11847 * nearest even.
11848 */
11849#if defined(__opencl_c_generic_address_space)
11850void __ovld vstore_half2(float2, size_t, half *);
11851void __ovld vstore_half3(float3, size_t, half *);
11852void __ovld vstore_half4(float4, size_t, half *);
11853void __ovld vstore_half8(float8, size_t, half *);
11854void __ovld vstore_half16(float16, size_t, half *);
11855void __ovld vstore_half2_rte(float2, size_t, half *);
11856void __ovld vstore_half3_rte(float3, size_t, half *);
11857void __ovld vstore_half4_rte(float4, size_t, half *);
11858void __ovld vstore_half8_rte(float8, size_t, half *);
11859void __ovld vstore_half16_rte(float16, size_t, half *);
11860void __ovld vstore_half2_rtz(float2, size_t, half *);
11861void __ovld vstore_half3_rtz(float3, size_t, half *);
11862void __ovld vstore_half4_rtz(float4, size_t, half *);
11863void __ovld vstore_half8_rtz(float8, size_t, half *);
11864void __ovld vstore_half16_rtz(float16, size_t, half *);
11865void __ovld vstore_half2_rtp(float2, size_t, half *);
11866void __ovld vstore_half3_rtp(float3, size_t, half *);
11867void __ovld vstore_half4_rtp(float4, size_t, half *);
11868void __ovld vstore_half8_rtp(float8, size_t, half *);
11869void __ovld vstore_half16_rtp(float16, size_t, half *);
11870void __ovld vstore_half2_rtn(float2, size_t, half *);
11871void __ovld vstore_half3_rtn(float3, size_t, half *);
11872void __ovld vstore_half4_rtn(float4, size_t, half *);
11873void __ovld vstore_half8_rtn(float8, size_t, half *);
11874void __ovld vstore_half16_rtn(float16, size_t, half *);
11875#ifdef cl_khr_fp64
11876void __ovld vstore_half2(double2, size_t, half *);
11877void __ovld vstore_half3(double3, size_t, half *);
11878void __ovld vstore_half4(double4, size_t, half *);
11879void __ovld vstore_half8(double8, size_t, half *);
11880void __ovld vstore_half16(double16, size_t, half *);
11881void __ovld vstore_half2_rte(double2, size_t, half *);
11882void __ovld vstore_half3_rte(double3, size_t, half *);
11883void __ovld vstore_half4_rte(double4, size_t, half *);
11884void __ovld vstore_half8_rte(double8, size_t, half *);
11885void __ovld vstore_half16_rte(double16, size_t, half *);
11886void __ovld vstore_half2_rtz(double2, size_t, half *);
11887void __ovld vstore_half3_rtz(double3, size_t, half *);
11888void __ovld vstore_half4_rtz(double4, size_t, half *);
11889void __ovld vstore_half8_rtz(double8, size_t, half *);
11890void __ovld vstore_half16_rtz(double16, size_t, half *);
11891void __ovld vstore_half2_rtp(double2, size_t, half *);
11892void __ovld vstore_half3_rtp(double3, size_t, half *);
11893void __ovld vstore_half4_rtp(double4, size_t, half *);
11894void __ovld vstore_half8_rtp(double8, size_t, half *);
11895void __ovld vstore_half16_rtp(double16, size_t, half *);
11896void __ovld vstore_half2_rtn(double2, size_t, half *);
11897void __ovld vstore_half3_rtn(double3, size_t, half *);
11898void __ovld vstore_half4_rtn(double4, size_t, half *);
11899void __ovld vstore_half8_rtn(double8, size_t, half *);
11900void __ovld vstore_half16_rtn(double16, size_t, half *);
11901#endif //cl_khr_fp64
11902#endif //defined(__opencl_c_generic_address_space)
11903
11904#if defined(__opencl_c_named_address_space_builtins)
11905void __ovld vstore_half2(float2, size_t, __global half *);
11906void __ovld vstore_half3(float3, size_t, __global half *);
11907void __ovld vstore_half4(float4, size_t, __global half *);
11908void __ovld vstore_half8(float8, size_t, __global half *);
11909void __ovld vstore_half16(float16, size_t, __global half *);
11910void __ovld vstore_half2_rte(float2, size_t, __global half *);
11911void __ovld vstore_half3_rte(float3, size_t, __global half *);
11912void __ovld vstore_half4_rte(float4, size_t, __global half *);
11913void __ovld vstore_half8_rte(float8, size_t, __global half *);
11914void __ovld vstore_half16_rte(float16, size_t, __global half *);
11915void __ovld vstore_half2_rtz(float2, size_t, __global half *);
11916void __ovld vstore_half3_rtz(float3, size_t, __global half *);
11917void __ovld vstore_half4_rtz(float4, size_t, __global half *);
11918void __ovld vstore_half8_rtz(float8, size_t, __global half *);
11919void __ovld vstore_half16_rtz(float16, size_t, __global half *);
11920void __ovld vstore_half2_rtp(float2, size_t, __global half *);
11921void __ovld vstore_half3_rtp(float3, size_t, __global half *);
11922void __ovld vstore_half4_rtp(float4, size_t, __global half *);
11923void __ovld vstore_half8_rtp(float8, size_t, __global half *);
11924void __ovld vstore_half16_rtp(float16, size_t, __global half *);
11925void __ovld vstore_half2_rtn(float2, size_t, __global half *);
11926void __ovld vstore_half3_rtn(float3, size_t, __global half *);
11927void __ovld vstore_half4_rtn(float4, size_t, __global half *);
11928void __ovld vstore_half8_rtn(float8, size_t, __global half *);
11929void __ovld vstore_half16_rtn(float16, size_t, __global half *);
11930void __ovld vstore_half2(float2, size_t, __local half *);
11931void __ovld vstore_half3(float3, size_t, __local half *);
11932void __ovld vstore_half4(float4, size_t, __local half *);
11933void __ovld vstore_half8(float8, size_t, __local half *);
11934void __ovld vstore_half16(float16, size_t, __local half *);
11935void __ovld vstore_half2_rte(float2, size_t, __local half *);
11936void __ovld vstore_half3_rte(float3, size_t, __local half *);
11937void __ovld vstore_half4_rte(float4, size_t, __local half *);
11938void __ovld vstore_half8_rte(float8, size_t, __local half *);
11939void __ovld vstore_half16_rte(float16, size_t, __local half *);
11940void __ovld vstore_half2_rtz(float2, size_t, __local half *);
11941void __ovld vstore_half3_rtz(float3, size_t, __local half *);
11942void __ovld vstore_half4_rtz(float4, size_t, __local half *);
11943void __ovld vstore_half8_rtz(float8, size_t, __local half *);
11944void __ovld vstore_half16_rtz(float16, size_t, __local half *);
11945void __ovld vstore_half2_rtp(float2, size_t, __local half *);
11946void __ovld vstore_half3_rtp(float3, size_t, __local half *);
11947void __ovld vstore_half4_rtp(float4, size_t, __local half *);
11948void __ovld vstore_half8_rtp(float8, size_t, __local half *);
11949void __ovld vstore_half16_rtp(float16, size_t, __local half *);
11950void __ovld vstore_half2_rtn(float2, size_t, __local half *);
11951void __ovld vstore_half3_rtn(float3, size_t, __local half *);
11952void __ovld vstore_half4_rtn(float4, size_t, __local half *);
11953void __ovld vstore_half8_rtn(float8, size_t, __local half *);
11954void __ovld vstore_half16_rtn(float16, size_t, __local half *);
11955void __ovld vstore_half2(float2, size_t, __private half *);
11956void __ovld vstore_half3(float3, size_t, __private half *);
11957void __ovld vstore_half4(float4, size_t, __private half *);
11958void __ovld vstore_half8(float8, size_t, __private half *);
11959void __ovld vstore_half16(float16, size_t, __private half *);
11960void __ovld vstore_half2_rte(float2, size_t, __private half *);
11961void __ovld vstore_half3_rte(float3, size_t, __private half *);
11962void __ovld vstore_half4_rte(float4, size_t, __private half *);
11963void __ovld vstore_half8_rte(float8, size_t, __private half *);
11964void __ovld vstore_half16_rte(float16, size_t, __private half *);
11965void __ovld vstore_half2_rtz(float2, size_t, __private half *);
11966void __ovld vstore_half3_rtz(float3, size_t, __private half *);
11967void __ovld vstore_half4_rtz(float4, size_t, __private half *);
11968void __ovld vstore_half8_rtz(float8, size_t, __private half *);
11969void __ovld vstore_half16_rtz(float16, size_t, __private half *);
11970void __ovld vstore_half2_rtp(float2, size_t, __private half *);
11971void __ovld vstore_half3_rtp(float3, size_t, __private half *);
11972void __ovld vstore_half4_rtp(float4, size_t, __private half *);
11973void __ovld vstore_half8_rtp(float8, size_t, __private half *);
11974void __ovld vstore_half16_rtp(float16, size_t, __private half *);
11975void __ovld vstore_half2_rtn(float2, size_t, __private half *);
11976void __ovld vstore_half3_rtn(float3, size_t, __private half *);
11977void __ovld vstore_half4_rtn(float4, size_t, __private half *);
11978void __ovld vstore_half8_rtn(float8, size_t, __private half *);
11979void __ovld vstore_half16_rtn(float16, size_t, __private half *);
11980#ifdef cl_khr_fp64
11981void __ovld vstore_half2(double2, size_t, __global half *);
11982void __ovld vstore_half3(double3, size_t, __global half *);
11983void __ovld vstore_half4(double4, size_t, __global half *);
11984void __ovld vstore_half8(double8, size_t, __global half *);
11985void __ovld vstore_half16(double16, size_t, __global half *);
11986void __ovld vstore_half2_rte(double2, size_t, __global half *);
11987void __ovld vstore_half3_rte(double3, size_t, __global half *);
11988void __ovld vstore_half4_rte(double4, size_t, __global half *);
11989void __ovld vstore_half8_rte(double8, size_t, __global half *);
11990void __ovld vstore_half16_rte(double16, size_t, __global half *);
11991void __ovld vstore_half2_rtz(double2, size_t, __global half *);
11992void __ovld vstore_half3_rtz(double3, size_t, __global half *);
11993void __ovld vstore_half4_rtz(double4, size_t, __global half *);
11994void __ovld vstore_half8_rtz(double8, size_t, __global half *);
11995void __ovld vstore_half16_rtz(double16, size_t, __global half *);
11996void __ovld vstore_half2_rtp(double2, size_t, __global half *);
11997void __ovld vstore_half3_rtp(double3, size_t, __global half *);
11998void __ovld vstore_half4_rtp(double4, size_t, __global half *);
11999void __ovld vstore_half8_rtp(double8, size_t, __global half *);
12000void __ovld vstore_half16_rtp(double16, size_t, __global half *);
12001void __ovld vstore_half2_rtn(double2, size_t, __global half *);
12002void __ovld vstore_half3_rtn(double3, size_t, __global half *);
12003void __ovld vstore_half4_rtn(double4, size_t, __global half *);
12004void __ovld vstore_half8_rtn(double8, size_t, __global half *);
12005void __ovld vstore_half16_rtn(double16, size_t, __global half *);
12006void __ovld vstore_half2(double2, size_t, __local half *);
12007void __ovld vstore_half3(double3, size_t, __local half *);
12008void __ovld vstore_half4(double4, size_t, __local half *);
12009void __ovld vstore_half8(double8, size_t, __local half *);
12010void __ovld vstore_half16(double16, size_t, __local half *);
12011void __ovld vstore_half2_rte(double2, size_t, __local half *);
12012void __ovld vstore_half3_rte(double3, size_t, __local half *);
12013void __ovld vstore_half4_rte(double4, size_t, __local half *);
12014void __ovld vstore_half8_rte(double8, size_t, __local half *);
12015void __ovld vstore_half16_rte(double16, size_t, __local half *);
12016void __ovld vstore_half2_rtz(double2, size_t, __local half *);
12017void __ovld vstore_half3_rtz(double3, size_t, __local half *);
12018void __ovld vstore_half4_rtz(double4, size_t, __local half *);
12019void __ovld vstore_half8_rtz(double8, size_t, __local half *);
12020void __ovld vstore_half16_rtz(double16, size_t, __local half *);
12021void __ovld vstore_half2_rtp(double2, size_t, __local half *);
12022void __ovld vstore_half3_rtp(double3, size_t, __local half *);
12023void __ovld vstore_half4_rtp(double4, size_t, __local half *);
12024void __ovld vstore_half8_rtp(double8, size_t, __local half *);
12025void __ovld vstore_half16_rtp(double16, size_t, __local half *);
12026void __ovld vstore_half2_rtn(double2, size_t, __local half *);
12027void __ovld vstore_half3_rtn(double3, size_t, __local half *);
12028void __ovld vstore_half4_rtn(double4, size_t, __local half *);
12029void __ovld vstore_half8_rtn(double8, size_t, __local half *);
12030void __ovld vstore_half16_rtn(double16, size_t, __local half *);
12031void __ovld vstore_half2(double2, size_t, __private half *);
12032void __ovld vstore_half3(double3, size_t, __private half *);
12033void __ovld vstore_half4(double4, size_t, __private half *);
12034void __ovld vstore_half8(double8, size_t, __private half *);
12035void __ovld vstore_half16(double16, size_t, __private half *);
12036void __ovld vstore_half2_rte(double2, size_t, __private half *);
12037void __ovld vstore_half3_rte(double3, size_t, __private half *);
12038void __ovld vstore_half4_rte(double4, size_t, __private half *);
12039void __ovld vstore_half8_rte(double8, size_t, __private half *);
12040void __ovld vstore_half16_rte(double16, size_t, __private half *);
12041void __ovld vstore_half2_rtz(double2, size_t, __private half *);
12042void __ovld vstore_half3_rtz(double3, size_t, __private half *);
12043void __ovld vstore_half4_rtz(double4, size_t, __private half *);
12044void __ovld vstore_half8_rtz(double8, size_t, __private half *);
12045void __ovld vstore_half16_rtz(double16, size_t, __private half *);
12046void __ovld vstore_half2_rtp(double2, size_t, __private half *);
12047void __ovld vstore_half3_rtp(double3, size_t, __private half *);
12048void __ovld vstore_half4_rtp(double4, size_t, __private half *);
12049void __ovld vstore_half8_rtp(double8, size_t, __private half *);
12050void __ovld vstore_half16_rtp(double16, size_t, __private half *);
12051void __ovld vstore_half2_rtn(double2, size_t, __private half *);
12052void __ovld vstore_half3_rtn(double3, size_t, __private half *);
12053void __ovld vstore_half4_rtn(double4, size_t, __private half *);
12054void __ovld vstore_half8_rtn(double8, size_t, __private half *);
12055void __ovld vstore_half16_rtn(double16, size_t, __private half *);
12056#endif //cl_khr_fp64
12057#endif //defined(__opencl_c_named_address_space_builtins)
12058
12059/**
12060 * For n = 1, 2, 4, 8 and 16 read sizeof (halfn)
12061 * bytes of data from address (p + (offset * n)).
12062 * The data read is interpreted as a halfn value.
12063 * The halfn value read is converted to a floatn
12064 * value and the floatn value is returned.
12065 * The address computed as (p + (offset * n))
12066 * must be aligned to sizeof (halfn) bytes.
12067 * For n = 3, vloada_half3 reads a half3 from
12068 * address (p + (offset * 4)) and returns a float3.
12069 * The address computed as (p + (offset * 4))
12070 * must be aligned to sizeof (half) * 4 bytes.
12071 */
12072float2 __ovld __purefn vloada_half2(size_t, const __constant half *);
12073float3 __ovld __purefn vloada_half3(size_t, const __constant half *);
12074float4 __ovld __purefn vloada_half4(size_t, const __constant half *);
12075float8 __ovld __purefn vloada_half8(size_t, const __constant half *);
12076float16 __ovld __purefn vloada_half16(size_t, const __constant half *);
12077#if defined(__opencl_c_generic_address_space)
12078float2 __ovld __purefn vloada_half2(size_t, const half *);
12079float3 __ovld __purefn vloada_half3(size_t, const half *);
12080float4 __ovld __purefn vloada_half4(size_t, const half *);
12081float8 __ovld __purefn vloada_half8(size_t, const half *);
12082float16 __ovld __purefn vloada_half16(size_t, const half *);
12083#endif //defined(__opencl_c_generic_address_space)
12084
12085#if defined(__opencl_c_named_address_space_builtins)
12086float2 __ovld __purefn vloada_half2(size_t, const __global half *);
12087float3 __ovld __purefn vloada_half3(size_t, const __global half *);
12088float4 __ovld __purefn vloada_half4(size_t, const __global half *);
12089float8 __ovld __purefn vloada_half8(size_t, const __global half *);
12090float16 __ovld __purefn vloada_half16(size_t, const __global half *);
12091float2 __ovld __purefn vloada_half2(size_t, const __local half *);
12092float3 __ovld __purefn vloada_half3(size_t, const __local half *);
12093float4 __ovld __purefn vloada_half4(size_t, const __local half *);
12094float8 __ovld __purefn vloada_half8(size_t, const __local half *);
12095float16 __ovld __purefn vloada_half16(size_t, const __local half *);
12096float2 __ovld __purefn vloada_half2(size_t, const __private half *);
12097float3 __ovld __purefn vloada_half3(size_t, const __private half *);
12098float4 __ovld __purefn vloada_half4(size_t, const __private half *);
12099float8 __ovld __purefn vloada_half8(size_t, const __private half *);
12100float16 __ovld __purefn vloada_half16(size_t, const __private half *);
12101#endif //defined(__opencl_c_named_address_space_builtins)
12102
12103/**
12104 * The floatn value given by data is converted to
12105 * a halfn value using the appropriate rounding
12106 * mode.
12107 * For n = 1, 2, 4, 8 and 16, the halfn value is
12108 * written to the address computed as (p + (offset
12109 * * n)). The address computed as (p + (offset *
12110 * n)) must be aligned to sizeof (halfn) bytes.
12111 * For n = 3, the half3 value is written to the
12112 * address computed as (p + (offset * 4)). The
12113 * address computed as (p + (offset * 4)) must be
12114 * aligned to sizeof (half) * 4 bytes.
12115 * vstorea_halfn uses the current rounding
12116 * mode. The default current rounding mode is
12117 * round to nearest even.
12118 */
12119#if defined(__opencl_c_generic_address_space)
12120void __ovld vstorea_half2(float2, size_t, half *);
12121void __ovld vstorea_half3(float3, size_t, half *);
12122void __ovld vstorea_half4(float4, size_t, half *);
12123void __ovld vstorea_half8(float8, size_t, half *);
12124void __ovld vstorea_half16(float16, size_t, half *);
12125
12126void __ovld vstorea_half2_rte(float2, size_t, half *);
12127void __ovld vstorea_half3_rte(float3, size_t, half *);
12128void __ovld vstorea_half4_rte(float4, size_t, half *);
12129void __ovld vstorea_half8_rte(float8, size_t, half *);
12130void __ovld vstorea_half16_rte(float16, size_t, half *);
12131
12132void __ovld vstorea_half2_rtz(float2, size_t, half *);
12133void __ovld vstorea_half3_rtz(float3, size_t, half *);
12134void __ovld vstorea_half4_rtz(float4, size_t, half *);
12135void __ovld vstorea_half8_rtz(float8, size_t, half *);
12136void __ovld vstorea_half16_rtz(float16, size_t, half *);
12137
12138void __ovld vstorea_half2_rtp(float2, size_t, half *);
12139void __ovld vstorea_half3_rtp(float3, size_t, half *);
12140void __ovld vstorea_half4_rtp(float4, size_t, half *);
12141void __ovld vstorea_half8_rtp(float8, size_t, half *);
12142void __ovld vstorea_half16_rtp(float16, size_t, half *);
12143
12144void __ovld vstorea_half2_rtn(float2, size_t, half *);
12145void __ovld vstorea_half3_rtn(float3, size_t, half *);
12146void __ovld vstorea_half4_rtn(float4, size_t, half *);
12147void __ovld vstorea_half8_rtn(float8, size_t, half *);
12148void __ovld vstorea_half16_rtn(float16, size_t, half *);
12149
12150#ifdef cl_khr_fp64
12151void __ovld vstorea_half2(double2, size_t, half *);
12152void __ovld vstorea_half3(double3, size_t, half *);
12153void __ovld vstorea_half4(double4, size_t, half *);
12154void __ovld vstorea_half8(double8, size_t, half *);
12155void __ovld vstorea_half16(double16, size_t, half *);
12156
12157void __ovld vstorea_half2_rte(double2, size_t, half *);
12158void __ovld vstorea_half3_rte(double3, size_t, half *);
12159void __ovld vstorea_half4_rte(double4, size_t, half *);
12160void __ovld vstorea_half8_rte(double8, size_t, half *);
12161void __ovld vstorea_half16_rte(double16, size_t, half *);
12162
12163void __ovld vstorea_half2_rtz(double2, size_t, half *);
12164void __ovld vstorea_half3_rtz(double3, size_t, half *);
12165void __ovld vstorea_half4_rtz(double4, size_t, half *);
12166void __ovld vstorea_half8_rtz(double8, size_t, half *);
12167void __ovld vstorea_half16_rtz(double16, size_t, half *);
12168
12169void __ovld vstorea_half2_rtp(double2, size_t, half *);
12170void __ovld vstorea_half3_rtp(double3, size_t, half *);
12171void __ovld vstorea_half4_rtp(double4, size_t, half *);
12172void __ovld vstorea_half8_rtp(double8, size_t, half *);
12173void __ovld vstorea_half16_rtp(double16, size_t, half *);
12174
12175void __ovld vstorea_half2_rtn(double2, size_t, half *);
12176void __ovld vstorea_half3_rtn(double3, size_t, half *);
12177void __ovld vstorea_half4_rtn(double4, size_t, half *);
12178void __ovld vstorea_half8_rtn(double8, size_t, half *);
12179void __ovld vstorea_half16_rtn(double16, size_t, half *);
12180#endif //cl_khr_fp64
12181#endif //defined(__opencl_c_generic_address_space)
12182
12183#if defined(__opencl_c_named_address_space_builtins)
12184void __ovld vstorea_half2(float2, size_t, __global half *);
12185void __ovld vstorea_half3(float3, size_t, __global half *);
12186void __ovld vstorea_half4(float4, size_t, __global half *);
12187void __ovld vstorea_half8(float8, size_t, __global half *);
12188void __ovld vstorea_half16(float16, size_t, __global half *);
12189
12190void __ovld vstorea_half2_rte(float2, size_t, __global half *);
12191void __ovld vstorea_half3_rte(float3, size_t, __global half *);
12192void __ovld vstorea_half4_rte(float4, size_t, __global half *);
12193void __ovld vstorea_half8_rte(float8, size_t, __global half *);
12194void __ovld vstorea_half16_rte(float16, size_t, __global half *);
12195
12196void __ovld vstorea_half2_rtz(float2, size_t, __global half *);
12197void __ovld vstorea_half3_rtz(float3, size_t, __global half *);
12198void __ovld vstorea_half4_rtz(float4, size_t, __global half *);
12199void __ovld vstorea_half8_rtz(float8, size_t, __global half *);
12200void __ovld vstorea_half16_rtz(float16, size_t, __global half *);
12201
12202void __ovld vstorea_half2_rtp(float2, size_t, __global half *);
12203void __ovld vstorea_half3_rtp(float3, size_t, __global half *);
12204void __ovld vstorea_half4_rtp(float4, size_t, __global half *);
12205void __ovld vstorea_half8_rtp(float8, size_t, __global half *);
12206void __ovld vstorea_half16_rtp(float16, size_t, __global half *);
12207
12208void __ovld vstorea_half2_rtn(float2, size_t, __global half *);
12209void __ovld vstorea_half3_rtn(float3, size_t, __global half *);
12210void __ovld vstorea_half4_rtn(float4, size_t, __global half *);
12211void __ovld vstorea_half8_rtn(float8, size_t, __global half *);
12212void __ovld vstorea_half16_rtn(float16, size_t, __global half *);
12213
12214void __ovld vstorea_half2(float2, size_t, __local half *);
12215void __ovld vstorea_half3(float3, size_t, __local half *);
12216void __ovld vstorea_half4(float4, size_t, __local half *);
12217void __ovld vstorea_half8(float8, size_t, __local half *);
12218void __ovld vstorea_half16(float16, size_t, __local half *);
12219
12220void __ovld vstorea_half2_rte(float2, size_t, __local half *);
12221void __ovld vstorea_half3_rte(float3, size_t, __local half *);
12222void __ovld vstorea_half4_rte(float4, size_t, __local half *);
12223void __ovld vstorea_half8_rte(float8, size_t, __local half *);
12224void __ovld vstorea_half16_rte(float16, size_t, __local half *);
12225
12226void __ovld vstorea_half2_rtz(float2, size_t, __local half *);
12227void __ovld vstorea_half3_rtz(float3, size_t, __local half *);
12228void __ovld vstorea_half4_rtz(float4, size_t, __local half *);
12229void __ovld vstorea_half8_rtz(float8, size_t, __local half *);
12230void __ovld vstorea_half16_rtz(float16, size_t, __local half *);
12231
12232void __ovld vstorea_half2_rtp(float2, size_t, __local half *);
12233void __ovld vstorea_half3_rtp(float3, size_t, __local half *);
12234void __ovld vstorea_half4_rtp(float4, size_t, __local half *);
12235void __ovld vstorea_half8_rtp(float8, size_t, __local half *);
12236void __ovld vstorea_half16_rtp(float16, size_t, __local half *);
12237
12238void __ovld vstorea_half2_rtn(float2, size_t, __local half *);
12239void __ovld vstorea_half3_rtn(float3, size_t, __local half *);
12240void __ovld vstorea_half4_rtn(float4, size_t, __local half *);
12241void __ovld vstorea_half8_rtn(float8, size_t, __local half *);
12242void __ovld vstorea_half16_rtn(float16, size_t, __local half *);
12243
12244void __ovld vstorea_half2(float2, size_t, __private half *);
12245void __ovld vstorea_half3(float3, size_t, __private half *);
12246void __ovld vstorea_half4(float4, size_t, __private half *);
12247void __ovld vstorea_half8(float8, size_t, __private half *);
12248void __ovld vstorea_half16(float16, size_t, __private half *);
12249
12250void __ovld vstorea_half2_rte(float2, size_t, __private half *);
12251void __ovld vstorea_half3_rte(float3, size_t, __private half *);
12252void __ovld vstorea_half4_rte(float4, size_t, __private half *);
12253void __ovld vstorea_half8_rte(float8, size_t, __private half *);
12254void __ovld vstorea_half16_rte(float16, size_t, __private half *);
12255
12256void __ovld vstorea_half2_rtz(float2, size_t, __private half *);
12257void __ovld vstorea_half3_rtz(float3, size_t, __private half *);
12258void __ovld vstorea_half4_rtz(float4, size_t, __private half *);
12259void __ovld vstorea_half8_rtz(float8, size_t, __private half *);
12260void __ovld vstorea_half16_rtz(float16, size_t, __private half *);
12261
12262void __ovld vstorea_half2_rtp(float2, size_t, __private half *);
12263void __ovld vstorea_half3_rtp(float3, size_t, __private half *);
12264void __ovld vstorea_half4_rtp(float4, size_t, __private half *);
12265void __ovld vstorea_half8_rtp(float8, size_t, __private half *);
12266void __ovld vstorea_half16_rtp(float16, size_t, __private half *);
12267
12268void __ovld vstorea_half2_rtn(float2, size_t, __private half *);
12269void __ovld vstorea_half3_rtn(float3, size_t, __private half *);
12270void __ovld vstorea_half4_rtn(float4, size_t, __private half *);
12271void __ovld vstorea_half8_rtn(float8, size_t, __private half *);
12272void __ovld vstorea_half16_rtn(float16, size_t, __private half *);
12273
12274#ifdef cl_khr_fp64
12275void __ovld vstorea_half2(double2, size_t, __global half *);
12276void __ovld vstorea_half3(double3, size_t, __global half *);
12277void __ovld vstorea_half4(double4, size_t, __global half *);
12278void __ovld vstorea_half8(double8, size_t, __global half *);
12279void __ovld vstorea_half16(double16, size_t, __global half *);
12280
12281void __ovld vstorea_half2_rte(double2, size_t, __global half *);
12282void __ovld vstorea_half3_rte(double3, size_t, __global half *);
12283void __ovld vstorea_half4_rte(double4, size_t, __global half *);
12284void __ovld vstorea_half8_rte(double8, size_t, __global half *);
12285void __ovld vstorea_half16_rte(double16, size_t, __global half *);
12286
12287void __ovld vstorea_half2_rtz(double2, size_t, __global half *);
12288void __ovld vstorea_half3_rtz(double3, size_t, __global half *);
12289void __ovld vstorea_half4_rtz(double4, size_t, __global half *);
12290void __ovld vstorea_half8_rtz(double8, size_t, __global half *);
12291void __ovld vstorea_half16_rtz(double16, size_t, __global half *);
12292
12293void __ovld vstorea_half2_rtp(double2, size_t, __global half *);
12294void __ovld vstorea_half3_rtp(double3, size_t, __global half *);
12295void __ovld vstorea_half4_rtp(double4, size_t, __global half *);
12296void __ovld vstorea_half8_rtp(double8, size_t, __global half *);
12297void __ovld vstorea_half16_rtp(double16, size_t, __global half *);
12298
12299void __ovld vstorea_half2_rtn(double2, size_t, __global half *);
12300void __ovld vstorea_half3_rtn(double3, size_t, __global half *);
12301void __ovld vstorea_half4_rtn(double4, size_t, __global half *);
12302void __ovld vstorea_half8_rtn(double8, size_t, __global half *);
12303void __ovld vstorea_half16_rtn(double16, size_t, __global half *);
12304
12305void __ovld vstorea_half2(double2, size_t, __local half *);
12306void __ovld vstorea_half3(double3, size_t, __local half *);
12307void __ovld vstorea_half4(double4, size_t, __local half *);
12308void __ovld vstorea_half8(double8, size_t, __local half *);
12309void __ovld vstorea_half16(double16, size_t, __local half *);
12310
12311void __ovld vstorea_half2_rte(double2, size_t, __local half *);
12312void __ovld vstorea_half3_rte(double3, size_t, __local half *);
12313void __ovld vstorea_half4_rte(double4, size_t, __local half *);
12314void __ovld vstorea_half8_rte(double8, size_t, __local half *);
12315void __ovld vstorea_half16_rte(double16, size_t, __local half *);
12316
12317void __ovld vstorea_half2_rtz(double2, size_t, __local half *);
12318void __ovld vstorea_half3_rtz(double3, size_t, __local half *);
12319void __ovld vstorea_half4_rtz(double4, size_t, __local half *);
12320void __ovld vstorea_half8_rtz(double8, size_t, __local half *);
12321void __ovld vstorea_half16_rtz(double16, size_t, __local half *);
12322
12323void __ovld vstorea_half2_rtp(double2, size_t, __local half *);
12324void __ovld vstorea_half3_rtp(double3, size_t, __local half *);
12325void __ovld vstorea_half4_rtp(double4, size_t, __local half *);
12326void __ovld vstorea_half8_rtp(double8, size_t, __local half *);
12327void __ovld vstorea_half16_rtp(double16, size_t, __local half *);
12328
12329void __ovld vstorea_half2_rtn(double2, size_t, __local half *);
12330void __ovld vstorea_half3_rtn(double3, size_t, __local half *);
12331void __ovld vstorea_half4_rtn(double4, size_t, __local half *);
12332void __ovld vstorea_half8_rtn(double8, size_t, __local half *);
12333void __ovld vstorea_half16_rtn(double16, size_t, __local half *);
12334
12335void __ovld vstorea_half2(double2, size_t, __private half *);
12336void __ovld vstorea_half3(double3, size_t, __private half *);
12337void __ovld vstorea_half4(double4, size_t, __private half *);
12338void __ovld vstorea_half8(double8, size_t, __private half *);
12339void __ovld vstorea_half16(double16, size_t, __private half *);
12340
12341void __ovld vstorea_half2_rte(double2, size_t, __private half *);
12342void __ovld vstorea_half3_rte(double3, size_t, __private half *);
12343void __ovld vstorea_half4_rte(double4, size_t, __private half *);
12344void __ovld vstorea_half8_rte(double8, size_t, __private half *);
12345void __ovld vstorea_half16_rte(double16, size_t, __private half *);
12346
12347void __ovld vstorea_half2_rtz(double2, size_t, __private half *);
12348void __ovld vstorea_half3_rtz(double3, size_t, __private half *);
12349void __ovld vstorea_half4_rtz(double4, size_t, __private half *);
12350void __ovld vstorea_half8_rtz(double8, size_t, __private half *);
12351void __ovld vstorea_half16_rtz(double16, size_t, __private half *);
12352
12353void __ovld vstorea_half2_rtp(double2, size_t, __private half *);
12354void __ovld vstorea_half3_rtp(double3, size_t, __private half *);
12355void __ovld vstorea_half4_rtp(double4, size_t, __private half *);
12356void __ovld vstorea_half8_rtp(double8, size_t, __private half *);
12357void __ovld vstorea_half16_rtp(double16, size_t, __private half *);
12358
12359void __ovld vstorea_half2_rtn(double2, size_t, __private half *);
12360void __ovld vstorea_half3_rtn(double3, size_t, __private half *);
12361void __ovld vstorea_half4_rtn(double4, size_t, __private half *);
12362void __ovld vstorea_half8_rtn(double8, size_t, __private half *);
12363void __ovld vstorea_half16_rtn(double16, size_t, __private half *);
12364#endif //cl_khr_fp64
12365#endif //defined(__opencl_c_named_address_space_builtins)
12366
12367// OpenCL v1.1 s6.11.8, v1.2 s6.12.8, v2.0 s6.13.8 - Synchronization Functions
12368
12369/**
12370 * All work-items in a work-group executing the kernel
12371 * on a processor must execute this function before any
12372 * are allowed to continue execution beyond the barrier.
12373 * This function must be encountered by all work-items in
12374 * a work-group executing the kernel.
12375 * If barrier is inside a conditional statement, then all
12376 * work-items must enter the conditional if any work-item
12377 * enters the conditional statement and executes the
12378 * barrier.
12379 * If barrer is inside a loop, all work-items must execute
12380 * the barrier for each iteration of the loop before any are
12381 * allowed to continue execution beyond the barrier.
12382 * The barrier function also queues a memory fence
12383 * (reads and writes) to ensure correct ordering of
12384 * memory operations to local or global memory.
12385 * The flags argument specifies the memory address space
12386 * and can be set to a combination of the following literal
12387 * values.
12388 * CLK_LOCAL_MEM_FENCE - The barrier function
12389 * will either flush any variables stored in local memory
12390 * or queue a memory fence to ensure correct ordering of
12391 * memory operations to local memory.
12392 * CLK_GLOBAL_MEM_FENCE - The barrier function
12393 * will queue a memory fence to ensure correct ordering
12394 * of memory operations to global memory. This can be
12395 * useful when work-items, for example, write to buffer or
12396 * image objects and then want to read the updated data.
12397 */
12398
12400
12401#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
12404#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
12405
12406// OpenCL v1.1 s6.11.9, v1.2 s6.12.9 - Explicit Memory Fence Functions
12407
12408/**
12409 * Orders loads and stores of a work-item
12410 * executing a kernel. This means that loads
12411 * and stores preceding the mem_fence will
12412 * be committed to memory before any loads
12413 * and stores following the mem_fence.
12414 * The flags argument specifies the memory
12415 * address space and can be set to a
12416 * combination of the following literal
12417 * values:
12418 * CLK_LOCAL_MEM_FENCE
12419 * CLK_GLOBAL_MEM_FENCE.
12420 */
12422
12423/**
12424 * Read memory barrier that orders only
12425 * loads.
12426 * The flags argument specifies the memory
12427 * address space and can be set to a
12428 * combination of the following literal
12429 * values:
12430 * CLK_LOCAL_MEM_FENCE
12431 * CLK_GLOBAL_MEM_FENCE.
12432 */
12434
12435/**
12436 * Write memory barrier that orders only
12437 * stores.
12438 * The flags argument specifies the memory
12439 * address space and can be set to a
12440 * combination of the following literal
12441 * values:
12442 * CLK_LOCAL_MEM_FENCE
12443 * CLK_GLOBAL_MEM_FENCE.
12444 */
12446
12447// OpenCL v2.0 s6.13.9 - Address Space Qualifier Functions
12448
12449#if defined(__opencl_c_generic_address_space)
12450cl_mem_fence_flags __ovld get_fence(const void *ptr);
12451cl_mem_fence_flags __ovld get_fence(void *ptr);
12452
12453/**
12454 * Builtin functions to_global, to_local, and to_private need to be declared as Clang builtin functions
12455 * and checked in Sema since they should be declared as
12456 * addr gentype* to_addr (gentype*);
12457 * where gentype is builtin type or user defined type.
12458 */
12459
12460#endif //defined(__opencl_c_generic_address_space)
12461
12462// OpenCL v1.1 s6.11.10, v1.2 s6.12.10, v2.0 s6.13.10 - Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch
12463
12464/**
12465 * event_t async_work_group_copy (
12466 * __global gentype *dst,
12467 * const __local gentype *src,
12468 * size_t num_elements,
12469 * event_t event)
12470 * Perform an async copy of num_elements
12471 * gentype elements from src to dst. The async
12472 * copy is performed by all work-items in a workgroup
12473 * and this built-in function must therefore
12474 * be encountered by all work-items in a workgroup
12475 * executing the kernel with the same
12476 * argument values; otherwise the results are
12477 * undefined.
12478 * Returns an event object that can be used by
12479 * wait_group_events to wait for the async copy
12480 * to finish. The event argument can also be used
12481 * to associate the async_work_group_copy with
12482 * a previous async copy allowing an event to be
12483 * shared by multiple async copies; otherwise event
12484 * should be zero.
12485 * If event argument is non-zero, the event object
12486 * supplied in event argument will be returned.
12487 * This function does not perform any implicit
12488 * synchronization of source data such as using a
12489 * barrier before performing the copy.
12490 */
12491event_t __ovld async_work_group_copy(__local char *, const __global char *, size_t, event_t);
12492event_t __ovld async_work_group_copy(__local uchar *, const __global uchar *, size_t, event_t);
12493event_t __ovld async_work_group_copy(__local short *, const __global short *, size_t, event_t);
12494event_t __ovld async_work_group_copy(__local ushort *, const __global ushort *, size_t, event_t);
12495event_t __ovld async_work_group_copy(__local int *, const __global int *, size_t, event_t);
12496event_t __ovld async_work_group_copy(__local uint *, const __global uint *, size_t, event_t);
12497event_t __ovld async_work_group_copy(__local long *, const __global long *, size_t, event_t);
12498event_t __ovld async_work_group_copy(__local ulong *, const __global ulong *, size_t, event_t);
12499event_t __ovld async_work_group_copy(__local float *, const __global float *, size_t, event_t);
12500event_t __ovld async_work_group_copy(__local char2 *, const __global char2 *, size_t, event_t);
12501event_t __ovld async_work_group_copy(__local uchar2 *, const __global uchar2 *, size_t, event_t);
12502event_t __ovld async_work_group_copy(__local short2 *, const __global short2 *, size_t, event_t);
12503event_t __ovld async_work_group_copy(__local ushort2 *, const __global ushort2 *, size_t, event_t);
12504event_t __ovld async_work_group_copy(__local int2 *, const __global int2 *, size_t, event_t);
12505event_t __ovld async_work_group_copy(__local uint2 *, const __global uint2 *, size_t, event_t);
12506event_t __ovld async_work_group_copy(__local long2 *, const __global long2 *, size_t, event_t);
12507event_t __ovld async_work_group_copy(__local ulong2 *, const __global ulong2 *, size_t, event_t);
12508event_t __ovld async_work_group_copy(__local float2 *, const __global float2 *, size_t, event_t);
12509event_t __ovld async_work_group_copy(__local char3 *, const __global char3 *, size_t, event_t);
12510event_t __ovld async_work_group_copy(__local uchar3 *, const __global uchar3 *, size_t, event_t);
12511event_t __ovld async_work_group_copy(__local short3 *, const __global short3 *, size_t, event_t);
12512event_t __ovld async_work_group_copy(__local ushort3 *, const __global ushort3 *, size_t, event_t);
12513event_t __ovld async_work_group_copy(__local int3 *, const __global int3 *, size_t, event_t);
12514event_t __ovld async_work_group_copy(__local uint3 *, const __global uint3 *, size_t, event_t);
12515event_t __ovld async_work_group_copy(__local long3 *, const __global long3 *, size_t, event_t);
12516event_t __ovld async_work_group_copy(__local ulong3 *, const __global ulong3 *, size_t, event_t);
12517event_t __ovld async_work_group_copy(__local float3 *, const __global float3 *, size_t, event_t);
12518event_t __ovld async_work_group_copy(__local char4 *, const __global char4 *, size_t, event_t);
12519event_t __ovld async_work_group_copy(__local uchar4 *, const __global uchar4 *, size_t, event_t);
12520event_t __ovld async_work_group_copy(__local short4 *, const __global short4 *, size_t, event_t);
12521event_t __ovld async_work_group_copy(__local ushort4 *, const __global ushort4 *, size_t, event_t);
12522event_t __ovld async_work_group_copy(__local int4 *, const __global int4 *, size_t, event_t);
12523event_t __ovld async_work_group_copy(__local uint4 *, const __global uint4 *, size_t, event_t);
12524event_t __ovld async_work_group_copy(__local long4 *, const __global long4 *, size_t, event_t);
12525event_t __ovld async_work_group_copy(__local ulong4 *, const __global ulong4 *, size_t, event_t);
12526event_t __ovld async_work_group_copy(__local float4 *, const __global float4 *, size_t, event_t);
12527event_t __ovld async_work_group_copy(__local char8 *, const __global char8 *, size_t, event_t);
12528event_t __ovld async_work_group_copy(__local uchar8 *, const __global uchar8 *, size_t, event_t);
12529event_t __ovld async_work_group_copy(__local short8 *, const __global short8 *, size_t, event_t);
12530event_t __ovld async_work_group_copy(__local ushort8 *, const __global ushort8 *, size_t, event_t);
12531event_t __ovld async_work_group_copy(__local int8 *, const __global int8 *, size_t, event_t);
12532event_t __ovld async_work_group_copy(__local uint8 *, const __global uint8 *, size_t, event_t);
12533event_t __ovld async_work_group_copy(__local long8 *, const __global long8 *, size_t, event_t);
12534event_t __ovld async_work_group_copy(__local ulong8 *, const __global ulong8 *, size_t, event_t);
12535event_t __ovld async_work_group_copy(__local float8 *, const __global float8 *, size_t, event_t);
12536event_t __ovld async_work_group_copy(__local char16 *, const __global char16 *, size_t, event_t);
12537event_t __ovld async_work_group_copy(__local uchar16 *, const __global uchar16 *, size_t, event_t);
12538event_t __ovld async_work_group_copy(__local short16 *, const __global short16 *, size_t, event_t);
12539event_t __ovld async_work_group_copy(__local ushort16 *, const __global ushort16 *, size_t, event_t);
12540event_t __ovld async_work_group_copy(__local int16 *, const __global int16 *, size_t, event_t);
12541event_t __ovld async_work_group_copy(__local uint16 *, const __global uint16 *, size_t, event_t);
12542event_t __ovld async_work_group_copy(__local long16 *, const __global long16 *, size_t, event_t);
12543event_t __ovld async_work_group_copy(__local ulong16 *, const __global ulong16 *, size_t, event_t);
12544event_t __ovld async_work_group_copy(__local float16 *, const __global float16 *, size_t, event_t);
12545event_t __ovld async_work_group_copy(__global char *, const __local char *, size_t, event_t);
12546event_t __ovld async_work_group_copy(__global uchar *, const __local uchar *, size_t, event_t);
12547event_t __ovld async_work_group_copy(__global short *, const __local short *, size_t, event_t);
12548event_t __ovld async_work_group_copy(__global ushort *, const __local ushort *, size_t, event_t);
12549event_t __ovld async_work_group_copy(__global int *, const __local int *, size_t, event_t);
12550event_t __ovld async_work_group_copy(__global uint *, const __local uint *, size_t, event_t);
12551event_t __ovld async_work_group_copy(__global long *, const __local long *, size_t, event_t);
12552event_t __ovld async_work_group_copy(__global ulong *, const __local ulong *, size_t, event_t);
12553event_t __ovld async_work_group_copy(__global float *, const __local float *, size_t, event_t);
12554event_t __ovld async_work_group_copy(__global char2 *, const __local char2 *, size_t, event_t);
12555event_t __ovld async_work_group_copy(__global uchar2 *, const __local uchar2 *, size_t, event_t);
12556event_t __ovld async_work_group_copy(__global short2 *, const __local short2 *, size_t, event_t);
12557event_t __ovld async_work_group_copy(__global ushort2 *, const __local ushort2 *, size_t, event_t);
12558event_t __ovld async_work_group_copy(__global int2 *, const __local int2 *, size_t, event_t);
12559event_t __ovld async_work_group_copy(__global uint2 *, const __local uint2 *, size_t, event_t);
12560event_t __ovld async_work_group_copy(__global long2 *, const __local long2 *, size_t, event_t);
12561event_t __ovld async_work_group_copy(__global ulong2 *, const __local ulong2 *, size_t, event_t);
12562event_t __ovld async_work_group_copy(__global float2 *, const __local float2 *, size_t, event_t);
12563event_t __ovld async_work_group_copy(__global char3 *, const __local char3 *, size_t, event_t);
12564event_t __ovld async_work_group_copy(__global uchar3 *, const __local uchar3 *, size_t, event_t);
12565event_t __ovld async_work_group_copy(__global short3 *, const __local short3 *, size_t, event_t);
12566event_t __ovld async_work_group_copy(__global ushort3 *, const __local ushort3 *, size_t, event_t);
12567event_t __ovld async_work_group_copy(__global int3 *, const __local int3 *, size_t, event_t);
12568event_t __ovld async_work_group_copy(__global uint3 *, const __local uint3 *, size_t, event_t);
12569event_t __ovld async_work_group_copy(__global long3 *, const __local long3 *, size_t, event_t);
12570event_t __ovld async_work_group_copy(__global ulong3 *, const __local ulong3 *, size_t, event_t);
12571event_t __ovld async_work_group_copy(__global float3 *, const __local float3 *, size_t, event_t);
12572event_t __ovld async_work_group_copy(__global char4 *, const __local char4 *, size_t, event_t);
12573event_t __ovld async_work_group_copy(__global uchar4 *, const __local uchar4 *, size_t, event_t);
12574event_t __ovld async_work_group_copy(__global short4 *, const __local short4 *, size_t, event_t);
12575event_t __ovld async_work_group_copy(__global ushort4 *, const __local ushort4 *, size_t, event_t);
12576event_t __ovld async_work_group_copy(__global int4 *, const __local int4 *, size_t, event_t);
12577event_t __ovld async_work_group_copy(__global uint4 *, const __local uint4 *, size_t, event_t);
12578event_t __ovld async_work_group_copy(__global long4 *, const __local long4 *, size_t, event_t);
12579event_t __ovld async_work_group_copy(__global ulong4 *, const __local ulong4 *, size_t, event_t);
12580event_t __ovld async_work_group_copy(__global float4 *, const __local float4 *, size_t, event_t);
12581event_t __ovld async_work_group_copy(__global char8 *, const __local char8 *, size_t, event_t);
12582event_t __ovld async_work_group_copy(__global uchar8 *, const __local uchar8 *, size_t, event_t);
12583event_t __ovld async_work_group_copy(__global short8 *, const __local short8 *, size_t, event_t);
12584event_t __ovld async_work_group_copy(__global ushort8 *, const __local ushort8 *, size_t, event_t);
12585event_t __ovld async_work_group_copy(__global int8 *, const __local int8 *, size_t, event_t);
12586event_t __ovld async_work_group_copy(__global uint8 *, const __local uint8 *, size_t, event_t);
12587event_t __ovld async_work_group_copy(__global long8 *, const __local long8 *, size_t, event_t);
12588event_t __ovld async_work_group_copy(__global ulong8 *, const __local ulong8 *, size_t, event_t);
12589event_t __ovld async_work_group_copy(__global float8 *, const __local float8 *, size_t, event_t);
12590event_t __ovld async_work_group_copy(__global char16 *, const __local char16 *, size_t, event_t);
12591event_t __ovld async_work_group_copy(__global uchar16 *, const __local uchar16 *, size_t, event_t);
12592event_t __ovld async_work_group_copy(__global short16 *, const __local short16 *, size_t, event_t);
12593event_t __ovld async_work_group_copy(__global ushort16 *, const __local ushort16 *, size_t, event_t);
12594event_t __ovld async_work_group_copy(__global int16 *, const __local int16 *, size_t, event_t);
12595event_t __ovld async_work_group_copy(__global uint16 *, const __local uint16 *, size_t, event_t);
12596event_t __ovld async_work_group_copy(__global long16 *, const __local long16 *, size_t, event_t);
12597event_t __ovld async_work_group_copy(__global ulong16 *, const __local ulong16 *, size_t, event_t);
12598event_t __ovld async_work_group_copy(__global float16 *, const __local float16 *, size_t, event_t);
12599#ifdef cl_khr_fp64
12600event_t __ovld async_work_group_copy(__local double *, const __global double *, size_t, event_t);
12601event_t __ovld async_work_group_copy(__local double2 *, const __global double2 *, size_t, event_t);
12602event_t __ovld async_work_group_copy(__local double3 *, const __global double3 *, size_t, event_t);
12603event_t __ovld async_work_group_copy(__local double4 *, const __global double4 *, size_t, event_t);
12604event_t __ovld async_work_group_copy(__local double8 *, const __global double8 *, size_t, event_t);
12605event_t __ovld async_work_group_copy(__local double16 *, const __global double16 *, size_t, event_t);
12606event_t __ovld async_work_group_copy(__global double *, const __local double *, size_t, event_t);
12607event_t __ovld async_work_group_copy(__global double2 *, const __local double2 *, size_t, event_t);
12608event_t __ovld async_work_group_copy(__global double3 *, const __local double3 *, size_t, event_t);
12609event_t __ovld async_work_group_copy(__global double4 *, const __local double4 *, size_t, event_t);
12610event_t __ovld async_work_group_copy(__global double8 *, const __local double8 *, size_t, event_t);
12611event_t __ovld async_work_group_copy(__global double16 *, const __local double16 *, size_t, event_t);
12612#endif //cl_khr_fp64
12613#ifdef cl_khr_fp16
12614event_t __ovld async_work_group_copy(__local half *, const __global half *, size_t, event_t);
12615event_t __ovld async_work_group_copy(__local half2 *, const __global half2 *, size_t, event_t);
12616event_t __ovld async_work_group_copy(__local half3 *, const __global half3 *, size_t, event_t);
12617event_t __ovld async_work_group_copy(__local half4 *, const __global half4 *, size_t, event_t);
12618event_t __ovld async_work_group_copy(__local half8 *, const __global half8 *, size_t, event_t);
12619event_t __ovld async_work_group_copy(__local half16 *, const __global half16 *, size_t, event_t);
12620event_t __ovld async_work_group_copy(__global half *, const __local half *, size_t, event_t);
12621event_t __ovld async_work_group_copy(__global half2 *, const __local half2 *, size_t, event_t);
12622event_t __ovld async_work_group_copy(__global half3 *, const __local half3 *, size_t, event_t);
12623event_t __ovld async_work_group_copy(__global half4 *, const __local half4 *, size_t, event_t);
12624event_t __ovld async_work_group_copy(__global half8 *, const __local half8 *, size_t, event_t);
12625event_t __ovld async_work_group_copy(__global half16 *, const __local half16 *, size_t, event_t);
12626#endif //cl_khr_fp16
12627
12628/**
12629 * Perform an async gather of num_elements
12630 * gentype elements from src to dst. The
12631 * src_stride is the stride in elements for each
12632 * gentype element read from src. The dst_stride
12633 * is the stride in elements for each gentype
12634 * element written to dst. The async gather is
12635 * performed by all work-items in a work-group.
12636 * This built-in function must therefore be
12637 * encountered by all work-items in a work-group
12638 * executing the kernel with the same argument
12639 * values; otherwise the results are undefined.
12640 * Returns an event object that can be used by
12641 * wait_group_events to wait for the async copy
12642 * to finish. The event argument can also be used
12643 * to associate the
12644 * async_work_group_strided_copy with a
12645 * previous async copy allowing an event to be
12646 * shared by multiple async copies; otherwise event
12647 * should be zero.
12648 * If event argument is non-zero, the event object
12649 * supplied in event argument will be returned.
12650 * This function does not perform any implicit
12651 * synchronization of source data such as using a
12652 * barrier before performing the copy.
12653 */
12654event_t __ovld async_work_group_strided_copy(__local char *, const __global char *, size_t, size_t, event_t);
12655event_t __ovld async_work_group_strided_copy(__local uchar *, const __global uchar *, size_t, size_t, event_t);
12656event_t __ovld async_work_group_strided_copy(__local short *, const __global short *, size_t, size_t, event_t);
12657event_t __ovld async_work_group_strided_copy(__local ushort *, const __global ushort *, size_t, size_t, event_t);
12658event_t __ovld async_work_group_strided_copy(__local int *, const __global int *, size_t, size_t, event_t);
12659event_t __ovld async_work_group_strided_copy(__local uint *, const __global uint *, size_t, size_t, event_t);
12660event_t __ovld async_work_group_strided_copy(__local long *, const __global long *, size_t, size_t, event_t);
12661event_t __ovld async_work_group_strided_copy(__local ulong *, const __global ulong *, size_t, size_t, event_t);
12662event_t __ovld async_work_group_strided_copy(__local float *, const __global float *, size_t, size_t, event_t);
12663event_t __ovld async_work_group_strided_copy(__local char2 *, const __global char2 *, size_t, size_t, event_t);
12664event_t __ovld async_work_group_strided_copy(__local uchar2 *, const __global uchar2 *, size_t, size_t, event_t);
12665event_t __ovld async_work_group_strided_copy(__local short2 *, const __global short2 *, size_t, size_t, event_t);
12666event_t __ovld async_work_group_strided_copy(__local ushort2 *, const __global ushort2 *, size_t, size_t, event_t);
12667event_t __ovld async_work_group_strided_copy(__local int2 *, const __global int2 *, size_t, size_t, event_t);
12668event_t __ovld async_work_group_strided_copy(__local uint2 *, const __global uint2 *, size_t, size_t, event_t);
12669event_t __ovld async_work_group_strided_copy(__local long2 *, const __global long2 *, size_t, size_t, event_t);
12670event_t __ovld async_work_group_strided_copy(__local ulong2 *, const __global ulong2 *, size_t, size_t, event_t);
12671event_t __ovld async_work_group_strided_copy(__local float2 *, const __global float2 *, size_t, size_t, event_t);
12672event_t __ovld async_work_group_strided_copy(__local char3 *, const __global char3 *, size_t, size_t, event_t);
12673event_t __ovld async_work_group_strided_copy(__local uchar3 *, const __global uchar3 *, size_t, size_t, event_t);
12674event_t __ovld async_work_group_strided_copy(__local short3 *, const __global short3 *, size_t, size_t, event_t);
12675event_t __ovld async_work_group_strided_copy(__local ushort3 *, const __global ushort3 *, size_t, size_t, event_t);
12676event_t __ovld async_work_group_strided_copy(__local int3 *, const __global int3 *, size_t, size_t, event_t);
12677event_t __ovld async_work_group_strided_copy(__local uint3 *, const __global uint3 *, size_t, size_t, event_t);
12678event_t __ovld async_work_group_strided_copy(__local long3 *, const __global long3 *, size_t, size_t, event_t);
12679event_t __ovld async_work_group_strided_copy(__local ulong3 *, const __global ulong3 *, size_t, size_t, event_t);
12680event_t __ovld async_work_group_strided_copy(__local float3 *, const __global float3 *, size_t, size_t, event_t);
12681event_t __ovld async_work_group_strided_copy(__local char4 *, const __global char4 *, size_t, size_t, event_t);
12682event_t __ovld async_work_group_strided_copy(__local uchar4 *, const __global uchar4 *, size_t, size_t, event_t);
12683event_t __ovld async_work_group_strided_copy(__local short4 *, const __global short4 *, size_t, size_t, event_t);
12684event_t __ovld async_work_group_strided_copy(__local ushort4 *, const __global ushort4 *, size_t, size_t, event_t);
12685event_t __ovld async_work_group_strided_copy(__local int4 *, const __global int4 *, size_t, size_t, event_t);
12686event_t __ovld async_work_group_strided_copy(__local uint4 *, const __global uint4 *, size_t, size_t, event_t);
12687event_t __ovld async_work_group_strided_copy(__local long4 *, const __global long4 *, size_t, size_t, event_t);
12688event_t __ovld async_work_group_strided_copy(__local ulong4 *, const __global ulong4 *, size_t, size_t, event_t);
12689event_t __ovld async_work_group_strided_copy(__local float4 *, const __global float4 *, size_t, size_t, event_t);
12690event_t __ovld async_work_group_strided_copy(__local char8 *, const __global char8 *, size_t, size_t, event_t);
12691event_t __ovld async_work_group_strided_copy(__local uchar8 *, const __global uchar8 *, size_t, size_t, event_t);
12692event_t __ovld async_work_group_strided_copy(__local short8 *, const __global short8 *, size_t, size_t, event_t);
12693event_t __ovld async_work_group_strided_copy(__local ushort8 *, const __global ushort8 *, size_t, size_t, event_t);
12694event_t __ovld async_work_group_strided_copy(__local int8 *, const __global int8 *, size_t, size_t, event_t);
12695event_t __ovld async_work_group_strided_copy(__local uint8 *, const __global uint8 *, size_t, size_t, event_t);
12696event_t __ovld async_work_group_strided_copy(__local long8 *, const __global long8 *, size_t, size_t, event_t);
12697event_t __ovld async_work_group_strided_copy(__local ulong8 *, const __global ulong8 *, size_t, size_t, event_t);
12698event_t __ovld async_work_group_strided_copy(__local float8 *, const __global float8 *, size_t, size_t, event_t);
12699event_t __ovld async_work_group_strided_copy(__local char16 *, const __global char16 *, size_t, size_t, event_t);
12700event_t __ovld async_work_group_strided_copy(__local uchar16 *, const __global uchar16 *, size_t, size_t, event_t);
12701event_t __ovld async_work_group_strided_copy(__local short16 *, const __global short16 *, size_t, size_t, event_t);
12702event_t __ovld async_work_group_strided_copy(__local ushort16 *, const __global ushort16 *, size_t, size_t, event_t);
12703event_t __ovld async_work_group_strided_copy(__local int16 *, const __global int16 *, size_t, size_t, event_t);
12704event_t __ovld async_work_group_strided_copy(__local uint16 *, const __global uint16 *, size_t, size_t, event_t);
12705event_t __ovld async_work_group_strided_copy(__local long16 *, const __global long16 *, size_t, size_t, event_t);
12706event_t __ovld async_work_group_strided_copy(__local ulong16 *, const __global ulong16 *, size_t, size_t, event_t);
12707event_t __ovld async_work_group_strided_copy(__local float16 *, const __global float16 *, size_t, size_t, event_t);
12708event_t __ovld async_work_group_strided_copy(__global char *, const __local char *, size_t, size_t, event_t);
12709event_t __ovld async_work_group_strided_copy(__global uchar *, const __local uchar *, size_t, size_t, event_t);
12710event_t __ovld async_work_group_strided_copy(__global short *, const __local short *, size_t, size_t, event_t);
12711event_t __ovld async_work_group_strided_copy(__global ushort *, const __local ushort *, size_t, size_t, event_t);
12712event_t __ovld async_work_group_strided_copy(__global int *, const __local int *, size_t, size_t, event_t);
12713event_t __ovld async_work_group_strided_copy(__global uint *, const __local uint *, size_t, size_t, event_t);
12714event_t __ovld async_work_group_strided_copy(__global long *, const __local long *, size_t, size_t, event_t);
12715event_t __ovld async_work_group_strided_copy(__global ulong *, const __local ulong *, size_t, size_t, event_t);
12716event_t __ovld async_work_group_strided_copy(__global float *, const __local float *, size_t, size_t, event_t);
12717event_t __ovld async_work_group_strided_copy(__global char2 *, const __local char2 *, size_t, size_t, event_t);
12718event_t __ovld async_work_group_strided_copy(__global uchar2 *, const __local uchar2 *, size_t, size_t, event_t);
12719event_t __ovld async_work_group_strided_copy(__global short2 *, const __local short2 *, size_t, size_t, event_t);
12720event_t __ovld async_work_group_strided_copy(__global ushort2 *, const __local ushort2 *, size_t, size_t, event_t);
12721event_t __ovld async_work_group_strided_copy(__global int2 *, const __local int2 *, size_t, size_t, event_t);
12722event_t __ovld async_work_group_strided_copy(__global uint2 *, const __local uint2 *, size_t, size_t, event_t);
12723event_t __ovld async_work_group_strided_copy(__global long2 *, const __local long2 *, size_t, size_t, event_t);
12724event_t __ovld async_work_group_strided_copy(__global ulong2 *, const __local ulong2 *, size_t, size_t, event_t);
12725event_t __ovld async_work_group_strided_copy(__global float2 *, const __local float2 *, size_t, size_t, event_t);
12726event_t __ovld async_work_group_strided_copy(__global char3 *, const __local char3 *, size_t, size_t, event_t);
12727event_t __ovld async_work_group_strided_copy(__global uchar3 *, const __local uchar3 *, size_t, size_t, event_t);
12728event_t __ovld async_work_group_strided_copy(__global short3 *, const __local short3 *, size_t, size_t, event_t);
12729event_t __ovld async_work_group_strided_copy(__global ushort3 *, const __local ushort3 *, size_t, size_t, event_t);
12730event_t __ovld async_work_group_strided_copy(__global int3 *, const __local int3 *, size_t, size_t, event_t);
12731event_t __ovld async_work_group_strided_copy(__global uint3 *, const __local uint3 *, size_t, size_t, event_t);
12732event_t __ovld async_work_group_strided_copy(__global long3 *, const __local long3 *, size_t, size_t, event_t);
12733event_t __ovld async_work_group_strided_copy(__global ulong3 *, const __local ulong3 *, size_t, size_t, event_t);
12734event_t __ovld async_work_group_strided_copy(__global float3 *, const __local float3 *, size_t, size_t, event_t);
12735event_t __ovld async_work_group_strided_copy(__global char4 *, const __local char4 *, size_t, size_t, event_t);
12736event_t __ovld async_work_group_strided_copy(__global uchar4 *, const __local uchar4 *, size_t, size_t, event_t);
12737event_t __ovld async_work_group_strided_copy(__global short4 *, const __local short4 *, size_t, size_t, event_t);
12738event_t __ovld async_work_group_strided_copy(__global ushort4 *, const __local ushort4 *, size_t, size_t, event_t);
12739event_t __ovld async_work_group_strided_copy(__global int4 *, const __local int4 *, size_t, size_t, event_t);
12740event_t __ovld async_work_group_strided_copy(__global uint4 *, const __local uint4 *, size_t, size_t, event_t);
12741event_t __ovld async_work_group_strided_copy(__global long4 *, const __local long4 *, size_t, size_t, event_t);
12742event_t __ovld async_work_group_strided_copy(__global ulong4 *, const __local ulong4 *, size_t, size_t, event_t);
12743event_t __ovld async_work_group_strided_copy(__global float4 *, const __local float4 *, size_t, size_t, event_t);
12744event_t __ovld async_work_group_strided_copy(__global char8 *, const __local char8 *, size_t, size_t, event_t);
12745event_t __ovld async_work_group_strided_copy(__global uchar8 *, const __local uchar8 *, size_t, size_t, event_t);
12746event_t __ovld async_work_group_strided_copy(__global short8 *, const __local short8 *, size_t, size_t, event_t);
12747event_t __ovld async_work_group_strided_copy(__global ushort8 *, const __local ushort8 *, size_t, size_t, event_t);
12748event_t __ovld async_work_group_strided_copy(__global int8 *, const __local int8 *, size_t, size_t, event_t);
12749event_t __ovld async_work_group_strided_copy(__global uint8 *, const __local uint8 *, size_t, size_t, event_t);
12750event_t __ovld async_work_group_strided_copy(__global long8 *, const __local long8 *, size_t, size_t, event_t);
12751event_t __ovld async_work_group_strided_copy(__global ulong8 *, const __local ulong8 *, size_t, size_t, event_t);
12752event_t __ovld async_work_group_strided_copy(__global float8 *, const __local float8 *, size_t, size_t, event_t);
12753event_t __ovld async_work_group_strided_copy(__global char16 *, const __local char16 *, size_t, size_t, event_t);
12754event_t __ovld async_work_group_strided_copy(__global uchar16 *, const __local uchar16 *, size_t, size_t, event_t);
12755event_t __ovld async_work_group_strided_copy(__global short16 *, const __local short16 *, size_t, size_t, event_t);
12756event_t __ovld async_work_group_strided_copy(__global ushort16 *, const __local ushort16 *, size_t, size_t, event_t);
12757event_t __ovld async_work_group_strided_copy(__global int16 *, const __local int16 *, size_t, size_t, event_t);
12758event_t __ovld async_work_group_strided_copy(__global uint16 *, const __local uint16 *, size_t, size_t, event_t);
12759event_t __ovld async_work_group_strided_copy(__global long16 *, const __local long16 *, size_t, size_t, event_t);
12760event_t __ovld async_work_group_strided_copy(__global ulong16 *, const __local ulong16 *, size_t, size_t, event_t);
12761event_t __ovld async_work_group_strided_copy(__global float16 *, const __local float16 *, size_t, size_t, event_t);
12762#ifdef cl_khr_fp64
12763event_t __ovld async_work_group_strided_copy(__local double *, const __global double *, size_t, size_t, event_t);
12764event_t __ovld async_work_group_strided_copy(__local double2 *, const __global double2 *, size_t, size_t, event_t);
12765event_t __ovld async_work_group_strided_copy(__local double3 *, const __global double3 *, size_t, size_t, event_t);
12766event_t __ovld async_work_group_strided_copy(__local double4 *, const __global double4 *, size_t, size_t, event_t);
12767event_t __ovld async_work_group_strided_copy(__local double8 *, const __global double8 *, size_t, size_t, event_t);
12768event_t __ovld async_work_group_strided_copy(__local double16 *, const __global double16 *, size_t, size_t, event_t);
12769event_t __ovld async_work_group_strided_copy(__global double *, const __local double *, size_t, size_t, event_t);
12770event_t __ovld async_work_group_strided_copy(__global double2 *, const __local double2 *, size_t, size_t, event_t);
12771event_t __ovld async_work_group_strided_copy(__global double3 *, const __local double3 *, size_t, size_t, event_t);
12772event_t __ovld async_work_group_strided_copy(__global double4 *, const __local double4 *, size_t, size_t, event_t);
12773event_t __ovld async_work_group_strided_copy(__global double8 *, const __local double8 *, size_t, size_t, event_t);
12774event_t __ovld async_work_group_strided_copy(__global double16 *, const __local double16 *, size_t, size_t, event_t);
12775#endif //cl_khr_fp64
12776#ifdef cl_khr_fp16
12777event_t __ovld async_work_group_strided_copy(__local half *, const __global half *, size_t, size_t, event_t);
12778event_t __ovld async_work_group_strided_copy(__local half2 *, const __global half2 *, size_t, size_t, event_t);
12779event_t __ovld async_work_group_strided_copy(__local half3 *, const __global half3 *, size_t, size_t, event_t);
12780event_t __ovld async_work_group_strided_copy(__local half4 *, const __global half4 *, size_t, size_t, event_t);
12781event_t __ovld async_work_group_strided_copy(__local half8 *, const __global half8 *, size_t, size_t, event_t);
12782event_t __ovld async_work_group_strided_copy(__local half16 *, const __global half16 *, size_t, size_t, event_t);
12783event_t __ovld async_work_group_strided_copy(__global half *, const __local half *, size_t, size_t, event_t);
12784event_t __ovld async_work_group_strided_copy(__global half2 *, const __local half2 *, size_t, size_t, event_t);
12785event_t __ovld async_work_group_strided_copy(__global half3 *, const __local half3 *, size_t, size_t, event_t);
12786event_t __ovld async_work_group_strided_copy(__global half4 *, const __local half4 *, size_t, size_t, event_t);
12787event_t __ovld async_work_group_strided_copy(__global half8 *, const __local half8 *, size_t, size_t, event_t);
12788event_t __ovld async_work_group_strided_copy(__global half16 *, const __local half16 *, size_t, size_t, event_t);
12789#endif //cl_khr_fp16
12790
12791/**
12792 * Wait for events that identify the
12793 * async_work_group_copy operations to
12794 * complete. The event objects specified in
12795 * event_list will be released after the wait is
12796 * performed.
12797 * This function must be encountered by all workitems
12798 * in a work-group executing the kernel with
12799 * the same num_events and event objects specified
12800 * in event_list; otherwise the results are undefined.
12801 */
12802void __ovld wait_group_events(int, event_t *);
12803
12804/**
12805 * Prefetch num_elements * sizeof(gentype)
12806 * bytes into the global cache. The prefetch
12807 * instruction is applied to a work-item in a workgroup
12808 * and does not affect the functional
12809 * behavior of the kernel.
12810 */
12811void __ovld prefetch(const __global char *, size_t);
12812void __ovld prefetch(const __global uchar *, size_t);
12813void __ovld prefetch(const __global short *, size_t);
12814void __ovld prefetch(const __global ushort *, size_t);
12815void __ovld prefetch(const __global int *, size_t);
12816void __ovld prefetch(const __global uint *, size_t);
12817void __ovld prefetch(const __global long *, size_t);
12818void __ovld prefetch(const __global ulong *, size_t);
12819void __ovld prefetch(const __global float *, size_t);
12820void __ovld prefetch(const __global char2 *, size_t);
12821void __ovld prefetch(const __global uchar2 *, size_t);
12822void __ovld prefetch(const __global short2 *, size_t);
12823void __ovld prefetch(const __global ushort2 *, size_t);
12824void __ovld prefetch(const __global int2 *, size_t);
12825void __ovld prefetch(const __global uint2 *, size_t);
12826void __ovld prefetch(const __global long2 *, size_t);
12827void __ovld prefetch(const __global ulong2 *, size_t);
12828void __ovld prefetch(const __global float2 *, size_t);
12829void __ovld prefetch(const __global char3 *, size_t);
12830void __ovld prefetch(const __global uchar3 *, size_t);
12831void __ovld prefetch(const __global short3 *, size_t);
12832void __ovld prefetch(const __global ushort3 *, size_t);
12833void __ovld prefetch(const __global int3 *, size_t);
12834void __ovld prefetch(const __global uint3 *, size_t);
12835void __ovld prefetch(const __global long3 *, size_t);
12836void __ovld prefetch(const __global ulong3 *, size_t);
12837void __ovld prefetch(const __global float3 *, size_t);
12838void __ovld prefetch(const __global char4 *, size_t);
12839void __ovld prefetch(const __global uchar4 *, size_t);
12840void __ovld prefetch(const __global short4 *, size_t);
12841void __ovld prefetch(const __global ushort4 *, size_t);
12842void __ovld prefetch(const __global int4 *, size_t);
12843void __ovld prefetch(const __global uint4 *, size_t);
12844void __ovld prefetch(const __global long4 *, size_t);
12845void __ovld prefetch(const __global ulong4 *, size_t);
12846void __ovld prefetch(const __global float4 *, size_t);
12847void __ovld prefetch(const __global char8 *, size_t);
12848void __ovld prefetch(const __global uchar8 *, size_t);
12849void __ovld prefetch(const __global short8 *, size_t);
12850void __ovld prefetch(const __global ushort8 *, size_t);
12851void __ovld prefetch(const __global int8 *, size_t);
12852void __ovld prefetch(const __global uint8 *, size_t);
12853void __ovld prefetch(const __global long8 *, size_t);
12854void __ovld prefetch(const __global ulong8 *, size_t);
12855void __ovld prefetch(const __global float8 *, size_t);
12856void __ovld prefetch(const __global char16 *, size_t);
12857void __ovld prefetch(const __global uchar16 *, size_t);
12858void __ovld prefetch(const __global short16 *, size_t);
12859void __ovld prefetch(const __global ushort16 *, size_t);
12860void __ovld prefetch(const __global int16 *, size_t);
12861void __ovld prefetch(const __global uint16 *, size_t);
12862void __ovld prefetch(const __global long16 *, size_t);
12863void __ovld prefetch(const __global ulong16 *, size_t);
12864void __ovld prefetch(const __global float16 *, size_t);
12865#ifdef cl_khr_fp64
12866void __ovld prefetch(const __global double *, size_t);
12867void __ovld prefetch(const __global double2 *, size_t);
12868void __ovld prefetch(const __global double3 *, size_t);
12869void __ovld prefetch(const __global double4 *, size_t);
12870void __ovld prefetch(const __global double8 *, size_t);
12871void __ovld prefetch(const __global double16 *, size_t);
12872#endif //cl_khr_fp64
12873#ifdef cl_khr_fp16
12874void __ovld prefetch(const __global half *, size_t);
12875void __ovld prefetch(const __global half2 *, size_t);
12876void __ovld prefetch(const __global half3 *, size_t);
12877void __ovld prefetch(const __global half4 *, size_t);
12878void __ovld prefetch(const __global half8 *, size_t);
12879void __ovld prefetch(const __global half16 *, size_t);
12880#endif // cl_khr_fp16
12881
12882// OpenCL v1.1 s6.11.1, v1.2 s6.12.11 - Atomic Functions
12883
12884#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
12885#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
12886#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
12887#endif
12888/**
12889 * Read the 32-bit value (referred to as old)
12890 * stored at location pointed by p. Compute
12891 * (old + val) and store result at location
12892 * pointed by p. The function returns old.
12893 */
12894int __ovld atomic_add(volatile __global int *, int);
12895uint __ovld atomic_add(volatile __global uint *, uint);
12896int __ovld atomic_add(volatile __local int *, int);
12897uint __ovld atomic_add(volatile __local uint *, uint);
12898#ifdef __OPENCL_CPP_VERSION__
12899int __ovld atomic_add(volatile int *, int);
12900uint __ovld atomic_add(volatile uint *, uint);
12901#endif
12902
12903#if defined(cl_khr_global_int32_base_atomics)
12904int __ovld atom_add(volatile __global int *, int);
12905uint __ovld atom_add(volatile __global uint *, uint);
12906#endif
12907#if defined(cl_khr_local_int32_base_atomics)
12908int __ovld atom_add(volatile __local int *, int);
12909uint __ovld atom_add(volatile __local uint *, uint);
12910#endif
12911
12912#if defined(cl_khr_int64_base_atomics)
12913long __ovld atom_add(volatile __global long *, long);
12914ulong __ovld atom_add(volatile __global ulong *, ulong);
12915long __ovld atom_add(volatile __local long *, long);
12916ulong __ovld atom_add(volatile __local ulong *, ulong);
12917#endif
12918
12919/**
12920 * Read the 32-bit value (referred to as old) stored at location pointed by p.
12921 * Compute (old - val) and store result at location pointed by p. The function
12922 * returns old.
12923 */
12924int __ovld atomic_sub(volatile __global int *, int);
12925uint __ovld atomic_sub(volatile __global uint *, uint);
12926int __ovld atomic_sub(volatile __local int *, int);
12927uint __ovld atomic_sub(volatile __local uint *, uint);
12928#ifdef __OPENCL_CPP_VERSION__
12929int __ovld atomic_sub(volatile int *, int);
12930uint __ovld atomic_sub(volatile uint *, uint);
12931#endif
12932
12933#if defined(cl_khr_global_int32_base_atomics)
12934int __ovld atom_sub(volatile __global int *, int);
12935uint __ovld atom_sub(volatile __global uint *, uint);
12936#endif
12937#if defined(cl_khr_local_int32_base_atomics)
12938int __ovld atom_sub(volatile __local int *, int);
12939uint __ovld atom_sub(volatile __local uint *, uint);
12940#endif
12941
12942#if defined(cl_khr_int64_base_atomics)
12943long __ovld atom_sub(volatile __global long *, long);
12944ulong __ovld atom_sub(volatile __global ulong *, ulong);
12945long __ovld atom_sub(volatile __local long *, long);
12946ulong __ovld atom_sub(volatile __local ulong *, ulong);
12947#endif
12948
12949/**
12950 * Swaps the old value stored at location p
12951 * with new value given by val. Returns old
12952 * value.
12953 */
12954int __ovld atomic_xchg(volatile __global int *, int);
12955uint __ovld atomic_xchg(volatile __global uint *, uint);
12956int __ovld atomic_xchg(volatile __local int *, int);
12957uint __ovld atomic_xchg(volatile __local uint *, uint);
12958float __ovld atomic_xchg(volatile __global float *, float);
12959float __ovld atomic_xchg(volatile __local float *, float);
12960#ifdef __OPENCL_CPP_VERSION__
12961int __ovld atomic_xchg(volatile int *, int);
12962uint __ovld atomic_xchg(volatile uint *, uint);
12963float __ovld atomic_xchg(volatile float *, float);
12964#endif
12965
12966#if defined(cl_khr_global_int32_base_atomics)
12967int __ovld atom_xchg(volatile __global int *, int);
12968uint __ovld atom_xchg(volatile __global uint *, uint);
12969#endif
12970#if defined(cl_khr_local_int32_base_atomics)
12971int __ovld atom_xchg(volatile __local int *, int);
12972uint __ovld atom_xchg(volatile __local uint *, uint);
12973#endif
12974
12975#if defined(cl_khr_int64_base_atomics)
12976long __ovld atom_xchg(volatile __global long *, long);
12977long __ovld atom_xchg(volatile __local long *, long);
12978ulong __ovld atom_xchg(volatile __global ulong *, ulong);
12979ulong __ovld atom_xchg(volatile __local ulong *, ulong);
12980#endif
12981
12982/**
12983 * Read the 32-bit value (referred to as old)
12984 * stored at location pointed by p. Compute
12985 * (old + 1) and store result at location
12986 * pointed by p. The function returns old.
12987 */
12988int __ovld atomic_inc(volatile __global int *);
12989uint __ovld atomic_inc(volatile __global uint *);
12990int __ovld atomic_inc(volatile __local int *);
12991uint __ovld atomic_inc(volatile __local uint *);
12992#ifdef __OPENCL_CPP_VERSION__
12993int __ovld atomic_inc(volatile int *);
12994uint __ovld atomic_inc(volatile uint *);
12995#endif
12996
12997#if defined(cl_khr_global_int32_base_atomics)
12998int __ovld atom_inc(volatile __global int *);
12999uint __ovld atom_inc(volatile __global uint *);
13000#endif
13001#if defined(cl_khr_local_int32_base_atomics)
13002int __ovld atom_inc(volatile __local int *);
13003uint __ovld atom_inc(volatile __local uint *);
13004#endif
13005
13006#if defined(cl_khr_int64_base_atomics)
13007long __ovld atom_inc(volatile __global long *);
13008ulong __ovld atom_inc(volatile __global ulong *);
13009long __ovld atom_inc(volatile __local long *);
13010ulong __ovld atom_inc(volatile __local ulong *);
13011#endif
13012
13013/**
13014 * Read the 32-bit value (referred to as old)
13015 * stored at location pointed by p. Compute
13016 * (old - 1) and store result at location
13017 * pointed by p. The function returns old.
13018 */
13019int __ovld atomic_dec(volatile __global int *);
13020uint __ovld atomic_dec(volatile __global uint *);
13021int __ovld atomic_dec(volatile __local int *);
13022uint __ovld atomic_dec(volatile __local uint *);
13023#ifdef __OPENCL_CPP_VERSION__
13024int __ovld atomic_dec(volatile int *);
13025uint __ovld atomic_dec(volatile uint *);
13026#endif
13027
13028#if defined(cl_khr_global_int32_base_atomics)
13029int __ovld atom_dec(volatile __global int *);
13030uint __ovld atom_dec(volatile __global uint *);
13031#endif
13032#if defined(cl_khr_local_int32_base_atomics)
13033int __ovld atom_dec(volatile __local int *);
13034uint __ovld atom_dec(volatile __local uint *);
13035#endif
13036
13037#if defined(cl_khr_int64_base_atomics)
13038long __ovld atom_dec(volatile __global long *);
13039ulong __ovld atom_dec(volatile __global ulong *);
13040long __ovld atom_dec(volatile __local long *);
13041ulong __ovld atom_dec(volatile __local ulong *);
13042#endif
13043
13044/**
13045 * Read the 32-bit value (referred to as old)
13046 * stored at location pointed by p. Compute
13047 * (old == cmp) ? val : old and store result at
13048 * location pointed by p. The function
13049 * returns old.
13050 */
13051int __ovld atomic_cmpxchg(volatile __global int *, int, int);
13052uint __ovld atomic_cmpxchg(volatile __global uint *, uint, uint);
13053int __ovld atomic_cmpxchg(volatile __local int *, int, int);
13054uint __ovld atomic_cmpxchg(volatile __local uint *, uint, uint);
13055#ifdef __OPENCL_CPP_VERSION__
13056int __ovld atomic_cmpxchg(volatile int *, int, int);
13057uint __ovld atomic_cmpxchg(volatile uint *, uint, uint);
13058#endif
13059
13060#if defined(cl_khr_global_int32_base_atomics)
13061int __ovld atom_cmpxchg(volatile __global int *, int, int);
13062uint __ovld atom_cmpxchg(volatile __global uint *, uint, uint);
13063#endif
13064#if defined(cl_khr_local_int32_base_atomics)
13065int __ovld atom_cmpxchg(volatile __local int *, int, int);
13066uint __ovld atom_cmpxchg(volatile __local uint *, uint, uint);
13067#endif
13068
13069#if defined(cl_khr_int64_base_atomics)
13070long __ovld atom_cmpxchg(volatile __global long *, long, long);
13071ulong __ovld atom_cmpxchg(volatile __global ulong *, ulong, ulong);
13072long __ovld atom_cmpxchg(volatile __local long *, long, long);
13073ulong __ovld atom_cmpxchg(volatile __local ulong *, ulong, ulong);
13074#endif
13075
13076/**
13077 * Read the 32-bit value (referred to as old)
13078 * stored at location pointed by p. Compute
13079 * min(old, val) and store minimum value at
13080 * location pointed by p. The function
13081 * returns old.
13082 */
13083int __ovld atomic_min(volatile __global int *, int);
13084uint __ovld atomic_min(volatile __global uint *, uint);
13085int __ovld atomic_min(volatile __local int *, int);
13086uint __ovld atomic_min(volatile __local uint *, uint);
13087#ifdef __OPENCL_CPP_VERSION__
13088int __ovld atomic_min(volatile int *, int);
13089uint __ovld atomic_min(volatile uint *, uint);
13090#endif
13091
13092#if defined(cl_khr_global_int32_extended_atomics)
13093int __ovld atom_min(volatile __global int *, int);
13094uint __ovld atom_min(volatile __global uint *, uint);
13095#endif
13096#if defined(cl_khr_local_int32_extended_atomics)
13097int __ovld atom_min(volatile __local int *, int);
13098uint __ovld atom_min(volatile __local uint *, uint);
13099#endif
13100
13101#if defined(cl_khr_int64_extended_atomics)
13102long __ovld atom_min(volatile __global long *, long);
13103ulong __ovld atom_min(volatile __global ulong *, ulong);
13104long __ovld atom_min(volatile __local long *, long);
13105ulong __ovld atom_min(volatile __local ulong *, ulong);
13106#endif
13107
13108/**
13109 * Read the 32-bit value (referred to as old)
13110 * stored at location pointed by p. Compute
13111 * max(old, val) and store maximum value at
13112 * location pointed by p. The function
13113 * returns old.
13114 */
13115int __ovld atomic_max(volatile __global int *, int);
13116uint __ovld atomic_max(volatile __global uint *, uint);
13117int __ovld atomic_max(volatile __local int *, int);
13118uint __ovld atomic_max(volatile __local uint *, uint);
13119#ifdef __OPENCL_CPP_VERSION__
13120int __ovld atomic_max(volatile int *, int);
13121uint __ovld atomic_max(volatile uint *, uint);
13122#endif
13123
13124#if defined(cl_khr_global_int32_extended_atomics)
13125int __ovld atom_max(volatile __global int *, int);
13126uint __ovld atom_max(volatile __global uint *, uint);
13127#endif
13128#if defined(cl_khr_local_int32_extended_atomics)
13129int __ovld atom_max(volatile __local int *, int);
13130uint __ovld atom_max(volatile __local uint *, uint);
13131#endif
13132
13133#if defined(cl_khr_int64_extended_atomics)
13134long __ovld atom_max(volatile __global long *, long);
13135ulong __ovld atom_max(volatile __global ulong *, ulong);
13136long __ovld atom_max(volatile __local long *, long);
13137ulong __ovld atom_max(volatile __local ulong *, ulong);
13138#endif
13139
13140/**
13141 * Read the 32-bit value (referred to as old)
13142 * stored at location pointed by p. Compute
13143 * (old & val) and store result at location
13144 * pointed by p. The function returns old.
13145 */
13146int __ovld atomic_and(volatile __global int *, int);
13147uint __ovld atomic_and(volatile __global uint *, uint);
13148int __ovld atomic_and(volatile __local int *, int);
13149uint __ovld atomic_and(volatile __local uint *, uint);
13150#ifdef __OPENCL_CPP_VERSION__
13151int __ovld atomic_and(volatile int *, int);
13152uint __ovld atomic_and(volatile uint *, uint);
13153#endif
13154
13155#if defined(cl_khr_global_int32_extended_atomics)
13156int __ovld atom_and(volatile __global int *, int);
13157uint __ovld atom_and(volatile __global uint *, uint);
13158#endif
13159#if defined(cl_khr_local_int32_extended_atomics)
13160int __ovld atom_and(volatile __local int *, int);
13161uint __ovld atom_and(volatile __local uint *, uint);
13162#endif
13163
13164#if defined(cl_khr_int64_extended_atomics)
13165long __ovld atom_and(volatile __global long *, long);
13166ulong __ovld atom_and(volatile __global ulong *, ulong);
13167long __ovld atom_and(volatile __local long *, long);
13168ulong __ovld atom_and(volatile __local ulong *, ulong);
13169#endif
13170
13171/**
13172 * Read the 32-bit value (referred to as old)
13173 * stored at location pointed by p. Compute
13174 * (old | val) and store result at location
13175 * pointed by p. The function returns old.
13176 */
13177int __ovld atomic_or(volatile __global int *, int);
13178uint __ovld atomic_or(volatile __global uint *, uint);
13179int __ovld atomic_or(volatile __local int *, int);
13180uint __ovld atomic_or(volatile __local uint *, uint);
13181#ifdef __OPENCL_CPP_VERSION__
13182int __ovld atomic_or(volatile int *, int);
13183uint __ovld atomic_or(volatile uint *, uint);
13184#endif
13185
13186#if defined(cl_khr_global_int32_extended_atomics)
13187int __ovld atom_or(volatile __global int *, int);
13188uint __ovld atom_or(volatile __global uint *, uint);
13189#endif
13190#if defined(cl_khr_local_int32_extended_atomics)
13191int __ovld atom_or(volatile __local int *, int);
13192uint __ovld atom_or(volatile __local uint *, uint);
13193#endif
13194
13195#if defined(cl_khr_int64_extended_atomics)
13196long __ovld atom_or(volatile __global long *, long);
13197ulong __ovld atom_or(volatile __global ulong *, ulong);
13198long __ovld atom_or(volatile __local long *, long);
13199ulong __ovld atom_or(volatile __local ulong *, ulong);
13200#endif
13201
13202/**
13203 * Read the 32-bit value (referred to as old)
13204 * stored at location pointed by p. Compute
13205 * (old ^ val) and store result at location
13206 * pointed by p. The function returns old.
13207 */
13208int __ovld atomic_xor(volatile __global int *, int);
13209uint __ovld atomic_xor(volatile __global uint *, uint);
13210int __ovld atomic_xor(volatile __local int *, int);
13211uint __ovld atomic_xor(volatile __local uint *, uint);
13212#ifdef __OPENCL_CPP_VERSION__
13213int __ovld atomic_xor(volatile int *, int);
13214uint __ovld atomic_xor(volatile uint *, uint);
13215#endif
13216
13217#if defined(cl_khr_global_int32_extended_atomics)
13218int __ovld atom_xor(volatile __global int *, int);
13219uint __ovld atom_xor(volatile __global uint *, uint);
13220#endif
13221#if defined(cl_khr_local_int32_extended_atomics)
13222int __ovld atom_xor(volatile __local int *, int);
13223uint __ovld atom_xor(volatile __local uint *, uint);
13224#endif
13225
13226#if defined(cl_khr_int64_extended_atomics)
13227long __ovld atom_xor(volatile __global long *, long);
13228ulong __ovld atom_xor(volatile __global ulong *, ulong);
13229long __ovld atom_xor(volatile __local long *, long);
13230ulong __ovld atom_xor(volatile __local ulong *, ulong);
13231#endif
13232
13233#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13234#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : disable
13235#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : disable
13236#endif
13237
13238// OpenCL v2.0 s6.13.11 - Atomics Functions
13239
13240#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
13241
13242// double atomics support requires extensions cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics
13243#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13244#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
13245#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
13246#endif
13247
13248// atomic_init()
13249#if defined(__opencl_c_generic_address_space)
13250void __ovld atomic_init(volatile atomic_int *, int);
13251void __ovld atomic_init(volatile atomic_uint *, uint);
13252void __ovld atomic_init(volatile atomic_float *, float);
13253#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13254void __ovld atomic_init(volatile atomic_long *, long);
13255void __ovld atomic_init(volatile atomic_ulong *, ulong);
13256#ifdef cl_khr_fp64
13257void __ovld atomic_init(volatile atomic_double *, double);
13258#endif //cl_khr_fp64
13259#endif
13260#endif //defined(__opencl_c_generic_address_space)
13261#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13262void __ovld atomic_init(volatile __global atomic_int *, int);
13263void __ovld atomic_init(volatile __local atomic_int *, int);
13264void __ovld atomic_init(volatile __global atomic_uint *, uint);
13265void __ovld atomic_init(volatile __local atomic_uint *, uint);
13266void __ovld atomic_init(volatile __global atomic_float *, float);
13267void __ovld atomic_init(volatile __local atomic_float *, float);
13268#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13269void __ovld atomic_init(volatile __global atomic_long *, long);
13270void __ovld atomic_init(volatile __local atomic_long *, long);
13271void __ovld atomic_init(volatile __global atomic_ulong *, ulong);
13272void __ovld atomic_init(volatile __local atomic_ulong *, ulong);
13273#ifdef cl_khr_fp64
13274void __ovld atomic_init(volatile __global atomic_double *, double);
13275void __ovld atomic_init(volatile __local atomic_double *, double);
13276#endif //cl_khr_fp64
13277#endif
13278#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13279
13280// atomic_work_item_fence()
13282
13283// atomic_fetch()
13284// OpenCL v2.0 s6.13.11.7.5:
13285// add/sub: atomic type argument can be uintptr_t/intptr_t, value type argument can be ptrdiff_t.
13286
13287#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
13288#if defined(__opencl_c_generic_address_space)
13289int __ovld atomic_fetch_add(volatile atomic_int *, int);
13290uint __ovld atomic_fetch_add(volatile atomic_uint *, uint);
13291int __ovld atomic_fetch_sub(volatile atomic_int *, int);
13292uint __ovld atomic_fetch_sub(volatile atomic_uint *, uint);
13293int __ovld atomic_fetch_or(volatile atomic_int *, int);
13294uint __ovld atomic_fetch_or(volatile atomic_uint *, uint);
13295int __ovld atomic_fetch_xor(volatile atomic_int *, int);
13296uint __ovld atomic_fetch_xor(volatile atomic_uint *, uint);
13297int __ovld atomic_fetch_and(volatile atomic_int *, int);
13298uint __ovld atomic_fetch_and(volatile atomic_uint *, uint);
13299int __ovld atomic_fetch_min(volatile atomic_int *, int);
13300uint __ovld atomic_fetch_min(volatile atomic_uint *, uint);
13301int __ovld atomic_fetch_max(volatile atomic_int *, int);
13302uint __ovld atomic_fetch_max(volatile atomic_uint *, uint);
13303#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13304long __ovld atomic_fetch_add(volatile atomic_long *, long);
13305ulong __ovld atomic_fetch_add(volatile atomic_ulong *, ulong);
13306long __ovld atomic_fetch_sub(volatile atomic_long *, long);
13307ulong __ovld atomic_fetch_sub(volatile atomic_ulong *, ulong);
13308long __ovld atomic_fetch_or(volatile atomic_long *, long);
13309ulong __ovld atomic_fetch_or(volatile atomic_ulong *, ulong);
13310long __ovld atomic_fetch_xor(volatile atomic_long *, long);
13311ulong __ovld atomic_fetch_xor(volatile atomic_ulong *, ulong);
13312long __ovld atomic_fetch_and(volatile atomic_long *, long);
13313ulong __ovld atomic_fetch_and(volatile atomic_ulong *, ulong);
13314long __ovld atomic_fetch_min(volatile atomic_long *, long);
13315ulong __ovld atomic_fetch_min(volatile atomic_ulong *, ulong);
13316long __ovld atomic_fetch_max(volatile atomic_long *, long);
13317ulong __ovld atomic_fetch_max(volatile atomic_ulong *, ulong);
13318uintptr_t __ovld atomic_fetch_add(volatile atomic_uintptr_t *, ptrdiff_t);
13319uintptr_t __ovld atomic_fetch_sub(volatile atomic_uintptr_t *, ptrdiff_t);
13320#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13321#endif //defined(__opencl_c_generic_address_space)
13322#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13323int __ovld atomic_fetch_add(volatile __global atomic_int *, int);
13324int __ovld atomic_fetch_add(volatile __local atomic_int *, int);
13325uint __ovld atomic_fetch_add(volatile __global atomic_uint *, uint);
13326uint __ovld atomic_fetch_add(volatile __local atomic_uint *, uint);
13327int __ovld atomic_fetch_sub(volatile __global atomic_int *, int);
13328int __ovld atomic_fetch_sub(volatile __local atomic_int *, int);
13329uint __ovld atomic_fetch_sub(volatile __global atomic_uint *, uint);
13330uint __ovld atomic_fetch_sub(volatile __local atomic_uint *, uint);
13331int __ovld atomic_fetch_or(volatile __global atomic_int *, int);
13332int __ovld atomic_fetch_or(volatile __local atomic_int *, int);
13333uint __ovld atomic_fetch_or(volatile __global atomic_uint *, uint);
13334uint __ovld atomic_fetch_or(volatile __local atomic_uint *, uint);
13335int __ovld atomic_fetch_xor(volatile __global atomic_int *, int);
13336int __ovld atomic_fetch_xor(volatile __local atomic_int *, int);
13337uint __ovld atomic_fetch_xor(volatile __global atomic_uint *, uint);
13338uint __ovld atomic_fetch_xor(volatile __local atomic_uint *, uint);
13339int __ovld atomic_fetch_and(volatile __global atomic_int *, int);
13340int __ovld atomic_fetch_and(volatile __local atomic_int *, int);
13341uint __ovld atomic_fetch_and(volatile __global atomic_uint *, uint);
13342uint __ovld atomic_fetch_and(volatile __local atomic_uint *, uint);
13343int __ovld atomic_fetch_min(volatile __global atomic_int *, int);
13344int __ovld atomic_fetch_min(volatile __local atomic_int *, int);
13345uint __ovld atomic_fetch_min(volatile __global atomic_uint *, uint);
13346uint __ovld atomic_fetch_min(volatile __local atomic_uint *, uint);
13347int __ovld atomic_fetch_max(volatile __global atomic_int *, int);
13348int __ovld atomic_fetch_max(volatile __local atomic_int *, int);
13349uint __ovld atomic_fetch_max(volatile __global atomic_uint *, uint);
13350uint __ovld atomic_fetch_max(volatile __local atomic_uint *, uint);
13351#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13352long __ovld atomic_fetch_add(volatile __global atomic_long *, long);
13353long __ovld atomic_fetch_add(volatile __local atomic_long *, long);
13354ulong __ovld atomic_fetch_add(volatile __global atomic_ulong *, ulong);
13355ulong __ovld atomic_fetch_add(volatile __local atomic_ulong *, ulong);
13356uintptr_t __ovld atomic_fetch_add(volatile __global atomic_uintptr_t *, ptrdiff_t);
13357uintptr_t __ovld atomic_fetch_add(volatile __local atomic_uintptr_t *, ptrdiff_t);
13358long __ovld atomic_fetch_sub(volatile __global atomic_long *, long);
13359long __ovld atomic_fetch_sub(volatile __local atomic_long *, long);
13360ulong __ovld atomic_fetch_sub(volatile __global atomic_ulong *, ulong);
13361ulong __ovld atomic_fetch_sub(volatile __local atomic_ulong *, ulong);
13362uintptr_t __ovld atomic_fetch_sub(volatile __global atomic_uintptr_t *, ptrdiff_t);
13363uintptr_t __ovld atomic_fetch_sub(volatile __local atomic_uintptr_t *, ptrdiff_t);
13364long __ovld atomic_fetch_or(volatile __global atomic_long *, long);
13365long __ovld atomic_fetch_or(volatile __local atomic_long *, long);
13366ulong __ovld atomic_fetch_or(volatile __global atomic_ulong *, ulong);
13367ulong __ovld atomic_fetch_or(volatile __local atomic_ulong *, ulong);
13368uintptr_t __ovld atomic_fetch_or(volatile __global atomic_uintptr_t *, intptr_t);
13369uintptr_t __ovld atomic_fetch_or(volatile __local atomic_uintptr_t *, intptr_t);
13370intptr_t __ovld atomic_fetch_or(volatile __global atomic_intptr_t *, uintptr_t);
13371intptr_t __ovld atomic_fetch_or(volatile __local atomic_intptr_t *, uintptr_t);
13372long __ovld atomic_fetch_xor(volatile __global atomic_long *, long);
13373long __ovld atomic_fetch_xor(volatile __local atomic_long *, long);
13374ulong __ovld atomic_fetch_xor(volatile __global atomic_ulong *, ulong);
13375ulong __ovld atomic_fetch_xor(volatile __local atomic_ulong *, ulong);
13376uintptr_t __ovld atomic_fetch_xor(volatile __global atomic_uintptr_t *, intptr_t);
13377uintptr_t __ovld atomic_fetch_xor(volatile __local atomic_uintptr_t *, intptr_t);
13378intptr_t __ovld atomic_fetch_xor(volatile __global atomic_intptr_t *, uintptr_t);
13379intptr_t __ovld atomic_fetch_xor(volatile __local atomic_intptr_t *, uintptr_t);
13380long __ovld atomic_fetch_and(volatile __global atomic_long *, long);
13381long __ovld atomic_fetch_and(volatile __local atomic_long *, long);
13382ulong __ovld atomic_fetch_and(volatile __global atomic_ulong *, ulong);
13383ulong __ovld atomic_fetch_and(volatile __local atomic_ulong *, ulong);
13384uintptr_t __ovld atomic_fetch_and(volatile __global atomic_uintptr_t *, intptr_t);
13385uintptr_t __ovld atomic_fetch_and(volatile __local atomic_uintptr_t *, intptr_t);
13386intptr_t __ovld atomic_fetch_and(volatile __global atomic_intptr_t *, uintptr_t);
13387intptr_t __ovld atomic_fetch_and(volatile __local atomic_intptr_t *, uintptr_t);
13388long __ovld atomic_fetch_min(volatile __global atomic_long *, long);
13389long __ovld atomic_fetch_min(volatile __local atomic_long *, long);
13390ulong __ovld atomic_fetch_min(volatile __global atomic_ulong *, ulong);
13391ulong __ovld atomic_fetch_min(volatile __local atomic_ulong *, ulong);
13392uintptr_t __ovld atomic_fetch_min(volatile __global atomic_uintptr_t *, intptr_t);
13393uintptr_t __ovld atomic_fetch_min(volatile __local atomic_uintptr_t *, intptr_t);
13394intptr_t __ovld atomic_fetch_min(volatile __global atomic_intptr_t *, uintptr_t);
13395intptr_t __ovld atomic_fetch_min(volatile __local atomic_intptr_t *, uintptr_t);
13396long __ovld atomic_fetch_max(volatile __global atomic_long *, long);
13397long __ovld atomic_fetch_max(volatile __local atomic_long *, long);
13398ulong __ovld atomic_fetch_max(volatile __global atomic_ulong *, ulong);
13399ulong __ovld atomic_fetch_max(volatile __local atomic_ulong *, ulong);
13400uintptr_t __ovld atomic_fetch_max(volatile __global atomic_uintptr_t *, uintptr_t);
13401uintptr_t __ovld atomic_fetch_max(volatile __local atomic_uintptr_t *, uintptr_t);
13402#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13403#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13404#endif
13405
13406#if defined(__opencl_c_atomic_scope_device)
13407#if defined(__opencl_c_generic_address_space)
13408int __ovld atomic_fetch_add_explicit(volatile atomic_int *, int, memory_order);
13409uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *, uint, memory_order);
13410int __ovld atomic_fetch_sub_explicit(volatile atomic_int *, int, memory_order);
13411uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *, uint, memory_order);
13412int __ovld atomic_fetch_or_explicit(volatile atomic_int *, int, memory_order);
13413uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *, uint, memory_order);
13414int __ovld atomic_fetch_xor_explicit(volatile atomic_int *, int, memory_order);
13415uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *, uint, memory_order);
13416int __ovld atomic_fetch_and_explicit(volatile atomic_int *, int, memory_order);
13417uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *, uint, memory_order);
13418int __ovld atomic_fetch_min_explicit(volatile atomic_int *, int, memory_order);
13419uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *, uint, memory_order);
13420int __ovld atomic_fetch_max_explicit(volatile atomic_int *, int, memory_order);
13421uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *, uint, memory_order);
13422#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13423long __ovld atomic_fetch_add_explicit(volatile atomic_long *, long, memory_order);
13424ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *, ulong, memory_order);
13425long __ovld atomic_fetch_sub_explicit(volatile atomic_long *, long, memory_order);
13426ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *, ulong, memory_order);
13427long __ovld atomic_fetch_or_explicit(volatile atomic_long *, long, memory_order);
13428ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *, ulong, memory_order);
13429long __ovld atomic_fetch_xor_explicit(volatile atomic_long *, long, memory_order);
13430ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *, ulong, memory_order);
13431long __ovld atomic_fetch_and_explicit(volatile atomic_long *, long, memory_order);
13432ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *, ulong, memory_order);
13433long __ovld atomic_fetch_min_explicit(volatile atomic_long *, long, memory_order);
13434ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *, ulong, memory_order);
13435long __ovld atomic_fetch_max_explicit(volatile atomic_long *, long, memory_order);
13436ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *, ulong, memory_order);
13437uintptr_t __ovld atomic_fetch_add_explicit(volatile atomic_uintptr_t *, ptrdiff_t, memory_order);
13438uintptr_t __ovld atomic_fetch_sub_explicit(volatile atomic_uintptr_t *, ptrdiff_t, memory_order);
13439#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13440#endif //defined(__opencl_c_generic_address_space)
13441#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13442int __ovld atomic_fetch_add_explicit(volatile __global atomic_int *, int, memory_order);
13443int __ovld atomic_fetch_add_explicit(volatile __local atomic_int *, int, memory_order);
13444uint __ovld atomic_fetch_add_explicit(volatile __global atomic_uint *, uint, memory_order);
13445uint __ovld atomic_fetch_add_explicit(volatile __local atomic_uint *, uint, memory_order);
13446int __ovld atomic_fetch_sub_explicit(volatile __global atomic_int *, int, memory_order);
13447int __ovld atomic_fetch_sub_explicit(volatile __local atomic_int *, int, memory_order);
13448uint __ovld atomic_fetch_sub_explicit(volatile __global atomic_uint *, uint, memory_order);
13449uint __ovld atomic_fetch_sub_explicit(volatile __local atomic_uint *, uint, memory_order);
13450int __ovld atomic_fetch_or_explicit(volatile __global atomic_int *, int, memory_order);
13451int __ovld atomic_fetch_or_explicit(volatile __local atomic_int *, int, memory_order);
13452uint __ovld atomic_fetch_or_explicit(volatile __global atomic_uint *, uint, memory_order);
13453uint __ovld atomic_fetch_or_explicit(volatile __local atomic_uint *, uint, memory_order);
13454int __ovld atomic_fetch_xor_explicit(volatile __global atomic_int *, int, memory_order);
13455int __ovld atomic_fetch_xor_explicit(volatile __local atomic_int *, int, memory_order);
13456uint __ovld atomic_fetch_xor_explicit(volatile __global atomic_uint *, uint, memory_order);
13457uint __ovld atomic_fetch_xor_explicit(volatile __local atomic_uint *, uint, memory_order);
13458int __ovld atomic_fetch_and_explicit(volatile __global atomic_int *, int, memory_order);
13459int __ovld atomic_fetch_and_explicit(volatile __local atomic_int *, int, memory_order);
13460uint __ovld atomic_fetch_and_explicit(volatile __global atomic_uint *, uint, memory_order);
13461uint __ovld atomic_fetch_and_explicit(volatile __local atomic_uint *, uint, memory_order);
13462int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order);
13463int __ovld atomic_fetch_min_explicit(volatile __local atomic_int *, int, memory_order);
13464uint __ovld atomic_fetch_min_explicit(volatile __global atomic_uint *, uint, memory_order);
13465uint __ovld atomic_fetch_min_explicit(volatile __local atomic_uint *, uint, memory_order);
13466int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order);
13467int __ovld atomic_fetch_max_explicit(volatile __local atomic_int *, int, memory_order);
13468uint __ovld atomic_fetch_max_explicit(volatile __global atomic_uint *, uint, memory_order);
13469uint __ovld atomic_fetch_max_explicit(volatile __local atomic_uint *, uint, memory_order);
13470#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13471long __ovld atomic_fetch_add_explicit(volatile __global atomic_long *, long, memory_order);
13472long __ovld atomic_fetch_add_explicit(volatile __local atomic_long *, long, memory_order);
13473ulong __ovld atomic_fetch_add_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13474ulong __ovld atomic_fetch_add_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13475uintptr_t __ovld atomic_fetch_add_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order);
13476uintptr_t __ovld atomic_fetch_add_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order);
13477long __ovld atomic_fetch_sub_explicit(volatile __global atomic_long *, long, memory_order);
13478long __ovld atomic_fetch_sub_explicit(volatile __local atomic_long *, long, memory_order);
13479ulong __ovld atomic_fetch_sub_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13480ulong __ovld atomic_fetch_sub_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13481uintptr_t __ovld atomic_fetch_sub_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order);
13482uintptr_t __ovld atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order);
13483long __ovld atomic_fetch_or_explicit(volatile __global atomic_long *, long, memory_order);
13484long __ovld atomic_fetch_or_explicit(volatile __local atomic_long *, long, memory_order);
13485ulong __ovld atomic_fetch_or_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13486ulong __ovld atomic_fetch_or_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13487uintptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13488uintptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13489intptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13490intptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13491long __ovld atomic_fetch_xor_explicit(volatile __global atomic_long *, long, memory_order);
13492long __ovld atomic_fetch_xor_explicit(volatile __local atomic_long *, long, memory_order);
13493ulong __ovld atomic_fetch_xor_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13494ulong __ovld atomic_fetch_xor_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13495uintptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13496uintptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13497intptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13498intptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13499long __ovld atomic_fetch_and_explicit(volatile __global atomic_long *, long, memory_order);
13500long __ovld atomic_fetch_and_explicit(volatile __local atomic_long *, long, memory_order);
13501ulong __ovld atomic_fetch_and_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13502ulong __ovld atomic_fetch_and_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13503uintptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13504uintptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13505intptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13506intptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13507long __ovld atomic_fetch_min_explicit(volatile __global atomic_long *, long, memory_order);
13508long __ovld atomic_fetch_min_explicit(volatile __local atomic_long *, long, memory_order);
13509ulong __ovld atomic_fetch_min_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13510ulong __ovld atomic_fetch_min_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13511uintptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13512uintptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13513intptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13514intptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13515long __ovld atomic_fetch_max_explicit(volatile __global atomic_long *, long, memory_order);
13516long __ovld atomic_fetch_max_explicit(volatile __local atomic_long *, long, memory_order);
13517ulong __ovld atomic_fetch_max_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13518ulong __ovld atomic_fetch_max_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13519uintptr_t __ovld atomic_fetch_max_explicit(volatile __global atomic_uintptr_t *, uintptr_t, memory_order);
13520uintptr_t __ovld atomic_fetch_max_explicit(volatile __local atomic_uintptr_t *, uintptr_t, memory_order);
13521#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13522#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13523#endif
13524
13525#if defined(__opencl_c_generic_address_space)
13526int __ovld atomic_fetch_add_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13528int __ovld atomic_fetch_sub_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13530int __ovld atomic_fetch_or_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13532int __ovld atomic_fetch_xor_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13534int __ovld atomic_fetch_and_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13536int __ovld atomic_fetch_min_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13538int __ovld atomic_fetch_max_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13540#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13541long __ovld atomic_fetch_add_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13543long __ovld atomic_fetch_sub_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13545long __ovld atomic_fetch_or_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13547long __ovld atomic_fetch_xor_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13549long __ovld atomic_fetch_and_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13551long __ovld atomic_fetch_min_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13553long __ovld atomic_fetch_max_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13557#endif
13558#endif //defined(__opencl_c_generic_address_space)
13559#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13560int __ovld atomic_fetch_add_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13561int __ovld atomic_fetch_add_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13564int __ovld atomic_fetch_sub_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13565int __ovld atomic_fetch_sub_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13568int __ovld atomic_fetch_or_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13569int __ovld atomic_fetch_or_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13572int __ovld atomic_fetch_xor_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13573int __ovld atomic_fetch_xor_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13576int __ovld atomic_fetch_and_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13577int __ovld atomic_fetch_and_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13580int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13581int __ovld atomic_fetch_min_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13584int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13585int __ovld atomic_fetch_max_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13588#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13589long __ovld atomic_fetch_add_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13590long __ovld atomic_fetch_add_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13591uintptr_t __ovld atomic_fetch_add_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13592uintptr_t __ovld atomic_fetch_add_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13593ulong __ovld atomic_fetch_add_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13594ulong __ovld atomic_fetch_add_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13595long __ovld atomic_fetch_sub_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13596long __ovld atomic_fetch_sub_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13597ulong __ovld atomic_fetch_sub_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13598ulong __ovld atomic_fetch_sub_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13599uintptr_t __ovld atomic_fetch_sub_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13600uintptr_t __ovld atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13601long __ovld atomic_fetch_or_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13602long __ovld atomic_fetch_or_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13603ulong __ovld atomic_fetch_or_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13604ulong __ovld atomic_fetch_or_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13605uintptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13606uintptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13607intptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13608intptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13609long __ovld atomic_fetch_xor_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13610long __ovld atomic_fetch_xor_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13611ulong __ovld atomic_fetch_xor_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13612ulong __ovld atomic_fetch_xor_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13613uintptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13614uintptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13615intptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13616intptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13617long __ovld atomic_fetch_and_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13618long __ovld atomic_fetch_and_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13619ulong __ovld atomic_fetch_and_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13620ulong __ovld atomic_fetch_and_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13621uintptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13622uintptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13623intptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13624intptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13625long __ovld atomic_fetch_min_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13626long __ovld atomic_fetch_min_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13627ulong __ovld atomic_fetch_min_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13628ulong __ovld atomic_fetch_min_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13629uintptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13630uintptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13631intptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13632intptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13633long __ovld atomic_fetch_max_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13634long __ovld atomic_fetch_max_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13635ulong __ovld atomic_fetch_max_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13636ulong __ovld atomic_fetch_max_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13637uintptr_t __ovld atomic_fetch_max_explicit(volatile __global atomic_uintptr_t *, uintptr_t, memory_order, memory_scope);
13638uintptr_t __ovld atomic_fetch_max_explicit(volatile __local atomic_uintptr_t *, uintptr_t, memory_order, memory_scope);
13639#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13640#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13641
13642// The functionality added by cl_ext_float_atomics extension
13643#if defined(cl_ext_float_atomics)
13644
13645#if defined(__opencl_c_ext_fp16_global_atomic_load_store)
13646void __ovld atomic_store(volatile __global atomic_half *, half);
13647void __ovld atomic_store_explicit(volatile __global atomic_half *,
13648 half, memory_order);
13649void __ovld atomic_store_explicit(volatile __global atomic_half *,
13650 half, memory_order, memory_scope);
13651half __ovld atomic_load(volatile __global atomic_half *);
13652half __ovld atomic_load_explicit(volatile __global atomic_half *,
13653 memory_order);
13654half __ovld atomic_load_explicit(volatile __global atomic_half *,
13656half __ovld atomic_exchange(volatile __global atomic_half *, half);
13657half __ovld atomic_exchange_explicit(volatile __global atomic_half *,
13658 half, memory_order);
13659half __ovld atomic_exchange_explicit(volatile __global atomic_half *,
13660 half, memory_order, memory_scope);
13661#endif // defined(__opencl_c_ext_fp16_global_atomic_load_store)
13662
13663#if defined(__opencl_c_ext_fp16_local_atomic_load_store)
13664void __ovld atomic_store(volatile __local atomic_half *, half);
13665void __ovld atomic_store_explicit(volatile __local atomic_half *,
13666 half, memory_order);
13667void __ovld atomic_store_explicit(volatile __local atomic_half *,
13668 half, memory_order, memory_scope);
13669half __ovld atomic_load(volatile __local atomic_half *);
13670half __ovld atomic_load_explicit(volatile __local atomic_half *,
13671 memory_order);
13672half __ovld atomic_load_explicit(volatile __local atomic_half *,
13674half __ovld atomic_exchange(volatile __local atomic_half *, half);
13675half __ovld atomic_exchange_explicit(volatile __local atomic_half *,
13676 half, memory_order);
13677half __ovld atomic_exchange_explicit(volatile __local atomic_half *,
13678 half, memory_order, memory_scope);
13679#endif // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13680
13681#if defined(__opencl_c_ext_fp16_global_atomic_load_store) && \
13682 defined(__opencl_c_ext_fp16_local_atomic_load_store)
13683void __ovld atomic_store(volatile atomic_half *, half);
13684void __ovld atomic_store_explicit(volatile atomic_half *, half,
13685 memory_order);
13686void __ovld atomic_store_explicit(volatile atomic_half *, half,
13688half __ovld atomic_load(volatile atomic_half *);
13689half __ovld atomic_load_explicit(volatile atomic_half *,
13690 memory_order);
13691half __ovld atomic_load_explicit(volatile atomic_half *,
13693half __ovld atomic_exchange(volatile atomic_half *, half);
13694half __ovld atomic_exchange_explicit(volatile atomic_half *, half,
13695 memory_order);
13696half __ovld atomic_exchange_explicit(volatile atomic_half *, half,
13698#endif // defined(__opencl_c_ext_fp16_global_atomic_load_store) &&
13699 // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13700
13701#if defined(__opencl_c_ext_fp16_global_atomic_min_max)
13702half __ovld atomic_fetch_min(volatile __global atomic_half *, half);
13703half __ovld atomic_fetch_max(volatile __global atomic_half *, half);
13704half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *,
13705 half, memory_order);
13706half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *,
13707 half, memory_order);
13708half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *,
13709 half, memory_order, memory_scope);
13710half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *,
13711 half, memory_order, memory_scope);
13712#endif // defined(__opencl_c_ext_fp16_global_atomic_min_max)
13713
13714#if defined(__opencl_c_ext_fp16_local_atomic_min_max)
13715half __ovld atomic_fetch_min(volatile __local atomic_half *, half);
13716half __ovld atomic_fetch_max(volatile __local atomic_half *, half);
13717half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *,
13718 half, memory_order);
13719half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *,
13720 half, memory_order);
13721half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *,
13722 half, memory_order, memory_scope);
13723half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *,
13724 half, memory_order, memory_scope);
13725#endif // defined(__opencl_c_ext_fp16_local_atomic_min_max)
13726
13727#if defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13728 defined(__opencl_c_ext_fp16_local_atomic_min_max)
13729half __ovld atomic_fetch_min(volatile atomic_half *, half);
13730half __ovld atomic_fetch_max(volatile atomic_half *, half);
13731half __ovld atomic_fetch_min_explicit(volatile atomic_half *,
13732 half, memory_order);
13733half __ovld atomic_fetch_max_explicit(volatile atomic_half *,
13734 half, memory_order);
13735half __ovld atomic_fetch_min_explicit(volatile atomic_half *,
13736 half, memory_order, memory_scope);
13737half __ovld atomic_fetch_max_explicit(volatile atomic_half *,
13738 half, memory_order, memory_scope);
13739#endif // defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13740 defined(__opencl_c_ext_fp16_local_atomic_min_max)
13741
13742#if defined(__opencl_c_ext_fp32_global_atomic_min_max)
13743float __ovld atomic_fetch_min(volatile __global atomic_float *, float);
13744float __ovld atomic_fetch_max(volatile __global atomic_float *, float);
13745float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *,
13746 float, memory_order);
13747float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *,
13748 float, memory_order);
13749float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *,
13750 float, memory_order, memory_scope);
13751float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *,
13752 float, memory_order, memory_scope);
13753#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max)
13754
13755#if defined(__opencl_c_ext_fp32_local_atomic_min_max)
13756float __ovld atomic_fetch_min(volatile __local atomic_float *, float);
13757float __ovld atomic_fetch_max(volatile __local atomic_float *, float);
13758float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *,
13759 float, memory_order);
13760float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *,
13761 float, memory_order);
13762float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *,
13763 float, memory_order, memory_scope);
13764float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *,
13765 float, memory_order, memory_scope);
13766#endif // defined(__opencl_c_ext_fp32_local_atomic_min_max)
13767
13768#if defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
13769 defined(__opencl_c_ext_fp32_local_atomic_min_max)
13770float __ovld atomic_fetch_min(volatile atomic_float *, float);
13771float __ovld atomic_fetch_max(volatile atomic_float *, float);
13772float __ovld atomic_fetch_min_explicit(volatile atomic_float *,
13773 float, memory_order);
13774float __ovld atomic_fetch_max_explicit(volatile atomic_float *,
13775 float, memory_order);
13776float __ovld atomic_fetch_min_explicit(volatile atomic_float *,
13777 float, memory_order, memory_scope);
13778float __ovld atomic_fetch_max_explicit(volatile atomic_float *,
13779 float, memory_order, memory_scope);
13780#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
13781 defined(__opencl_c_ext_fp32_local_atomic_min_max)
13782
13783#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13784#if defined(__opencl_c_ext_fp64_global_atomic_min_max)
13785double __ovld atomic_fetch_min(volatile __global atomic_double *, double);
13786double __ovld atomic_fetch_max(volatile __global atomic_double *, double);
13787double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *,
13788 double, memory_order);
13789double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *,
13790 double, memory_order);
13791double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *,
13792 double, memory_order, memory_scope);
13793double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *,
13794 double, memory_order, memory_scope);
13795#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max)
13796
13797#if defined(__opencl_c_ext_fp64_local_atomic_min_max)
13798double __ovld atomic_fetch_min(volatile __local atomic_double *, double);
13799double __ovld atomic_fetch_max(volatile __local atomic_double *, double);
13800double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *,
13801 double, memory_order);
13802double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *,
13803 double, memory_order);
13804double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *,
13805 double, memory_order, memory_scope);
13806double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *,
13807 double, memory_order, memory_scope);
13808#endif // defined(__opencl_c_ext_fp64_local_atomic_min_max)
13809
13810#if defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
13811 defined(__opencl_c_ext_fp64_local_atomic_min_max)
13812double __ovld atomic_fetch_min(volatile atomic_double *, double);
13813double __ovld atomic_fetch_max(volatile atomic_double *, double);
13814double __ovld atomic_fetch_min_explicit(volatile atomic_double *,
13815 double, memory_order);
13816double __ovld atomic_fetch_max_explicit(volatile atomic_double *,
13817 double, memory_order);
13818double __ovld atomic_fetch_min_explicit(volatile atomic_double *,
13819 double, memory_order, memory_scope);
13820double __ovld atomic_fetch_max_explicit(volatile atomic_double *,
13821 double, memory_order, memory_scope);
13822#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
13823 defined(__opencl_c_ext_fp64_local_atomic_min_max)
13824#endif // defined(cl_khr_int64_base_atomics) && \
13825 defined(cl_khr_int64_extended_atomics)
13826
13827#if defined(__opencl_c_ext_fp16_global_atomic_add)
13828half __ovld atomic_fetch_add(volatile __global atomic_half *, half);
13829half __ovld atomic_fetch_sub(volatile __global atomic_half *, half);
13830half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *,
13831 half, memory_order);
13832half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *,
13833 half, memory_order);
13834half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *,
13835 half, memory_order, memory_scope);
13836half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *,
13837 half, memory_order, memory_scope);
13838#endif // defined(__opencl_c_ext_fp16_global_atomic_add)
13839
13840#if defined(__opencl_c_ext_fp16_local_atomic_add)
13841half __ovld atomic_fetch_add(volatile __local atomic_half *, half);
13842half __ovld atomic_fetch_sub(volatile __local atomic_half *, half);
13843half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *,
13844 half, memory_order);
13845half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *,
13846 half, memory_order);
13847half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *,
13848 half, memory_order, memory_scope);
13849half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *,
13850 half, memory_order, memory_scope);
13851#endif // defined(__opencl_c_ext_fp16_local_atomic_add)
13852
13853#if defined(__opencl_c_ext_fp16_global_atomic_add) && \
13854 defined(__opencl_c_ext_fp16_local_atomic_add)
13855half __ovld atomic_fetch_add(volatile atomic_half *, half);
13856half __ovld atomic_fetch_sub(volatile atomic_half *, half);
13857half __ovld atomic_fetch_add_explicit(volatile atomic_half *,
13858 half, memory_order);
13859half __ovld atomic_fetch_sub_explicit(volatile atomic_half *,
13860 half, memory_order);
13861half __ovld atomic_fetch_add_explicit(volatile atomic_half *,
13862 half, memory_order, memory_scope);
13863half __ovld atomic_fetch_sub_explicit(volatile atomic_half *,
13864 half, memory_order, memory_scope);
13865#endif // defined(__opencl_c_ext_fp16_global_atomic_add) && \
13866 defined(__opencl_c_ext_fp16_local_atomic_add)
13867
13868#if defined(__opencl_c_ext_fp32_global_atomic_add)
13869float __ovld atomic_fetch_add(volatile __global atomic_float *, float);
13870float __ovld atomic_fetch_sub(volatile __global atomic_float *, float);
13871float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *,
13872 float, memory_order);
13873float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *,
13874 float, memory_order);
13875float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *,
13876 float, memory_order, memory_scope);
13877float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *,
13878 float, memory_order, memory_scope);
13879#endif // defined(__opencl_c_ext_fp32_global_atomic_add)
13880
13881#if defined(__opencl_c_ext_fp32_local_atomic_add)
13882float __ovld atomic_fetch_add(volatile __local atomic_float *, float);
13883float __ovld atomic_fetch_sub(volatile __local atomic_float *, float);
13884float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *,
13885 float, memory_order);
13886float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *,
13887 float, memory_order);
13888float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *,
13889 float, memory_order, memory_scope);
13890float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *,
13891 float, memory_order, memory_scope);
13892#endif // defined(__opencl_c_ext_fp32_local_atomic_add)
13893
13894#if defined(__opencl_c_ext_fp32_global_atomic_add) && \
13895 defined(__opencl_c_ext_fp32_local_atomic_add)
13896float __ovld atomic_fetch_add(volatile atomic_float *, float);
13897float __ovld atomic_fetch_sub(volatile atomic_float *, float);
13898float __ovld atomic_fetch_add_explicit(volatile atomic_float *,
13899 float, memory_order);
13900float __ovld atomic_fetch_sub_explicit(volatile atomic_float *,
13901 float, memory_order);
13902float __ovld atomic_fetch_add_explicit(volatile atomic_float *,
13903 float, memory_order, memory_scope);
13904float __ovld atomic_fetch_sub_explicit(volatile atomic_float *,
13905 float, memory_order, memory_scope);
13906#endif // defined(__opencl_c_ext_fp32_global_atomic_add) && \
13907 defined(__opencl_c_ext_fp32_local_atomic_add)
13908
13909#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13910#if defined(__opencl_c_ext_fp64_global_atomic_add)
13911double __ovld atomic_fetch_add(volatile __global atomic_double *, double);
13912double __ovld atomic_fetch_sub(volatile __global atomic_double *, double);
13913double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *,
13914 double, memory_order);
13915double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *,
13916 double, memory_order);
13917double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *,
13918 double, memory_order, memory_scope);
13919double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *,
13920 double, memory_order, memory_scope);
13921#endif // defined(__opencl_c_ext_fp64_global_atomic_add)
13922
13923#if defined(__opencl_c_ext_fp64_local_atomic_add)
13924double __ovld atomic_fetch_add(volatile __local atomic_double *, double);
13925double __ovld atomic_fetch_sub(volatile __local atomic_double *, double);
13926double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *,
13927 double, memory_order);
13928double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *,
13929 double, memory_order);
13930double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *,
13931 double, memory_order, memory_scope);
13932double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *,
13933 double, memory_order, memory_scope);
13934#endif // defined(__opencl_c_ext_fp64_local_atomic_add)
13935
13936#if defined(__opencl_c_ext_fp64_global_atomic_add) && \
13937 defined(__opencl_c_ext_fp64_local_atomic_add)
13938double __ovld atomic_fetch_add(volatile atomic_double *, double);
13939double __ovld atomic_fetch_sub(volatile atomic_double *, double);
13940double __ovld atomic_fetch_add_explicit(volatile atomic_double *,
13941 double, memory_order);
13942double __ovld atomic_fetch_sub_explicit(volatile atomic_double *,
13943 double, memory_order);
13944double __ovld atomic_fetch_add_explicit(volatile atomic_double *,
13945 double, memory_order, memory_scope);
13946double __ovld atomic_fetch_sub_explicit(volatile atomic_double *,
13947 double, memory_order, memory_scope);
13948#endif // defined(__opencl_c_ext_fp64_global_atomic_add) && \
13949 defined(__opencl_c_ext_fp64_local_atomic_add)
13950#endif // defined(cl_khr_int64_base_atomics) && \
13951 defined(cl_khr_int64_extended_atomics)
13952
13953#endif // cl_ext_float_atomics
13954
13955// atomic_store()
13956
13957#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
13958#if defined(__opencl_c_generic_address_space)
13959void __ovld atomic_store(volatile atomic_int *, int);
13960void __ovld atomic_store(volatile atomic_uint *, uint);
13961void __ovld atomic_store(volatile atomic_float *, float);
13962
13963#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13964#ifdef cl_khr_fp64
13965void __ovld atomic_store(volatile atomic_double *, double);
13966#endif //cl_khr_fp64
13967void __ovld atomic_store(volatile atomic_long *, long);
13968void __ovld atomic_store(volatile atomic_ulong *, ulong);
13969#endif
13970#endif //defined(__opencl_c_generic_address_space)
13971#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13972void __ovld atomic_store(volatile __global atomic_int *, int);
13973void __ovld atomic_store(volatile __local atomic_int *, int);
13974void __ovld atomic_store(volatile __global atomic_uint *, uint);
13975void __ovld atomic_store(volatile __local atomic_uint *, uint);
13976void __ovld atomic_store(volatile __global atomic_float *, float);
13977void __ovld atomic_store(volatile __local atomic_float *, float);
13978#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13979#ifdef cl_khr_fp64
13980void __ovld atomic_store(volatile __global atomic_double *, double);
13981void __ovld atomic_store(volatile __local atomic_double *, double);
13982#endif //cl_khr_fp64
13983void __ovld atomic_store(volatile __global atomic_long *, long);
13984void __ovld atomic_store(volatile __local atomic_long *, long);
13985void __ovld atomic_store(volatile __global atomic_ulong *, ulong);
13986void __ovld atomic_store(volatile __local atomic_ulong *, ulong);
13987#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13988#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13989#endif
13990
13991#if defined(__opencl_c_atomic_scope_device)
13992#if defined(__opencl_c_generic_address_space)
13993void __ovld atomic_store_explicit(volatile atomic_int *, int, memory_order);
13994void __ovld atomic_store_explicit(volatile atomic_uint *, uint, memory_order);
13995void __ovld atomic_store_explicit(volatile atomic_float *, float, memory_order);
13996#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13997#ifdef cl_khr_fp64
13998void __ovld atomic_store_explicit(volatile atomic_double *, double, memory_order);
13999#endif //cl_khr_fp64
14000void __ovld atomic_store_explicit(volatile atomic_long *, long, memory_order);
14001void __ovld atomic_store_explicit(volatile atomic_ulong *, ulong, memory_order);
14002#endif
14003#endif //defined(__opencl_c_generic_address_space)
14004#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14005void __ovld atomic_store_explicit(volatile __global atomic_int *, int, memory_order);
14006void __ovld atomic_store_explicit(volatile __local atomic_int *, int, memory_order);
14007void __ovld atomic_store_explicit(volatile __global atomic_uint *, uint, memory_order);
14008void __ovld atomic_store_explicit(volatile __local atomic_uint *, uint, memory_order);
14009void __ovld atomic_store_explicit(volatile __global atomic_float *, float, memory_order);
14010void __ovld atomic_store_explicit(volatile __local atomic_float *, float, memory_order);
14011#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14012#ifdef cl_khr_fp64
14013void __ovld atomic_store_explicit(volatile __global atomic_double *, double, memory_order);
14014void __ovld atomic_store_explicit(volatile __local atomic_double *, double, memory_order);
14015#endif
14016void __ovld atomic_store_explicit(volatile __global atomic_long *, long, memory_order);
14017void __ovld atomic_store_explicit(volatile __local atomic_long *, long, memory_order);
14018void __ovld atomic_store_explicit(volatile __global atomic_ulong *, ulong, memory_order);
14019void __ovld atomic_store_explicit(volatile __local atomic_ulong *, ulong, memory_order);
14020#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14021#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14022#endif
14023
14024#if defined(__opencl_c_generic_address_space)
14025void __ovld atomic_store_explicit(volatile atomic_int *, int, memory_order, memory_scope);
14026void __ovld atomic_store_explicit(volatile atomic_uint *, uint, memory_order, memory_scope);
14027void __ovld atomic_store_explicit(volatile atomic_float *, float, memory_order, memory_scope);
14028#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14029#ifdef cl_khr_fp64
14030void __ovld atomic_store_explicit(volatile atomic_double *, double, memory_order, memory_scope);
14031#endif //cl_khr_fp64
14032void __ovld atomic_store_explicit(volatile atomic_long *, long, memory_order, memory_scope);
14033void __ovld atomic_store_explicit(volatile atomic_ulong *, ulong, memory_order, memory_scope);
14034#endif
14035#endif //defined(__opencl_c_generic_address_space)
14036#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14037void __ovld atomic_store_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
14038void __ovld atomic_store_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
14039void __ovld atomic_store_explicit(volatile __global atomic_uint *, uint, memory_order, memory_scope);
14040void __ovld atomic_store_explicit(volatile __local atomic_uint *, uint, memory_order, memory_scope);
14041void __ovld atomic_store_explicit(volatile __global atomic_float *, float, memory_order, memory_scope);
14042void __ovld atomic_store_explicit(volatile __local atomic_float *, float, memory_order, memory_scope);
14043#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14044#ifdef cl_khr_fp64
14045void __ovld atomic_store_explicit(volatile __global atomic_double *, double, memory_order, memory_scope);
14046void __ovld atomic_store_explicit(volatile __local atomic_double *, double, memory_order, memory_scope);
14047#endif //cl_khr_fp64
14048void __ovld atomic_store_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
14049void __ovld atomic_store_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
14050void __ovld atomic_store_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
14051void __ovld atomic_store_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
14052#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14053#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14054
14055// atomic_load()
14056#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14057#if defined(__opencl_c_generic_address_space)
14058int __ovld atomic_load(volatile atomic_int *);
14059uint __ovld atomic_load(volatile atomic_uint *);
14060float __ovld atomic_load(volatile atomic_float *);
14061#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14062#ifdef cl_khr_fp64
14063double __ovld atomic_load(volatile atomic_double *);
14064#endif //cl_khr_fp64
14065long __ovld atomic_load(volatile atomic_long *);
14066ulong __ovld atomic_load(volatile atomic_ulong *);
14067#endif
14068#endif //defined(__opencl_c_generic_address_space)
14069#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14070int __ovld atomic_load(volatile __global atomic_int *);
14071int __ovld atomic_load(volatile __local atomic_int *);
14072uint __ovld atomic_load(volatile __global atomic_uint *);
14073uint __ovld atomic_load(volatile __local atomic_uint *);
14074float __ovld atomic_load(volatile __global atomic_float *);
14075float __ovld atomic_load(volatile __local atomic_float *);
14076#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14077#ifdef cl_khr_fp64
14078double __ovld atomic_load(volatile __global atomic_double *);
14079double __ovld atomic_load(volatile __local atomic_double *);
14080#endif //cl_khr_fp64
14081long __ovld atomic_load(volatile __global atomic_long *);
14082long __ovld atomic_load(volatile __local atomic_long *);
14083ulong __ovld atomic_load(volatile __global atomic_ulong *);
14084ulong __ovld atomic_load(volatile __local atomic_ulong *);
14085#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14086#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14087#endif
14088
14089#if defined(__opencl_c_atomic_scope_device)
14090#if defined(__opencl_c_generic_address_space)
14091int __ovld atomic_load_explicit(volatile atomic_int *, memory_order);
14092uint __ovld atomic_load_explicit(volatile atomic_uint *, memory_order);
14093float __ovld atomic_load_explicit(volatile atomic_float *, memory_order);
14094#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14095#ifdef cl_khr_fp64
14096double __ovld atomic_load_explicit(volatile atomic_double *, memory_order);
14097#endif //cl_khr_fp64
14098long __ovld atomic_load_explicit(volatile atomic_long *, memory_order);
14099ulong __ovld atomic_load_explicit(volatile atomic_ulong *, memory_order);
14100#endif
14101#endif //defined(__opencl_c_generic_address_space)
14102#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14103int __ovld atomic_load_explicit(volatile __global atomic_int *, memory_order);
14104int __ovld atomic_load_explicit(volatile __local atomic_int *, memory_order);
14105uint __ovld atomic_load_explicit(volatile __global atomic_uint *, memory_order);
14106uint __ovld atomic_load_explicit(volatile __local atomic_uint *, memory_order);
14107float __ovld atomic_load_explicit(volatile __global atomic_float *, memory_order);
14108float __ovld atomic_load_explicit(volatile __local atomic_float *, memory_order);
14109#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14110#ifdef cl_khr_fp64
14111double __ovld atomic_load_explicit(volatile __global atomic_double *, memory_order);
14112double __ovld atomic_load_explicit(volatile __local atomic_double *, memory_order);
14113#endif //cl_khr_fp64
14114long __ovld atomic_load_explicit(volatile __global atomic_long *, memory_order);
14115long __ovld atomic_load_explicit(volatile __local atomic_long *, memory_order);
14116ulong __ovld atomic_load_explicit(volatile __global atomic_ulong *, memory_order);
14117ulong __ovld atomic_load_explicit(volatile __local atomic_ulong *, memory_order);
14118#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14119#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14120#endif
14121
14122#if defined(__opencl_c_generic_address_space)
14123int __ovld atomic_load_explicit(volatile atomic_int *, memory_order, memory_scope);
14124uint __ovld atomic_load_explicit(volatile atomic_uint *, memory_order, memory_scope);
14125float __ovld atomic_load_explicit(volatile atomic_float *, memory_order, memory_scope);
14126#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14127#ifdef cl_khr_fp64
14128double __ovld atomic_load_explicit(volatile atomic_double *, memory_order, memory_scope);
14129#endif //cl_khr_fp64
14130long __ovld atomic_load_explicit(volatile atomic_long *, memory_order, memory_scope);
14131ulong __ovld atomic_load_explicit(volatile atomic_ulong *, memory_order, memory_scope);
14132#endif
14133#endif //defined(__opencl_c_generic_address_space)
14134#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14135int __ovld atomic_load_explicit(volatile __global atomic_int *, memory_order, memory_scope);
14136int __ovld atomic_load_explicit(volatile __local atomic_int *, memory_order, memory_scope);
14137uint __ovld atomic_load_explicit(volatile __global atomic_uint *, memory_order, memory_scope);
14139float __ovld atomic_load_explicit(volatile __global atomic_float *, memory_order, memory_scope);
14140float __ovld atomic_load_explicit(volatile __local atomic_float *, memory_order, memory_scope);
14141#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14142#ifdef cl_khr_fp64
14143double __ovld atomic_load_explicit(volatile __global atomic_double *, memory_order, memory_scope);
14144double __ovld atomic_load_explicit(volatile __local atomic_double *, memory_order, memory_scope);
14145#endif
14146long __ovld atomic_load_explicit(volatile __global atomic_long *, memory_order, memory_scope);
14147long __ovld atomic_load_explicit(volatile __local atomic_long *, memory_order, memory_scope);
14148ulong __ovld atomic_load_explicit(volatile __global atomic_ulong *, memory_order, memory_scope);
14149ulong __ovld atomic_load_explicit(volatile __local atomic_ulong *, memory_order, memory_scope);
14150#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14151#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14152
14153// atomic_exchange()
14154
14155#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14156#if defined(__opencl_c_generic_address_space)
14157int __ovld atomic_exchange(volatile atomic_int *, int);
14158uint __ovld atomic_exchange(volatile atomic_uint *, uint);
14159float __ovld atomic_exchange(volatile atomic_float *, float);
14160#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14161#ifdef cl_khr_fp64
14162double __ovld atomic_exchange(volatile atomic_double *, double);
14163#endif //cl_khr_fp64
14164long __ovld atomic_exchange(volatile atomic_long *, long);
14165ulong __ovld atomic_exchange(volatile atomic_ulong *, ulong);
14166#endif
14167#endif //defined(__opencl_c_generic_address_space)
14168#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14169int __ovld atomic_exchange(volatile __global atomic_int *, int);
14170int __ovld atomic_exchange(volatile __local atomic_int *, int);
14171uint __ovld atomic_exchange(volatile __global atomic_uint *, uint);
14172uint __ovld atomic_exchange(volatile __local atomic_uint *, uint);
14173float __ovld atomic_exchange(volatile __global atomic_float *, float);
14174float __ovld atomic_exchange(volatile __local atomic_float *, float);
14175#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14176#ifdef cl_khr_fp64
14177double __ovld atomic_exchange(volatile __global atomic_double *, double);
14178double __ovld atomic_exchange(volatile __local atomic_double *, double);
14179#endif //cl_khr_fp64
14180long __ovld atomic_exchange(volatile __global atomic_long *, long);
14181long __ovld atomic_exchange(volatile __local atomic_long *, long);
14182ulong __ovld atomic_exchange(volatile __global atomic_ulong *, ulong);
14183ulong __ovld atomic_exchange(volatile __local atomic_ulong *, ulong);
14184#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14185#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14186#endif
14187
14188#if defined(__opencl_c_atomic_scope_device)
14189#if defined(__opencl_c_generic_address_space)
14190int __ovld atomic_exchange_explicit(volatile atomic_int *, int, memory_order);
14191uint __ovld atomic_exchange_explicit(volatile atomic_uint *, uint, memory_order);
14192float __ovld atomic_exchange_explicit(volatile atomic_float *, float, memory_order);
14193#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14194#ifdef cl_khr_fp64
14195double __ovld atomic_exchange_explicit(volatile atomic_double *, double, memory_order);
14196#endif //cl_khr_fp64
14197long __ovld atomic_exchange_explicit(volatile atomic_long *, long, memory_order);
14198ulong __ovld atomic_exchange_explicit(volatile atomic_ulong *, ulong, memory_order);
14199#endif
14200#endif //defined(__opencl_c_generic_address_space)
14201#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14202int __ovld atomic_exchange_explicit(volatile __global atomic_int *, int, memory_order);
14203int __ovld atomic_exchange_explicit(volatile __local atomic_int *, int, memory_order);
14204uint __ovld atomic_exchange_explicit(volatile __global atomic_uint *, uint, memory_order);
14205uint __ovld atomic_exchange_explicit(volatile __local atomic_uint *, uint, memory_order);
14206float __ovld atomic_exchange_explicit(volatile __global atomic_float *, float, memory_order);
14207float __ovld atomic_exchange_explicit(volatile __local atomic_float *, float, memory_order);
14208#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14209#ifdef cl_khr_fp64
14210double __ovld atomic_exchange_explicit(volatile __global atomic_double *, double, memory_order);
14211double __ovld atomic_exchange_explicit(volatile __local atomic_double *, double, memory_order);
14212#endif //cl_khr_fp64
14213long __ovld atomic_exchange_explicit(volatile __global atomic_long *, long, memory_order);
14214long __ovld atomic_exchange_explicit(volatile __local atomic_long *, long, memory_order);
14215ulong __ovld atomic_exchange_explicit(volatile __global atomic_ulong *, ulong, memory_order);
14216ulong __ovld atomic_exchange_explicit(volatile __local atomic_ulong *, ulong, memory_order);
14217#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)wi
14218#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14219#endif
14220
14221#if defined(__opencl_c_generic_address_space)
14222int __ovld atomic_exchange_explicit(volatile atomic_int *, int, memory_order, memory_scope);
14224float __ovld atomic_exchange_explicit(volatile atomic_float *, float, memory_order, memory_scope);
14225#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14226#ifdef cl_khr_fp64
14227double __ovld atomic_exchange_explicit(volatile atomic_double *, double, memory_order, memory_scope);
14228#endif //cl_khr_fp64
14229long __ovld atomic_exchange_explicit(volatile atomic_long *, long, memory_order, memory_scope);
14231#endif
14232#endif //defined(__opencl_c_generic_address_space)
14233#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14234int __ovld atomic_exchange_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
14235int __ovld atomic_exchange_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
14238float __ovld atomic_exchange_explicit(volatile __global atomic_float *, float, memory_order, memory_scope);
14239float __ovld atomic_exchange_explicit(volatile __local atomic_float *, float, memory_order, memory_scope);
14240#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14241#ifdef cl_khr_fp64
14242double __ovld atomic_exchange_explicit(volatile __global atomic_double *, double, memory_order, memory_scope);
14243double __ovld atomic_exchange_explicit(volatile __local atomic_double *, double, memory_order, memory_scope);
14244#endif //cl_khr_fp64
14245long __ovld atomic_exchange_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
14246long __ovld atomic_exchange_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
14247ulong __ovld atomic_exchange_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
14248ulong __ovld atomic_exchange_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
14249#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14250#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14251
14252// atomic_compare_exchange_strong() and atomic_compare_exchange_weak()
14253#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14254#if defined(__opencl_c_generic_address_space)
14255bool __ovld atomic_compare_exchange_strong(volatile atomic_int *, int *, int);
14256bool __ovld atomic_compare_exchange_strong(volatile atomic_uint *, uint *, uint);
14257bool __ovld atomic_compare_exchange_weak(volatile atomic_int *, int *, int);
14258bool __ovld atomic_compare_exchange_weak(volatile atomic_uint *, uint *, uint);
14259bool __ovld atomic_compare_exchange_strong(volatile atomic_float *, float *, float);
14260bool __ovld atomic_compare_exchange_weak(volatile atomic_float *, float *, float);
14261#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14262#ifdef cl_khr_fp64
14263bool __ovld atomic_compare_exchange_strong(volatile atomic_double *, double *, double);
14264bool __ovld atomic_compare_exchange_weak(volatile atomic_double *, double *, double);
14265#endif //cl_khr_fp64
14266bool __ovld atomic_compare_exchange_strong(volatile atomic_long *, long *, long);
14267bool __ovld atomic_compare_exchange_weak(volatile atomic_long *, long *, long);
14268bool __ovld atomic_compare_exchange_strong(volatile atomic_ulong *, ulong *, ulong);
14269bool __ovld atomic_compare_exchange_weak(volatile atomic_ulong *, ulong *, ulong);
14270#endif
14271#endif //defined(__opencl_c_generic_address_space)
14272#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14273bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __global int *, int);
14274bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __local int *, int);
14275bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __private int *, int);
14276bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __global int *, int);
14277bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __local int *, int);
14278bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __private int *, int);
14279bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __global uint *, uint);
14280bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __local uint *, uint);
14281bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __private uint *, uint);
14282bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __global uint *, uint);
14283bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __local uint *, uint);
14284bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __private uint *, uint);
14285bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __global float *, float);
14286bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __local float *, float);
14287bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __private float *, float);
14288bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __global float *, float);
14289bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __local float *, float);
14290bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __private float *, float);
14291bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __global int *, int);
14292bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __local int *, int);
14293bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __private int *, int);
14294bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __global int *, int);
14295bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __local int *, int);
14296bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __private int *, int);
14297bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __global uint *, uint);
14298bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __local uint *, uint);
14299bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __private uint *, uint);
14300bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __global uint *, uint);
14301bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __local uint *, uint);
14302bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __private uint *, uint);
14303bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __global float *, float);
14304bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __local float *, float);
14305bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __private float *, float);
14306bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __global float *, float);
14307bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __local float *, float);
14308bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __private float *, float);
14309#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14310#ifdef cl_khr_fp64
14311bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __global double *, double);
14312bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __local double *, double);
14313bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __private double *, double);
14314bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __global double *, double);
14315bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __local double *, double);
14316bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __private double *, double);
14317bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __global double *, double);
14318bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __local double *, double);
14319bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __private double *, double);
14320bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __global double *, double);
14321bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __local double *, double);
14322bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __private double *, double);
14323#endif //cl_khr_fp64
14324bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __global long *, long);
14325bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __local long *, long);
14326bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __private long *, long);
14327bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __global long *, long);
14328bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __local long *, long);
14329bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __private long *, long);
14330bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __global ulong *, ulong);
14331bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __local ulong *, ulong);
14332bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __private ulong *, ulong);
14333bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __global ulong *, ulong);
14334bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __local ulong *, ulong);
14335bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __private ulong *, ulong);
14336bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __global long *, long);
14337bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __local long *, long);
14338bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __private long *, long);
14339bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __global long *, long);
14340bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __local long *, long);
14341bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __private long *, long);
14342bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __global ulong *, ulong);
14343bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __local ulong *, ulong);
14344bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __private ulong *, ulong);
14345bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __global ulong *, ulong);
14346bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __local ulong *, ulong);
14347bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __private ulong *, ulong);
14348#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14349#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14350#endif
14351
14352#if defined(__opencl_c_atomic_scope_device)
14353#if defined(__opencl_c_generic_address_space)
14354bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *, int *, int, memory_order, memory_order);
14356bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *, int *, int, memory_order, memory_order);
14358bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *, float *, float, memory_order, memory_order);
14359bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *, float *, float, memory_order, memory_order);
14360#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14361#ifdef cl_khr_fp64
14362bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *, double *, double, memory_order, memory_order);
14363bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *, double *, double, memory_order, memory_order);
14364#endif //cl_khr_fp64
14365bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *, long *, long, memory_order, memory_order);
14366bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *, long *, long, memory_order, memory_order);
14369#endif
14370#endif //defined(__opencl_c_generic_address_space)
14371#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14372bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order);
14373bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order);
14374bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order);
14375bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order);
14376bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order);
14377bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order);
14378bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order);
14379bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __local uint *, uint, memory_order, memory_order);
14380bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order);
14381bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __global uint *, uint, memory_order, memory_order);
14382bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __local uint *, uint, memory_order, memory_order);
14383bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order);
14384bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order);
14385bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order);
14386bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order);
14387bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order);
14388bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order);
14389bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order);
14390bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order);
14391bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order);
14392bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order);
14393bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order);
14394bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order);
14395bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order);
14396bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order);
14397bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __local uint *, uint, memory_order, memory_order);
14398bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order);
14399bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __global uint *, uint, memory_order, memory_order);
14400bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __local uint *, uint, memory_order, memory_order);
14401bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order);
14402bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order);
14403bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order);
14404bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order);
14405bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order);
14406bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order);
14407bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order);
14408#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14409#ifdef cl_khr_fp64
14410bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order);
14411bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order);
14412bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order);
14413bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order);
14414bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order);
14415bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order);
14416bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order);
14417bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order);
14418bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order);
14419bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order);
14420bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order);
14421bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order);
14422#endif //cl_khr_fp64
14423bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order);
14424bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order);
14425bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order);
14426bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order);
14427bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order);
14428bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order);
14429bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14430bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14431bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14432bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14433bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14434bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14435bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order);
14436bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order);
14437bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order);
14438bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order);
14439bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order);
14440bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order);
14441bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14442bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14443bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14444bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14445bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14446bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14447#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14448#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14449#endif //defined(__opencl_c_atomic_scope_device)
14450
14451#if defined(__opencl_c_generic_address_space)
14454bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *, int *, int, memory_order, memory_order, memory_scope);
14456bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *, float *, float, memory_order, memory_order, memory_scope);
14457bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *, float *, float, memory_order, memory_order, memory_scope);
14458#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14459#ifdef cl_khr_fp64
14460bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *, double *, double, memory_order, memory_order, memory_scope);
14461bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *, double *, double, memory_order, memory_order, memory_scope);
14462#endif //cl_khr_fp64
14463bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *, long *, long, memory_order, memory_order, memory_scope);
14464bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *, long *, long, memory_order, memory_order, memory_scope);
14467#endif
14468#endif //defined(__opencl_c_generic_address_space)
14469#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14470bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14471bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14472bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14473bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14474bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14475bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14482bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14483bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14484bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14485bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14486bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14487bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14488bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14489bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14490bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14491bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14492bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14493bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14496bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order, memory_scope);
14500bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14501bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14502bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14503bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14504bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14505bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14506#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14507#ifdef cl_khr_fp64
14508bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14509bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14510bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14511bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14512bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14513bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14514bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14515bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14516bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14517bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14518bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14519bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14520#endif //cl_khr_fp64
14521bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14522bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14523bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14524bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14525bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14526bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14527bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14528bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14529bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14530bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14531bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14532bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14533bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14534bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14535bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14536bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14537bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14538bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14539bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14540bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14541bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14542bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14543bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14544bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14545#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14546#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14547
14548// atomic_flag_test_and_set() and atomic_flag_clear()
14549#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14550#if defined(__opencl_c_generic_address_space)
14552void __ovld atomic_flag_clear(volatile atomic_flag *);
14553#endif //defined(__opencl_c_generic_address_space)
14554#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14555bool __ovld atomic_flag_test_and_set(volatile __global atomic_flag *);
14556bool __ovld atomic_flag_test_and_set(volatile __local atomic_flag *);
14557void __ovld atomic_flag_clear(volatile __global atomic_flag *);
14558void __ovld atomic_flag_clear(volatile __local atomic_flag *);
14559#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14560#endif
14561
14562#if defined(__opencl_c_atomic_scope_device)
14563#if defined(__opencl_c_generic_address_space)
14566#endif //defined(__opencl_c_generic_address_space)
14567#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14572#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14573#endif
14574
14575#if defined(__opencl_c_generic_address_space)
14578#endif //defined(__opencl_c_generic_address_space)
14579#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14584#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14585#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
14586
14587// OpenCL v1.1 s6.11.12, v1.2 s6.12.12, v2.0 s6.13.12 - Miscellaneous Vector Functions
14588
14589/**
14590 * The shuffle and shuffle2 built-in functions construct
14591 * a permutation of elements from one or two input
14592 * vectors respectively that are of the same type,
14593 * returning a vector with the same element type as the
14594 * input and length that is the same as the shuffle mask.
14595 * The size of each element in the mask must match the
14596 * size of each element in the result. For shuffle, only
14597 * the ilogb(2m-1) least significant bits of each mask
14598 * element are considered. For shuffle2, only the
14599 * ilogb(2m-1)+1 least significant bits of each mask
14600 * element are considered. Other bits in the mask shall
14601 * be ignored.
14602 * The elements of the input vectors are numbered from
14603 * left to right across one or both of the vectors. For this
14604 * purpose, the number of elements in a vector is given
14605 * by vec_step(gentypem). The shuffle mask operand
14606 * specifies, for each element of the result vector, which
14607 * element of the one or two input vectors the result
14608 * element gets.
14609 * Examples:
14610 * uint4 mask = (uint4)(3, 2,
14611 * 1, 0);
14612 * float4 a;
14613 * float4 r = shuffle(a, mask);
14614 * // r.s0123 = a.wzyx
14615 * uint8 mask = (uint8)(0, 1, 2, 3,
14616 * 4, 5, 6, 7);
14617 * float4 a, b;
14618 * float8 r = shuffle2(a, b, mask);
14619 * // r.s0123 = a.xyzw
14620 * // r.s4567 = b.xyzw
14621 * uint4 mask;
14622 * float8 a;
14623 * float4 b;
14624 * b = shuffle(a, mask);
14625 * Examples that are not valid are:
14626 * uint8 mask;
14627 * short16 a;
14628 * short8 b;
14629 * b = shuffle(a, mask); <- not valid
14630 */
14631char2 __ovld __cnfn shuffle(char2, uchar2);
14632char2 __ovld __cnfn shuffle(char4, uchar2);
14633char2 __ovld __cnfn shuffle(char8, uchar2);
14634char2 __ovld __cnfn shuffle(char16, uchar2);
14635
14636uchar2 __ovld __cnfn shuffle(uchar2, uchar2);
14637uchar2 __ovld __cnfn shuffle(uchar4, uchar2);
14638uchar2 __ovld __cnfn shuffle(uchar8, uchar2);
14639uchar2 __ovld __cnfn shuffle(uchar16, uchar2);
14640
14641short2 __ovld __cnfn shuffle(short2, ushort2);
14642short2 __ovld __cnfn shuffle(short4, ushort2);
14643short2 __ovld __cnfn shuffle(short8, ushort2);
14644short2 __ovld __cnfn shuffle(short16, ushort2);
14645
14646ushort2 __ovld __cnfn shuffle(ushort2, ushort2);
14647ushort2 __ovld __cnfn shuffle(ushort4, ushort2);
14648ushort2 __ovld __cnfn shuffle(ushort8, ushort2);
14649ushort2 __ovld __cnfn shuffle(ushort16, ushort2);
14650
14651int2 __ovld __cnfn shuffle(int2, uint2);
14652int2 __ovld __cnfn shuffle(int4, uint2);
14653int2 __ovld __cnfn shuffle(int8, uint2);
14654int2 __ovld __cnfn shuffle(int16, uint2);
14655
14656uint2 __ovld __cnfn shuffle(uint2, uint2);
14657uint2 __ovld __cnfn shuffle(uint4, uint2);
14658uint2 __ovld __cnfn shuffle(uint8, uint2);
14659uint2 __ovld __cnfn shuffle(uint16, uint2);
14660
14661long2 __ovld __cnfn shuffle(long2, ulong2);
14662long2 __ovld __cnfn shuffle(long4, ulong2);
14663long2 __ovld __cnfn shuffle(long8, ulong2);
14664long2 __ovld __cnfn shuffle(long16, ulong2);
14665
14666ulong2 __ovld __cnfn shuffle(ulong2, ulong2);
14667ulong2 __ovld __cnfn shuffle(ulong4, ulong2);
14668ulong2 __ovld __cnfn shuffle(ulong8, ulong2);
14669ulong2 __ovld __cnfn shuffle(ulong16, ulong2);
14670
14671float2 __ovld __cnfn shuffle(float2, uint2);
14672float2 __ovld __cnfn shuffle(float4, uint2);
14673float2 __ovld __cnfn shuffle(float8, uint2);
14674float2 __ovld __cnfn shuffle(float16, uint2);
14675
14676char4 __ovld __cnfn shuffle(char2, uchar4);
14677char4 __ovld __cnfn shuffle(char4, uchar4);
14678char4 __ovld __cnfn shuffle(char8, uchar4);
14679char4 __ovld __cnfn shuffle(char16, uchar4);
14680
14681uchar4 __ovld __cnfn shuffle(uchar2, uchar4);
14682uchar4 __ovld __cnfn shuffle(uchar4, uchar4);
14683uchar4 __ovld __cnfn shuffle(uchar8, uchar4);
14684uchar4 __ovld __cnfn shuffle(uchar16, uchar4);
14685
14686short4 __ovld __cnfn shuffle(short2, ushort4);
14687short4 __ovld __cnfn shuffle(short4, ushort4);
14688short4 __ovld __cnfn shuffle(short8, ushort4);
14689short4 __ovld __cnfn shuffle(short16, ushort4);
14690
14691ushort4 __ovld __cnfn shuffle(ushort2, ushort4);
14692ushort4 __ovld __cnfn shuffle(ushort4, ushort4);
14693ushort4 __ovld __cnfn shuffle(ushort8, ushort4);
14694ushort4 __ovld __cnfn shuffle(ushort16, ushort4);
14695
14696int4 __ovld __cnfn shuffle(int2, uint4);
14697int4 __ovld __cnfn shuffle(int4, uint4);
14698int4 __ovld __cnfn shuffle(int8, uint4);
14699int4 __ovld __cnfn shuffle(int16, uint4);
14700
14701uint4 __ovld __cnfn shuffle(uint2, uint4);
14702uint4 __ovld __cnfn shuffle(uint4, uint4);
14703uint4 __ovld __cnfn shuffle(uint8, uint4);
14704uint4 __ovld __cnfn shuffle(uint16, uint4);
14705
14706long4 __ovld __cnfn shuffle(long2, ulong4);
14707long4 __ovld __cnfn shuffle(long4, ulong4);
14708long4 __ovld __cnfn shuffle(long8, ulong4);
14709long4 __ovld __cnfn shuffle(long16, ulong4);
14710
14711ulong4 __ovld __cnfn shuffle(ulong2, ulong4);
14712ulong4 __ovld __cnfn shuffle(ulong4, ulong4);
14713ulong4 __ovld __cnfn shuffle(ulong8, ulong4);
14714ulong4 __ovld __cnfn shuffle(ulong16, ulong4);
14715
14716float4 __ovld __cnfn shuffle(float2, uint4);
14717float4 __ovld __cnfn shuffle(float4, uint4);
14718float4 __ovld __cnfn shuffle(float8, uint4);
14719float4 __ovld __cnfn shuffle(float16, uint4);
14720
14721char8 __ovld __cnfn shuffle(char2, uchar8);
14722char8 __ovld __cnfn shuffle(char4, uchar8);
14723char8 __ovld __cnfn shuffle(char8, uchar8);
14724char8 __ovld __cnfn shuffle(char16, uchar8);
14725
14726uchar8 __ovld __cnfn shuffle(uchar2, uchar8);
14727uchar8 __ovld __cnfn shuffle(uchar4, uchar8);
14728uchar8 __ovld __cnfn shuffle(uchar8, uchar8);
14729uchar8 __ovld __cnfn shuffle(uchar16, uchar8);
14730
14731short8 __ovld __cnfn shuffle(short2, ushort8);
14732short8 __ovld __cnfn shuffle(short4, ushort8);
14733short8 __ovld __cnfn shuffle(short8, ushort8);
14734short8 __ovld __cnfn shuffle(short16, ushort8);
14735
14736ushort8 __ovld __cnfn shuffle(ushort2, ushort8);
14737ushort8 __ovld __cnfn shuffle(ushort4, ushort8);
14738ushort8 __ovld __cnfn shuffle(ushort8, ushort8);
14739ushort8 __ovld __cnfn shuffle(ushort16, ushort8);
14740
14741int8 __ovld __cnfn shuffle(int2, uint8);
14742int8 __ovld __cnfn shuffle(int4, uint8);
14743int8 __ovld __cnfn shuffle(int8, uint8);
14744int8 __ovld __cnfn shuffle(int16, uint8);
14745
14746uint8 __ovld __cnfn shuffle(uint2, uint8);
14747uint8 __ovld __cnfn shuffle(uint4, uint8);
14748uint8 __ovld __cnfn shuffle(uint8, uint8);
14749uint8 __ovld __cnfn shuffle(uint16, uint8);
14750
14751long8 __ovld __cnfn shuffle(long2, ulong8);
14752long8 __ovld __cnfn shuffle(long4, ulong8);
14753long8 __ovld __cnfn shuffle(long8, ulong8);
14754long8 __ovld __cnfn shuffle(long16, ulong8);
14755
14756ulong8 __ovld __cnfn shuffle(ulong2, ulong8);
14757ulong8 __ovld __cnfn shuffle(ulong4, ulong8);
14758ulong8 __ovld __cnfn shuffle(ulong8, ulong8);
14759ulong8 __ovld __cnfn shuffle(ulong16, ulong8);
14760
14761float8 __ovld __cnfn shuffle(float2, uint8);
14762float8 __ovld __cnfn shuffle(float4, uint8);
14763float8 __ovld __cnfn shuffle(float8, uint8);
14764float8 __ovld __cnfn shuffle(float16, uint8);
14765
14766char16 __ovld __cnfn shuffle(char2, uchar16);
14767char16 __ovld __cnfn shuffle(char4, uchar16);
14768char16 __ovld __cnfn shuffle(char8, uchar16);
14769char16 __ovld __cnfn shuffle(char16, uchar16);
14770
14771uchar16 __ovld __cnfn shuffle(uchar2, uchar16);
14772uchar16 __ovld __cnfn shuffle(uchar4, uchar16);
14773uchar16 __ovld __cnfn shuffle(uchar8, uchar16);
14774uchar16 __ovld __cnfn shuffle(uchar16, uchar16);
14775
14776short16 __ovld __cnfn shuffle(short2, ushort16);
14777short16 __ovld __cnfn shuffle(short4, ushort16);
14778short16 __ovld __cnfn shuffle(short8, ushort16);
14779short16 __ovld __cnfn shuffle(short16, ushort16);
14780
14781ushort16 __ovld __cnfn shuffle(ushort2, ushort16);
14782ushort16 __ovld __cnfn shuffle(ushort4, ushort16);
14783ushort16 __ovld __cnfn shuffle(ushort8, ushort16);
14784ushort16 __ovld __cnfn shuffle(ushort16, ushort16);
14785
14786int16 __ovld __cnfn shuffle(int2, uint16);
14787int16 __ovld __cnfn shuffle(int4, uint16);
14788int16 __ovld __cnfn shuffle(int8, uint16);
14789int16 __ovld __cnfn shuffle(int16, uint16);
14790
14791uint16 __ovld __cnfn shuffle(uint2, uint16);
14792uint16 __ovld __cnfn shuffle(uint4, uint16);
14793uint16 __ovld __cnfn shuffle(uint8, uint16);
14794uint16 __ovld __cnfn shuffle(uint16, uint16);
14795
14796long16 __ovld __cnfn shuffle(long2, ulong16);
14797long16 __ovld __cnfn shuffle(long4, ulong16);
14798long16 __ovld __cnfn shuffle(long8, ulong16);
14799long16 __ovld __cnfn shuffle(long16, ulong16);
14800
14801ulong16 __ovld __cnfn shuffle(ulong2, ulong16);
14802ulong16 __ovld __cnfn shuffle(ulong4, ulong16);
14803ulong16 __ovld __cnfn shuffle(ulong8, ulong16);
14804ulong16 __ovld __cnfn shuffle(ulong16, ulong16);
14805
14806float16 __ovld __cnfn shuffle(float2, uint16);
14807float16 __ovld __cnfn shuffle(float4, uint16);
14808float16 __ovld __cnfn shuffle(float8, uint16);
14809float16 __ovld __cnfn shuffle(float16, uint16);
14810
14811#ifdef cl_khr_fp64
14812double2 __ovld __cnfn shuffle(double2, ulong2);
14813double2 __ovld __cnfn shuffle(double4, ulong2);
14814double2 __ovld __cnfn shuffle(double8, ulong2);
14815double2 __ovld __cnfn shuffle(double16, ulong2);
14816
14817double4 __ovld __cnfn shuffle(double2, ulong4);
14818double4 __ovld __cnfn shuffle(double4, ulong4);
14819double4 __ovld __cnfn shuffle(double8, ulong4);
14820double4 __ovld __cnfn shuffle(double16, ulong4);
14821
14822double8 __ovld __cnfn shuffle(double2, ulong8);
14823double8 __ovld __cnfn shuffle(double4, ulong8);
14824double8 __ovld __cnfn shuffle(double8, ulong8);
14825double8 __ovld __cnfn shuffle(double16, ulong8);
14826
14827double16 __ovld __cnfn shuffle(double2, ulong16);
14828double16 __ovld __cnfn shuffle(double4, ulong16);
14829double16 __ovld __cnfn shuffle(double8, ulong16);
14830double16 __ovld __cnfn shuffle(double16, ulong16);
14831#endif //cl_khr_fp64
14832
14833#ifdef cl_khr_fp16
14834half2 __ovld __cnfn shuffle(half2, ushort2);
14835half2 __ovld __cnfn shuffle(half4, ushort2);
14836half2 __ovld __cnfn shuffle(half8, ushort2);
14837half2 __ovld __cnfn shuffle(half16, ushort2);
14838
14839half4 __ovld __cnfn shuffle(half2, ushort4);
14840half4 __ovld __cnfn shuffle(half4, ushort4);
14841half4 __ovld __cnfn shuffle(half8, ushort4);
14842half4 __ovld __cnfn shuffle(half16, ushort4);
14843
14844half8 __ovld __cnfn shuffle(half2, ushort8);
14845half8 __ovld __cnfn shuffle(half4, ushort8);
14846half8 __ovld __cnfn shuffle(half8, ushort8);
14847half8 __ovld __cnfn shuffle(half16, ushort8);
14848
14849half16 __ovld __cnfn shuffle(half2, ushort16);
14850half16 __ovld __cnfn shuffle(half4, ushort16);
14851half16 __ovld __cnfn shuffle(half8, ushort16);
14852half16 __ovld __cnfn shuffle(half16, ushort16);
14853#endif //cl_khr_fp16
14854
14855char2 __ovld __cnfn shuffle2(char2, char2, uchar2);
14856char2 __ovld __cnfn shuffle2(char4, char4, uchar2);
14857char2 __ovld __cnfn shuffle2(char8, char8, uchar2);
14858char2 __ovld __cnfn shuffle2(char16, char16, uchar2);
14859
14860uchar2 __ovld __cnfn shuffle2(uchar2, uchar2, uchar2);
14861uchar2 __ovld __cnfn shuffle2(uchar4, uchar4, uchar2);
14862uchar2 __ovld __cnfn shuffle2(uchar8, uchar8, uchar2);
14863uchar2 __ovld __cnfn shuffle2(uchar16, uchar16, uchar2);
14864
14865short2 __ovld __cnfn shuffle2(short2, short2, ushort2);
14866short2 __ovld __cnfn shuffle2(short4, short4, ushort2);
14867short2 __ovld __cnfn shuffle2(short8, short8, ushort2);
14868short2 __ovld __cnfn shuffle2(short16, short16, ushort2);
14869
14870ushort2 __ovld __cnfn shuffle2(ushort2, ushort2, ushort2);
14871ushort2 __ovld __cnfn shuffle2(ushort4, ushort4, ushort2);
14872ushort2 __ovld __cnfn shuffle2(ushort8, ushort8, ushort2);
14873ushort2 __ovld __cnfn shuffle2(ushort16, ushort16, ushort2);
14874
14875int2 __ovld __cnfn shuffle2(int2, int2, uint2);
14876int2 __ovld __cnfn shuffle2(int4, int4, uint2);
14877int2 __ovld __cnfn shuffle2(int8, int8, uint2);
14878int2 __ovld __cnfn shuffle2(int16, int16, uint2);
14879
14880uint2 __ovld __cnfn shuffle2(uint2, uint2, uint2);
14881uint2 __ovld __cnfn shuffle2(uint4, uint4, uint2);
14882uint2 __ovld __cnfn shuffle2(uint8, uint8, uint2);
14883uint2 __ovld __cnfn shuffle2(uint16, uint16, uint2);
14884
14885long2 __ovld __cnfn shuffle2(long2, long2, ulong2);
14886long2 __ovld __cnfn shuffle2(long4, long4, ulong2);
14887long2 __ovld __cnfn shuffle2(long8, long8, ulong2);
14888long2 __ovld __cnfn shuffle2(long16, long16, ulong2);
14889
14890ulong2 __ovld __cnfn shuffle2(ulong2, ulong2, ulong2);
14891ulong2 __ovld __cnfn shuffle2(ulong4, ulong4, ulong2);
14892ulong2 __ovld __cnfn shuffle2(ulong8, ulong8, ulong2);
14893ulong2 __ovld __cnfn shuffle2(ulong16, ulong16, ulong2);
14894
14895float2 __ovld __cnfn shuffle2(float2, float2, uint2);
14896float2 __ovld __cnfn shuffle2(float4, float4, uint2);
14897float2 __ovld __cnfn shuffle2(float8, float8, uint2);
14898float2 __ovld __cnfn shuffle2(float16, float16, uint2);
14899
14900char4 __ovld __cnfn shuffle2(char2, char2, uchar4);
14901char4 __ovld __cnfn shuffle2(char4, char4, uchar4);
14902char4 __ovld __cnfn shuffle2(char8, char8, uchar4);
14903char4 __ovld __cnfn shuffle2(char16, char16, uchar4);
14904
14905uchar4 __ovld __cnfn shuffle2(uchar2, uchar2, uchar4);
14906uchar4 __ovld __cnfn shuffle2(uchar4, uchar4, uchar4);
14907uchar4 __ovld __cnfn shuffle2(uchar8, uchar8, uchar4);
14908uchar4 __ovld __cnfn shuffle2(uchar16, uchar16, uchar4);
14909
14910short4 __ovld __cnfn shuffle2(short2, short2, ushort4);
14911short4 __ovld __cnfn shuffle2(short4, short4, ushort4);
14912short4 __ovld __cnfn shuffle2(short8, short8, ushort4);
14913short4 __ovld __cnfn shuffle2(short16, short16, ushort4);
14914
14915ushort4 __ovld __cnfn shuffle2(ushort2, ushort2, ushort4);
14916ushort4 __ovld __cnfn shuffle2(ushort4, ushort4, ushort4);
14917ushort4 __ovld __cnfn shuffle2(ushort8, ushort8, ushort4);
14918ushort4 __ovld __cnfn shuffle2(ushort16, ushort16, ushort4);
14919
14920int4 __ovld __cnfn shuffle2(int2, int2, uint4);
14921int4 __ovld __cnfn shuffle2(int4, int4, uint4);
14922int4 __ovld __cnfn shuffle2(int8, int8, uint4);
14923int4 __ovld __cnfn shuffle2(int16, int16, uint4);
14924
14925uint4 __ovld __cnfn shuffle2(uint2, uint2, uint4);
14926uint4 __ovld __cnfn shuffle2(uint4, uint4, uint4);
14927uint4 __ovld __cnfn shuffle2(uint8, uint8, uint4);
14928uint4 __ovld __cnfn shuffle2(uint16, uint16, uint4);
14929
14930long4 __ovld __cnfn shuffle2(long2, long2, ulong4);
14931long4 __ovld __cnfn shuffle2(long4, long4, ulong4);
14932long4 __ovld __cnfn shuffle2(long8, long8, ulong4);
14933long4 __ovld __cnfn shuffle2(long16, long16, ulong4);
14934
14935ulong4 __ovld __cnfn shuffle2(ulong2, ulong2, ulong4);
14936ulong4 __ovld __cnfn shuffle2(ulong4, ulong4, ulong4);
14937ulong4 __ovld __cnfn shuffle2(ulong8, ulong8, ulong4);
14938ulong4 __ovld __cnfn shuffle2(ulong16, ulong16, ulong4);
14939
14940float4 __ovld __cnfn shuffle2(float2, float2, uint4);
14941float4 __ovld __cnfn shuffle2(float4, float4, uint4);
14942float4 __ovld __cnfn shuffle2(float8, float8, uint4);
14943float4 __ovld __cnfn shuffle2(float16, float16, uint4);
14944
14945char8 __ovld __cnfn shuffle2(char2, char2, uchar8);
14946char8 __ovld __cnfn shuffle2(char4, char4, uchar8);
14947char8 __ovld __cnfn shuffle2(char8, char8, uchar8);
14948char8 __ovld __cnfn shuffle2(char16, char16, uchar8);
14949
14950uchar8 __ovld __cnfn shuffle2(uchar2, uchar2, uchar8);
14951uchar8 __ovld __cnfn shuffle2(uchar4, uchar4, uchar8);
14952uchar8 __ovld __cnfn shuffle2(uchar8, uchar8, uchar8);
14953uchar8 __ovld __cnfn shuffle2(uchar16, uchar16, uchar8);
14954
14955short8 __ovld __cnfn shuffle2(short2, short2, ushort8);
14956short8 __ovld __cnfn shuffle2(short4, short4, ushort8);
14957short8 __ovld __cnfn shuffle2(short8, short8, ushort8);
14958short8 __ovld __cnfn shuffle2(short16, short16, ushort8);
14959
14960ushort8 __ovld __cnfn shuffle2(ushort2, ushort2, ushort8);
14961ushort8 __ovld __cnfn shuffle2(ushort4, ushort4, ushort8);
14962ushort8 __ovld __cnfn shuffle2(ushort8, ushort8, ushort8);
14963ushort8 __ovld __cnfn shuffle2(ushort16, ushort16, ushort8);
14964
14965int8 __ovld __cnfn shuffle2(int2, int2, uint8);
14966int8 __ovld __cnfn shuffle2(int4, int4, uint8);
14967int8 __ovld __cnfn shuffle2(int8, int8, uint8);
14968int8 __ovld __cnfn shuffle2(int16, int16, uint8);
14969
14970uint8 __ovld __cnfn shuffle2(uint2, uint2, uint8);
14971uint8 __ovld __cnfn shuffle2(uint4, uint4, uint8);
14972uint8 __ovld __cnfn shuffle2(uint8, uint8, uint8);
14973uint8 __ovld __cnfn shuffle2(uint16, uint16, uint8);
14974
14975long8 __ovld __cnfn shuffle2(long2, long2, ulong8);
14976long8 __ovld __cnfn shuffle2(long4, long4, ulong8);
14977long8 __ovld __cnfn shuffle2(long8, long8, ulong8);
14978long8 __ovld __cnfn shuffle2(long16, long16, ulong8);
14979
14980ulong8 __ovld __cnfn shuffle2(ulong2, ulong2, ulong8);
14981ulong8 __ovld __cnfn shuffle2(ulong4, ulong4, ulong8);
14982ulong8 __ovld __cnfn shuffle2(ulong8, ulong8, ulong8);
14983ulong8 __ovld __cnfn shuffle2(ulong16, ulong16, ulong8);
14984
14985float8 __ovld __cnfn shuffle2(float2, float2, uint8);
14986float8 __ovld __cnfn shuffle2(float4, float4, uint8);
14987float8 __ovld __cnfn shuffle2(float8, float8, uint8);
14988float8 __ovld __cnfn shuffle2(float16, float16, uint8);
14989
14990char16 __ovld __cnfn shuffle2(char2, char2, uchar16);
14991char16 __ovld __cnfn shuffle2(char4, char4, uchar16);
14992char16 __ovld __cnfn shuffle2(char8, char8, uchar16);
14993char16 __ovld __cnfn shuffle2(char16, char16, uchar16);
14994
14995uchar16 __ovld __cnfn shuffle2(uchar2, uchar2, uchar16);
14996uchar16 __ovld __cnfn shuffle2(uchar4, uchar4, uchar16);
14997uchar16 __ovld __cnfn shuffle2(uchar8, uchar8, uchar16);
14998uchar16 __ovld __cnfn shuffle2(uchar16, uchar16, uchar16);
14999
15000short16 __ovld __cnfn shuffle2(short2, short2, ushort16);
15001short16 __ovld __cnfn shuffle2(short4, short4, ushort16);
15002short16 __ovld __cnfn shuffle2(short8, short8, ushort16);
15003short16 __ovld __cnfn shuffle2(short16, short16, ushort16);
15004
15005ushort16 __ovld __cnfn shuffle2(ushort2, ushort2, ushort16);
15006ushort16 __ovld __cnfn shuffle2(ushort4, ushort4, ushort16);
15007ushort16 __ovld __cnfn shuffle2(ushort8, ushort8, ushort16);
15008ushort16 __ovld __cnfn shuffle2(ushort16, ushort16, ushort16);
15009
15010int16 __ovld __cnfn shuffle2(int2, int2, uint16);
15011int16 __ovld __cnfn shuffle2(int4, int4, uint16);
15012int16 __ovld __cnfn shuffle2(int8, int8, uint16);
15013int16 __ovld __cnfn shuffle2(int16, int16, uint16);
15014
15015uint16 __ovld __cnfn shuffle2(uint2, uint2, uint16);
15016uint16 __ovld __cnfn shuffle2(uint4, uint4, uint16);
15017uint16 __ovld __cnfn shuffle2(uint8, uint8, uint16);
15018uint16 __ovld __cnfn shuffle2(uint16, uint16, uint16);
15019
15020long16 __ovld __cnfn shuffle2(long2, long2, ulong16);
15021long16 __ovld __cnfn shuffle2(long4, long4, ulong16);
15022long16 __ovld __cnfn shuffle2(long8, long8, ulong16);
15023long16 __ovld __cnfn shuffle2(long16, long16, ulong16);
15024
15025ulong16 __ovld __cnfn shuffle2(ulong2, ulong2, ulong16);
15026ulong16 __ovld __cnfn shuffle2(ulong4, ulong4, ulong16);
15027ulong16 __ovld __cnfn shuffle2(ulong8, ulong8, ulong16);
15028ulong16 __ovld __cnfn shuffle2(ulong16, ulong16, ulong16);
15029
15030float16 __ovld __cnfn shuffle2(float2, float2, uint16);
15031float16 __ovld __cnfn shuffle2(float4, float4, uint16);
15032float16 __ovld __cnfn shuffle2(float8, float8, uint16);
15033float16 __ovld __cnfn shuffle2(float16, float16, uint16);
15034
15035#ifdef cl_khr_fp64
15036double2 __ovld __cnfn shuffle2(double2, double2, ulong2);
15037double2 __ovld __cnfn shuffle2(double4, double4, ulong2);
15038double2 __ovld __cnfn shuffle2(double8, double8, ulong2);
15039double2 __ovld __cnfn shuffle2(double16, double16, ulong2);
15040
15041double4 __ovld __cnfn shuffle2(double2, double2, ulong4);
15042double4 __ovld __cnfn shuffle2(double4, double4, ulong4);
15043double4 __ovld __cnfn shuffle2(double8, double8, ulong4);
15044double4 __ovld __cnfn shuffle2(double16, double16, ulong4);
15045
15046double8 __ovld __cnfn shuffle2(double2, double2, ulong8);
15047double8 __ovld __cnfn shuffle2(double4, double4, ulong8);
15048double8 __ovld __cnfn shuffle2(double8, double8, ulong8);
15049double8 __ovld __cnfn shuffle2(double16, double16, ulong8);
15050
15051double16 __ovld __cnfn shuffle2(double2, double2, ulong16);
15052double16 __ovld __cnfn shuffle2(double4, double4, ulong16);
15053double16 __ovld __cnfn shuffle2(double8, double8, ulong16);
15054double16 __ovld __cnfn shuffle2(double16, double16, ulong16);
15055#endif //cl_khr_fp64
15056
15057#ifdef cl_khr_fp16
15058half2 __ovld __cnfn shuffle2(half2, half2, ushort2);
15059half2 __ovld __cnfn shuffle2(half4, half4, ushort2);
15060half2 __ovld __cnfn shuffle2(half8, half8, ushort2);
15061half2 __ovld __cnfn shuffle2(half16, half16, ushort2);
15062
15063half4 __ovld __cnfn shuffle2(half2, half2, ushort4);
15064half4 __ovld __cnfn shuffle2(half4, half4, ushort4);
15065half4 __ovld __cnfn shuffle2(half8, half8, ushort4);
15066half4 __ovld __cnfn shuffle2(half16, half16, ushort4);
15067
15068half8 __ovld __cnfn shuffle2(half2, half2, ushort8);
15069half8 __ovld __cnfn shuffle2(half4, half4, ushort8);
15070half8 __ovld __cnfn shuffle2(half8, half8, ushort8);
15071half8 __ovld __cnfn shuffle2(half16, half16, ushort8);
15072
15073half16 __ovld __cnfn shuffle2(half2, half2, ushort16);
15074half16 __ovld __cnfn shuffle2(half4, half4, ushort16);
15075half16 __ovld __cnfn shuffle2(half8, half8, ushort16);
15076half16 __ovld __cnfn shuffle2(half16, half16, ushort16);
15077#endif //cl_khr_fp16
15078
15079// OpenCL v1.1 s6.11.3, v1.2 s6.12.14, v2.0 s6.13.14 - Image Read and Write Functions
15080
15081#ifdef cl_khr_gl_msaa_sharing
15082#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable
15083#endif //cl_khr_gl_msaa_sharing
15084
15085/**
15086 * Use the coordinate (coord.xy) to do an element lookup in
15087 * the 2D image object specified by image.
15088 *
15089 * Use the coordinate (coord.x, coord.y, coord.z) to do
15090 * an element lookup in the 3D image object specified
15091 * by image. coord.w is ignored.
15092 *
15093 * Use the coordinate (coord.z) to index into the
15094 * 2D image array object specified by image_array
15095 * and (coord.x, coord.y) to do an element lookup in
15096 * the 2D image object specified by image.
15097 *
15098 * Use the coordinate (x) to do an element lookup in
15099 * the 1D image object specified by image.
15100 *
15101 * Use the coordinate (coord.y) to index into the
15102 * 1D image array object specified by image_array
15103 * and (coord.x) to do an element lookup in
15104 * the 1D image object specified by image.
15105 *
15106 * Use the coordinate (cood.xy) and sample to do an
15107 * element lookup in the 2D multi-sample image specified
15108 * by image.
15109 *
15110 * Use coord.xy and sample to do an element
15111 * lookup in the 2D multi-sample image layer
15112 * identified by index coord.z in the 2D multi-sample
15113 * image array specified by image.
15114 *
15115 * For mipmap images, use the mip-level specified by
15116 * the Level-of-Detail (lod) or use gradients for LOD
15117 * computation.
15118 *
15119 * read_imagef returns floating-point values in the
15120 * range [0.0 ... 1.0] for image objects created with
15121 * image_channel_data_type set to one of the predefined
15122 * packed formats or CL_UNORM_INT8, or
15123 * CL_UNORM_INT16.
15124 *
15125 * read_imagef returns floating-point values in the
15126 * range [-1.0 ... 1.0] for image objects created with
15127 * image_channel_data_type set to CL_SNORM_INT8,
15128 * or CL_SNORM_INT16.
15129 *
15130 * read_imagef returns floating-point values for image
15131 * objects created with image_channel_data_type set to
15132 * CL_HALF_FLOAT or CL_FLOAT.
15133 *
15134 * read_imagei and read_imageui return
15135 * unnormalized signed integer and unsigned integer
15136 * values respectively. Each channel will be stored in a
15137 * 32-bit integer.
15138 *
15139 * read_imagei can only be used with image objects
15140 * created with image_channel_data_type set to one of
15141 * the following values:
15142 * CL_SIGNED_INT8,
15143 * CL_SIGNED_INT16 and
15144 * CL_SIGNED_INT32.
15145 * If the image_channel_data_type is not one of the
15146 * above values, the values returned by read_imagei
15147 * are undefined.
15148 *
15149 * read_imageui can only be used with image objects
15150 * created with image_channel_data_type set to one of
15151 * the following values:
15152 * CL_UNSIGNED_INT8,
15153 * CL_UNSIGNED_INT16 and
15154 * CL_UNSIGNED_INT32.
15155 * If the image_channel_data_type is not one of the
15156 * above values, the values returned by read_imageui
15157 * are undefined.
15158 *
15159 * The read_image{i|ui} calls support a nearest filter
15160 * only. The filter_mode specified in sampler
15161 * must be set to CLK_FILTER_NEAREST; otherwise
15162 * the values returned are undefined.
15163
15164 * The read_image{f|i|ui} calls that take
15165 * integer coordinates must use a sampler with
15166 * normalized coordinates set to
15167 * CLK_NORMALIZED_COORDS_FALSE and
15168 * addressing mode set to
15169 * CLK_ADDRESS_CLAMP_TO_EDGE,
15170 * CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
15171 * otherwise the values returned are undefined.
15172 *
15173 * Values returned by read_imagef for image objects
15174 * with image_channel_data_type values not specified
15175 * in the description above are undefined.
15176 */
15177
15178float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, int2);
15179float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2);
15180
15181int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, int2);
15182int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2);
15183uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, int2);
15184uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2);
15185
15186float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, int4);
15187float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4);
15188
15189int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, int4);
15190int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4);
15191uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, int4);
15192uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4);
15193
15194#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15195float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, int4);
15196float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4);
15197
15198int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, int4);
15199int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4);
15200uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, int4);
15201uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4);
15202#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15203
15204float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, int);
15205float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float);
15206
15207int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, int);
15208int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float);
15209uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, int);
15210uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float);
15211
15212#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15213float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, int2);
15214float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2);
15215
15216int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, int2);
15217int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2);
15218uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, int2);
15219uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2);
15220#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15221
15222#ifdef cl_khr_depth_images
15223float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2);
15224float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, int2);
15225
15226float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4);
15227float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, int4);
15228#endif //cl_khr_depth_images
15229
15230#if defined(cl_khr_gl_msaa_sharing)
15231float4 __ovld __purefn read_imagef(read_only image2d_msaa_t, int2, int);
15232int4 __ovld __purefn read_imagei(read_only image2d_msaa_t, int2, int);
15233uint4 __ovld __purefn read_imageui(read_only image2d_msaa_t, int2, int);
15234
15235float __ovld __purefn read_imagef(read_only image2d_msaa_depth_t, int2, int);
15236
15237float4 __ovld __purefn read_imagef(read_only image2d_array_msaa_t, int4, int);
15238int4 __ovld __purefn read_imagei(read_only image2d_array_msaa_t, int4, int);
15239uint4 __ovld __purefn read_imageui(read_only image2d_array_msaa_t, int4, int);
15240
15241float __ovld __purefn read_imagef(read_only image2d_array_msaa_depth_t, int4, int);
15242#endif //cl_khr_gl_msaa_sharing
15243
15244// OpenCL Extension v2.0 s9.18 - Mipmaps
15245#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15246#ifdef cl_khr_mipmap_image
15247
15248float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float, float);
15249int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float, float);
15250uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float, float);
15251
15252float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2, float);
15253int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2, float);
15254uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2, float);
15255
15256float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2, float);
15257int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2, float);
15258uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2, float);
15259
15260#ifdef cl_khr_depth_images
15261float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2, float);
15262#endif // cl_khr_depth_images
15263
15264float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4, float);
15265int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4, float);
15266uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4, float);
15267
15268#ifdef cl_khr_depth_images
15269float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4, float);
15270#endif // cl_khr_depth_images
15271
15272float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4, float);
15273int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4, float);
15274uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4, float);
15275
15276float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float, float, float);
15277int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float, float, float);
15278uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float, float, float);
15279
15280float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2, float, float);
15281int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2, float, float);
15282uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2, float, float);
15283
15284float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2, float2, float2);
15285int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2, float2, float2);
15286uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2, float2, float2);
15287
15288#ifdef cl_khr_depth_images
15289float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2, float2, float2);
15290#endif // cl_khr_depth_images
15291
15292float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4, float2, float2);
15293int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4, float2, float2);
15294uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4, float2, float2);
15295
15296#ifdef cl_khr_depth_images
15297float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4, float2, float2);
15298#endif // cl_khr_depth_images
15299
15300float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4, float4, float4);
15301int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4, float4, float4);
15302uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4, float4, float4);
15303
15304#endif //cl_khr_mipmap_image
15305#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15306
15307#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15308
15309/**
15310* Sampler-less Image Access
15311*/
15312
15313float4 __ovld __purefn read_imagef(read_only image1d_t, int);
15314int4 __ovld __purefn read_imagei(read_only image1d_t, int);
15315uint4 __ovld __purefn read_imageui(read_only image1d_t, int);
15316
15317float4 __ovld __purefn read_imagef(read_only image1d_buffer_t, int);
15318int4 __ovld __purefn read_imagei(read_only image1d_buffer_t, int);
15319uint4 __ovld __purefn read_imageui(read_only image1d_buffer_t, int);
15320
15321float4 __ovld __purefn read_imagef(read_only image1d_array_t, int2);
15322int4 __ovld __purefn read_imagei(read_only image1d_array_t, int2);
15323uint4 __ovld __purefn read_imageui(read_only image1d_array_t, int2);
15324
15325float4 __ovld __purefn read_imagef(read_only image2d_t, int2);
15326int4 __ovld __purefn read_imagei(read_only image2d_t, int2);
15327uint4 __ovld __purefn read_imageui(read_only image2d_t, int2);
15328
15329float4 __ovld __purefn read_imagef(read_only image2d_array_t, int4);
15330int4 __ovld __purefn read_imagei(read_only image2d_array_t, int4);
15331uint4 __ovld __purefn read_imageui(read_only image2d_array_t, int4);
15332
15333#ifdef cl_khr_depth_images
15334float __ovld __purefn read_imagef(read_only image2d_depth_t, int2);
15335float __ovld __purefn read_imagef(read_only image2d_array_depth_t, int4);
15336#endif //cl_khr_depth_images
15337
15338float4 __ovld __purefn read_imagef(read_only image3d_t, int4);
15339int4 __ovld __purefn read_imagei(read_only image3d_t, int4);
15340uint4 __ovld __purefn read_imageui(read_only image3d_t, int4);
15341
15342#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15343
15344// Image read functions returning half4 type
15345#ifdef cl_khr_fp16
15346half4 __ovld __purefn read_imageh(read_only image1d_t, sampler_t, int);
15347half4 __ovld __purefn read_imageh(read_only image1d_t, sampler_t, float);
15348half4 __ovld __purefn read_imageh(read_only image2d_t, sampler_t, int2);
15349half4 __ovld __purefn read_imageh(read_only image2d_t, sampler_t, float2);
15350half4 __ovld __purefn read_imageh(read_only image3d_t, sampler_t, int4);
15351half4 __ovld __purefn read_imageh(read_only image3d_t, sampler_t, float4);
15352#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15353half4 __ovld __purefn read_imageh(read_only image1d_array_t, sampler_t, int2);
15354half4 __ovld __purefn read_imageh(read_only image1d_array_t, sampler_t, float2);
15355half4 __ovld __purefn read_imageh(read_only image2d_array_t, sampler_t, int4);
15356half4 __ovld __purefn read_imageh(read_only image2d_array_t, sampler_t, float4);
15357/**
15358 * Sampler-less Image Access
15359 */
15360half4 __ovld __purefn read_imageh(read_only image1d_t, int);
15361half4 __ovld __purefn read_imageh(read_only image2d_t, int2);
15362half4 __ovld __purefn read_imageh(read_only image3d_t, int4);
15363half4 __ovld __purefn read_imageh(read_only image1d_array_t, int2);
15364half4 __ovld __purefn read_imageh(read_only image2d_array_t, int4);
15365half4 __ovld __purefn read_imageh(read_only image1d_buffer_t, int);
15366#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15367#endif //cl_khr_fp16
15368
15369// Image read functions for read_write images
15370#if defined(__opencl_c_read_write_images)
15371float4 __ovld __purefn read_imagef(read_write image1d_t, int);
15372int4 __ovld __purefn read_imagei(read_write image1d_t, int);
15373uint4 __ovld __purefn read_imageui(read_write image1d_t, int);
15374
15375float4 __ovld __purefn read_imagef(read_write image1d_buffer_t, int);
15376int4 __ovld __purefn read_imagei(read_write image1d_buffer_t, int);
15377uint4 __ovld __purefn read_imageui(read_write image1d_buffer_t, int);
15378
15379float4 __ovld __purefn read_imagef(read_write image1d_array_t, int2);
15380int4 __ovld __purefn read_imagei(read_write image1d_array_t, int2);
15381uint4 __ovld __purefn read_imageui(read_write image1d_array_t, int2);
15382
15383float4 __ovld __purefn read_imagef(read_write image2d_t, int2);
15384int4 __ovld __purefn read_imagei(read_write image2d_t, int2);
15385uint4 __ovld __purefn read_imageui(read_write image2d_t, int2);
15386
15387float4 __ovld __purefn read_imagef(read_write image2d_array_t, int4);
15388int4 __ovld __purefn read_imagei(read_write image2d_array_t, int4);
15389uint4 __ovld __purefn read_imageui(read_write image2d_array_t, int4);
15390
15391#ifdef cl_khr_3d_image_writes
15392float4 __ovld __purefn read_imagef(read_write image3d_t, int4);
15393int4 __ovld __purefn read_imagei(read_write image3d_t, int4);
15394uint4 __ovld __purefn read_imageui(read_write image3d_t, int4);
15395#endif // cl_khr_3d_image_writes
15396
15397#ifdef cl_khr_depth_images
15398float __ovld __purefn read_imagef(read_write image2d_depth_t, int2);
15399float __ovld __purefn read_imagef(read_write image2d_array_depth_t, int4);
15400#endif //cl_khr_depth_images
15401
15402#if cl_khr_gl_msaa_sharing
15403float4 __ovld __purefn read_imagef(read_write image2d_msaa_t, int2, int);
15404int4 __ovld __purefn read_imagei(read_write image2d_msaa_t, int2, int);
15405uint4 __ovld __purefn read_imageui(read_write image2d_msaa_t, int2, int);
15406
15407float4 __ovld __purefn read_imagef(read_write image2d_array_msaa_t, int4, int);
15408int4 __ovld __purefn read_imagei(read_write image2d_array_msaa_t, int4, int);
15409uint4 __ovld __purefn read_imageui(read_write image2d_array_msaa_t, int4, int);
15410
15411float __ovld __purefn read_imagef(read_write image2d_msaa_depth_t, int2, int);
15412float __ovld __purefn read_imagef(read_write image2d_array_msaa_depth_t, int4, int);
15413#endif //cl_khr_gl_msaa_sharing
15414
15415#ifdef cl_khr_mipmap_image
15416float4 __ovld __purefn read_imagef(read_write image1d_t, sampler_t, float, float);
15417int4 __ovld __purefn read_imagei(read_write image1d_t, sampler_t, float, float);
15418uint4 __ovld __purefn read_imageui(read_write image1d_t, sampler_t, float, float);
15419
15420float4 __ovld __purefn read_imagef(read_write image1d_array_t, sampler_t, float2, float);
15421int4 __ovld __purefn read_imagei(read_write image1d_array_t, sampler_t, float2, float);
15422uint4 __ovld __purefn read_imageui(read_write image1d_array_t, sampler_t, float2, float);
15423
15424float4 __ovld __purefn read_imagef(read_write image2d_t, sampler_t, float2, float);
15425int4 __ovld __purefn read_imagei(read_write image2d_t, sampler_t, float2, float);
15426uint4 __ovld __purefn read_imageui(read_write image2d_t, sampler_t, float2, float);
15427
15428float __ovld __purefn read_imagef(read_write image2d_depth_t, sampler_t, float2, float);
15429
15430float4 __ovld __purefn read_imagef(read_write image2d_array_t, sampler_t, float4, float);
15431int4 __ovld __purefn read_imagei(read_write image2d_array_t, sampler_t, float4, float);
15432uint4 __ovld __purefn read_imageui(read_write image2d_array_t, sampler_t, float4, float);
15433
15434float __ovld __purefn read_imagef(read_write image2d_array_depth_t, sampler_t, float4, float);
15435
15436#ifdef cl_khr_3d_image_writes
15437float4 __ovld __purefn read_imagef(read_write image3d_t, sampler_t, float4, float);
15438int4 __ovld __purefn read_imagei(read_write image3d_t, sampler_t, float4, float);
15439uint4 __ovld __purefn read_imageui(read_write image3d_t, sampler_t, float4, float);
15440#endif // cl_khr_3d_image_writes
15441
15442float4 __ovld __purefn read_imagef(read_write image1d_t, sampler_t, float, float, float);
15443int4 __ovld __purefn read_imagei(read_write image1d_t, sampler_t, float, float, float);
15444uint4 __ovld __purefn read_imageui(read_write image1d_t, sampler_t, float, float, float);
15445
15446float4 __ovld __purefn read_imagef(read_write image1d_array_t, sampler_t, float2, float, float);
15447int4 __ovld __purefn read_imagei(read_write image1d_array_t, sampler_t, float2, float, float);
15448uint4 __ovld __purefn read_imageui(read_write image1d_array_t, sampler_t, float2, float, float);
15449
15450float4 __ovld __purefn read_imagef(read_write image2d_t, sampler_t, float2, float2, float2);
15451int4 __ovld __purefn read_imagei(read_write image2d_t, sampler_t, float2, float2, float2);
15452uint4 __ovld __purefn read_imageui(read_write image2d_t, sampler_t, float2, float2, float2);
15453
15454float __ovld __purefn read_imagef(read_write image2d_depth_t, sampler_t, float2, float2, float2);
15455
15456float4 __ovld __purefn read_imagef(read_write image2d_array_t, sampler_t, float4, float2, float2);
15457int4 __ovld __purefn read_imagei(read_write image2d_array_t, sampler_t, float4, float2, float2);
15458uint4 __ovld __purefn read_imageui(read_write image2d_array_t, sampler_t, float4, float2, float2);
15459
15460float __ovld __purefn read_imagef(read_write image2d_array_depth_t, sampler_t, float4, float2, float2);
15461
15462#ifdef cl_khr_3d_image_writes
15463float4 __ovld __purefn read_imagef(read_write image3d_t, sampler_t, float4, float4, float4);
15464int4 __ovld __purefn read_imagei(read_write image3d_t, sampler_t, float4, float4, float4);
15465uint4 __ovld __purefn read_imageui(read_write image3d_t, sampler_t, float4, float4, float4);
15466#endif // cl_khr_3d_image_writes
15467
15468#endif //cl_khr_mipmap_image
15469
15470// Image read functions returning half4 type
15471#ifdef cl_khr_fp16
15472half4 __ovld __purefn read_imageh(read_write image1d_t, int);
15473half4 __ovld __purefn read_imageh(read_write image2d_t, int2);
15474#ifdef cl_khr_3d_image_writes
15475half4 __ovld __purefn read_imageh(read_write image3d_t, int4);
15476#endif // cl_khr_3d_image_writes
15477half4 __ovld __purefn read_imageh(read_write image1d_array_t, int2);
15478half4 __ovld __purefn read_imageh(read_write image2d_array_t, int4);
15479half4 __ovld __purefn read_imageh(read_write image1d_buffer_t, int);
15480#endif //cl_khr_fp16
15481#endif //defined(__opencl_c_read_write_images)
15482
15483/**
15484 * Write color value to location specified by coordinate
15485 * (coord.x, coord.y) in the 2D image object specified by image.
15486 * (coord.x, coord.y) are considered to be unnormalized coordinates
15487 * and must be in the range 0 ... image width - 1, and 0
15488 * ... image height - 1.
15489
15490 * Write color value to location specified by coordinate
15491 * (coord.x, coord.y) in the 2D image object specified by index
15492 * (coord.z) of the 2D image array object image_array.
15493 * (coord.x, coord.y) are considered to be unnormalized
15494 * coordinates and must be in the range 0 ... image width
15495 * - 1.
15496 *
15497 * Write color value to location specified by coordinate
15498 * (coord) in the 1D image (buffer) object specified by image.
15499 * coord is considered to be unnormalized coordinates
15500 * and must be in the range 0 ... image width - 1.
15501 *
15502 * Write color value to location specified by coordinate
15503 * (coord.x) in the 1D image object specified by index
15504 * (coord.y) of the 1D image array object image_array.
15505 * x is considered to be unnormalized coordinates
15506 * and must be in the range 0 ... image width - 1.
15507 *
15508 * Write color value to location specified by coordinate
15509 * (coord.x, coord.y, coord.z) in the 3D image object specified by image.
15510 * coord.x & coord.y are considered to be unnormalized coordinates
15511 * and must be in the range 0 ... image width - 1, and 0
15512 * ... image height - 1.
15513 *
15514 * For mipmap images, use mip-level specified by lod.
15515 *
15516 * Appropriate data format conversion to the specified
15517 * image format is done before writing the color value.
15518 *
15519 * write_imagef can only be used with image objects
15520 * created with image_channel_data_type set to one of
15521 * the pre-defined packed formats or set to
15522 * CL_SNORM_INT8, CL_UNORM_INT8,
15523 * CL_SNORM_INT16, CL_UNORM_INT16,
15524 * CL_HALF_FLOAT or CL_FLOAT. Appropriate data
15525 * format conversion will be done to convert channel
15526 * data from a floating-point value to actual data format
15527 * in which the channels are stored.
15528 *
15529 * write_imagei can only be used with image objects
15530 * created with image_channel_data_type set to one of
15531 * the following values:
15532 * CL_SIGNED_INT8,
15533 * CL_SIGNED_INT16 and
15534 * CL_SIGNED_INT32.
15535 *
15536 * write_imageui can only be used with image objects
15537 * created with image_channel_data_type set to one of
15538 * the following values:
15539 * CL_UNSIGNED_INT8,
15540 * CL_UNSIGNED_INT16 and
15541 * CL_UNSIGNED_INT32.
15542 *
15543 * The behavior of write_imagef, write_imagei and
15544 * write_imageui for image objects created with
15545 * image_channel_data_type values not specified in
15546 * the description above or with (x, y) coordinate
15547 * values that are not in the range (0 ... image width -1,
15548 * 0 ... image height - 1), respectively, is undefined.
15549 */
15550void __ovld write_imagef(write_only image2d_t, int2, float4);
15551void __ovld write_imagei(write_only image2d_t, int2, int4);
15552void __ovld write_imageui(write_only image2d_t, int2, uint4);
15553
15554void __ovld write_imagef(write_only image2d_array_t, int4, float4);
15555void __ovld write_imagei(write_only image2d_array_t, int4, int4);
15556void __ovld write_imageui(write_only image2d_array_t, int4, uint4);
15557
15558void __ovld write_imagef(write_only image1d_t, int, float4);
15559void __ovld write_imagei(write_only image1d_t, int, int4);
15560void __ovld write_imageui(write_only image1d_t, int, uint4);
15561
15562void __ovld write_imagef(write_only image1d_buffer_t, int, float4);
15563void __ovld write_imagei(write_only image1d_buffer_t, int, int4);
15564void __ovld write_imageui(write_only image1d_buffer_t, int, uint4);
15565
15566void __ovld write_imagef(write_only image1d_array_t, int2, float4);
15567void __ovld write_imagei(write_only image1d_array_t, int2, int4);
15568void __ovld write_imageui(write_only image1d_array_t, int2, uint4);
15569
15570#ifdef cl_khr_3d_image_writes
15571void __ovld write_imagef(write_only image3d_t, int4, float4);
15572void __ovld write_imagei(write_only image3d_t, int4, int4);
15573void __ovld write_imageui(write_only image3d_t, int4, uint4);
15574#endif
15575
15576#ifdef cl_khr_depth_images
15577void __ovld write_imagef(write_only image2d_depth_t, int2, float);
15578void __ovld write_imagef(write_only image2d_array_depth_t, int4, float);
15579#endif //cl_khr_depth_images
15580
15581// OpenCL Extension v2.0 s9.18 - Mipmaps
15582#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15583#if defined(cl_khr_mipmap_image_writes)
15584void __ovld write_imagef(write_only image1d_t, int, int, float4);
15585void __ovld write_imagei(write_only image1d_t, int, int, int4);
15586void __ovld write_imageui(write_only image1d_t, int, int, uint4);
15587
15588void __ovld write_imagef(write_only image1d_array_t, int2, int, float4);
15589void __ovld write_imagei(write_only image1d_array_t, int2, int, int4);
15590void __ovld write_imageui(write_only image1d_array_t, int2, int, uint4);
15591
15592void __ovld write_imagef(write_only image2d_t, int2, int, float4);
15593void __ovld write_imagei(write_only image2d_t, int2, int, int4);
15594void __ovld write_imageui(write_only image2d_t, int2, int, uint4);
15595
15596void __ovld write_imagef(write_only image2d_array_t, int4, int, float4);
15597void __ovld write_imagei(write_only image2d_array_t, int4, int, int4);
15598void __ovld write_imageui(write_only image2d_array_t, int4, int, uint4);
15599
15600void __ovld write_imagef(write_only image2d_depth_t, int2, int, float);
15601void __ovld write_imagef(write_only image2d_array_depth_t, int4, int, float);
15602
15603#ifdef cl_khr_3d_image_writes
15604void __ovld write_imagef(write_only image3d_t, int4, int, float4);
15605void __ovld write_imagei(write_only image3d_t, int4, int, int4);
15606void __ovld write_imageui(write_only image3d_t, int4, int, uint4);
15607#endif //cl_khr_3d_image_writes
15608
15609#endif //defined(cl_khr_mipmap_image_writes)
15610#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15611
15612// Image write functions for half4 type
15613#ifdef cl_khr_fp16
15614void __ovld write_imageh(write_only image1d_t, int, half4);
15615void __ovld write_imageh(write_only image2d_t, int2, half4);
15616#ifdef cl_khr_3d_image_writes
15617void __ovld write_imageh(write_only image3d_t, int4, half4);
15618#endif
15619void __ovld write_imageh(write_only image1d_array_t, int2, half4);
15620void __ovld write_imageh(write_only image2d_array_t, int4, half4);
15621void __ovld write_imageh(write_only image1d_buffer_t, int, half4);
15622#endif //cl_khr_fp16
15623
15624// Image write functions for read_write images
15625#if defined(__opencl_c_read_write_images)
15626void __ovld write_imagef(read_write image2d_t, int2, float4);
15627void __ovld write_imagei(read_write image2d_t, int2, int4);
15628void __ovld write_imageui(read_write image2d_t, int2, uint4);
15629
15630void __ovld write_imagef(read_write image2d_array_t, int4, float4);
15631void __ovld write_imagei(read_write image2d_array_t, int4, int4);
15632void __ovld write_imageui(read_write image2d_array_t, int4, uint4);
15633
15634void __ovld write_imagef(read_write image1d_t, int, float4);
15635void __ovld write_imagei(read_write image1d_t, int, int4);
15636void __ovld write_imageui(read_write image1d_t, int, uint4);
15637
15638void __ovld write_imagef(read_write image1d_buffer_t, int, float4);
15639void __ovld write_imagei(read_write image1d_buffer_t, int, int4);
15640void __ovld write_imageui(read_write image1d_buffer_t, int, uint4);
15641
15642void __ovld write_imagef(read_write image1d_array_t, int2, float4);
15643void __ovld write_imagei(read_write image1d_array_t, int2, int4);
15644void __ovld write_imageui(read_write image1d_array_t, int2, uint4);
15645
15646#ifdef cl_khr_3d_image_writes
15647void __ovld write_imagef(read_write image3d_t, int4, float4);
15648void __ovld write_imagei(read_write image3d_t, int4, int4);
15649void __ovld write_imageui(read_write image3d_t, int4, uint4);
15650#endif
15651
15652#ifdef cl_khr_depth_images
15653void __ovld write_imagef(read_write image2d_depth_t, int2, float);
15654void __ovld write_imagef(read_write image2d_array_depth_t, int4, float);
15655#endif //cl_khr_depth_images
15656
15657#if defined(cl_khr_mipmap_image_writes)
15658void __ovld write_imagef(read_write image1d_t, int, int, float4);
15659void __ovld write_imagei(read_write image1d_t, int, int, int4);
15660void __ovld write_imageui(read_write image1d_t, int, int, uint4);
15661
15662void __ovld write_imagef(read_write image1d_array_t, int2, int, float4);
15663void __ovld write_imagei(read_write image1d_array_t, int2, int, int4);
15664void __ovld write_imageui(read_write image1d_array_t, int2, int, uint4);
15665
15666void __ovld write_imagef(read_write image2d_t, int2, int, float4);
15667void __ovld write_imagei(read_write image2d_t, int2, int, int4);
15668void __ovld write_imageui(read_write image2d_t, int2, int, uint4);
15669
15670void __ovld write_imagef(read_write image2d_array_t, int4, int, float4);
15671void __ovld write_imagei(read_write image2d_array_t, int4, int, int4);
15672void __ovld write_imageui(read_write image2d_array_t, int4, int, uint4);
15673
15674void __ovld write_imagef(read_write image2d_depth_t, int2, int, float);
15675void __ovld write_imagef(read_write image2d_array_depth_t, int4, int, float);
15676
15677#ifdef cl_khr_3d_image_writes
15678void __ovld write_imagef(read_write image3d_t, int4, int, float4);
15679void __ovld write_imagei(read_write image3d_t, int4, int, int4);
15680void __ovld write_imageui(read_write image3d_t, int4, int, uint4);
15681#endif //cl_khr_3d_image_writes
15682
15683#endif //cl_khr_mipmap_image_writes
15684
15685// Image write functions for half4 type
15686#ifdef cl_khr_fp16
15687void __ovld write_imageh(read_write image1d_t, int, half4);
15688void __ovld write_imageh(read_write image2d_t, int2, half4);
15689#ifdef cl_khr_3d_image_writes
15690void __ovld write_imageh(read_write image3d_t, int4, half4);
15691#endif
15692void __ovld write_imageh(read_write image1d_array_t, int2, half4);
15693void __ovld write_imageh(read_write image2d_array_t, int4, half4);
15694void __ovld write_imageh(read_write image1d_buffer_t, int, half4);
15695#endif //cl_khr_fp16
15696#endif //defined(__opencl_c_read_write_images)
15697
15698// Note: In OpenCL v1.0/1.1/1.2, image argument of image query builtin functions does not have
15699// access qualifier, which by default assume read_only access qualifier. Image query builtin
15700// functions with write_only image argument should also be declared.
15701
15702/**
15703 * Return the image width in pixels.
15704 *
15705 */
15706int __ovld __cnfn get_image_width(read_only image1d_t);
15707int __ovld __cnfn get_image_width(read_only image1d_buffer_t);
15708int __ovld __cnfn get_image_width(read_only image2d_t);
15709int __ovld __cnfn get_image_width(read_only image3d_t);
15710int __ovld __cnfn get_image_width(read_only image1d_array_t);
15711int __ovld __cnfn get_image_width(read_only image2d_array_t);
15712#ifdef cl_khr_depth_images
15713int __ovld __cnfn get_image_width(read_only image2d_depth_t);
15714int __ovld __cnfn get_image_width(read_only image2d_array_depth_t);
15715#endif //cl_khr_depth_images
15716#if defined(cl_khr_gl_msaa_sharing)
15717int __ovld __cnfn get_image_width(read_only image2d_msaa_t);
15718int __ovld __cnfn get_image_width(read_only image2d_msaa_depth_t);
15719int __ovld __cnfn get_image_width(read_only image2d_array_msaa_t);
15720int __ovld __cnfn get_image_width(read_only image2d_array_msaa_depth_t);
15721#endif //cl_khr_gl_msaa_sharing
15722
15723int __ovld __cnfn get_image_width(write_only image1d_t);
15724int __ovld __cnfn get_image_width(write_only image1d_buffer_t);
15725int __ovld __cnfn get_image_width(write_only image2d_t);
15726#ifdef cl_khr_3d_image_writes
15727int __ovld __cnfn get_image_width(write_only image3d_t);
15728#endif
15729int __ovld __cnfn get_image_width(write_only image1d_array_t);
15730int __ovld __cnfn get_image_width(write_only image2d_array_t);
15731#ifdef cl_khr_depth_images
15732int __ovld __cnfn get_image_width(write_only image2d_depth_t);
15733int __ovld __cnfn get_image_width(write_only image2d_array_depth_t);
15734#endif //cl_khr_depth_images
15735#if defined(cl_khr_gl_msaa_sharing)
15736int __ovld __cnfn get_image_width(write_only image2d_msaa_t);
15737int __ovld __cnfn get_image_width(write_only image2d_msaa_depth_t);
15738int __ovld __cnfn get_image_width(write_only image2d_array_msaa_t);
15739int __ovld __cnfn get_image_width(write_only image2d_array_msaa_depth_t);
15740#endif //cl_khr_gl_msaa_sharing
15741
15742#if defined(__opencl_c_read_write_images)
15743int __ovld __cnfn get_image_width(read_write image1d_t);
15744int __ovld __cnfn get_image_width(read_write image1d_buffer_t);
15745int __ovld __cnfn get_image_width(read_write image2d_t);
15746#ifdef cl_khr_3d_image_writes
15747int __ovld __cnfn get_image_width(read_write image3d_t);
15748#endif // cl_khr_3d_image_writes
15749int __ovld __cnfn get_image_width(read_write image1d_array_t);
15750int __ovld __cnfn get_image_width(read_write image2d_array_t);
15751#ifdef cl_khr_depth_images
15752int __ovld __cnfn get_image_width(read_write image2d_depth_t);
15753int __ovld __cnfn get_image_width(read_write image2d_array_depth_t);
15754#endif //cl_khr_depth_images
15755#if defined(cl_khr_gl_msaa_sharing)
15756int __ovld __cnfn get_image_width(read_write image2d_msaa_t);
15757int __ovld __cnfn get_image_width(read_write image2d_msaa_depth_t);
15758int __ovld __cnfn get_image_width(read_write image2d_array_msaa_t);
15759int __ovld __cnfn get_image_width(read_write image2d_array_msaa_depth_t);
15760#endif //cl_khr_gl_msaa_sharing
15761#endif //defined(__opencl_c_read_write_images)
15762
15763/**
15764 * Return the image height in pixels.
15765 */
15766int __ovld __cnfn get_image_height(read_only image2d_t);
15767int __ovld __cnfn get_image_height(read_only image3d_t);
15768int __ovld __cnfn get_image_height(read_only image2d_array_t);
15769#ifdef cl_khr_depth_images
15770int __ovld __cnfn get_image_height(read_only image2d_depth_t);
15771int __ovld __cnfn get_image_height(read_only image2d_array_depth_t);
15772#endif //cl_khr_depth_images
15773#if defined(cl_khr_gl_msaa_sharing)
15774int __ovld __cnfn get_image_height(read_only image2d_msaa_t);
15775int __ovld __cnfn get_image_height(read_only image2d_msaa_depth_t);
15776int __ovld __cnfn get_image_height(read_only image2d_array_msaa_t);
15777int __ovld __cnfn get_image_height(read_only image2d_array_msaa_depth_t);
15778#endif //cl_khr_gl_msaa_sharing
15779
15780int __ovld __cnfn get_image_height(write_only image2d_t);
15781#ifdef cl_khr_3d_image_writes
15782int __ovld __cnfn get_image_height(write_only image3d_t);
15783#endif
15784int __ovld __cnfn get_image_height(write_only image2d_array_t);
15785#ifdef cl_khr_depth_images
15786int __ovld __cnfn get_image_height(write_only image2d_depth_t);
15787int __ovld __cnfn get_image_height(write_only image2d_array_depth_t);
15788#endif //cl_khr_depth_images
15789#if defined(cl_khr_gl_msaa_sharing)
15790int __ovld __cnfn get_image_height(write_only image2d_msaa_t);
15791int __ovld __cnfn get_image_height(write_only image2d_msaa_depth_t);
15792int __ovld __cnfn get_image_height(write_only image2d_array_msaa_t);
15793int __ovld __cnfn get_image_height(write_only image2d_array_msaa_depth_t);
15794#endif //cl_khr_gl_msaa_sharing
15795
15796#if defined(__opencl_c_read_write_images)
15797int __ovld __cnfn get_image_height(read_write image2d_t);
15798#ifdef cl_khr_3d_image_writes
15799int __ovld __cnfn get_image_height(read_write image3d_t);
15800#endif // cl_khr_3d_image_writes
15801int __ovld __cnfn get_image_height(read_write image2d_array_t);
15802#ifdef cl_khr_depth_images
15803int __ovld __cnfn get_image_height(read_write image2d_depth_t);
15804int __ovld __cnfn get_image_height(read_write image2d_array_depth_t);
15805#endif //cl_khr_depth_images
15806#if defined(cl_khr_gl_msaa_sharing)
15807int __ovld __cnfn get_image_height(read_write image2d_msaa_t);
15808int __ovld __cnfn get_image_height(read_write image2d_msaa_depth_t);
15809int __ovld __cnfn get_image_height(read_write image2d_array_msaa_t);
15810int __ovld __cnfn get_image_height(read_write image2d_array_msaa_depth_t);
15811#endif //cl_khr_gl_msaa_sharing
15812#endif //defined(__opencl_c_read_write_images)
15813
15814/**
15815 * Return the image depth in pixels.
15816 */
15817int __ovld __cnfn get_image_depth(read_only image3d_t);
15818
15819#ifdef cl_khr_3d_image_writes
15820int __ovld __cnfn get_image_depth(write_only image3d_t);
15821
15822#if defined(__opencl_c_read_write_images)
15823int __ovld __cnfn get_image_depth(read_write image3d_t);
15824#endif //defined(__opencl_c_read_write_images)
15825#endif // cl_khr_3d_image_writes
15826
15827// OpenCL Extension v2.0 s9.18 - Mipmaps
15828#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15829#ifdef cl_khr_mipmap_image
15830/**
15831 * Return the image miplevels.
15832 */
15833
15834int __ovld get_image_num_mip_levels(read_only image1d_t);
15835int __ovld get_image_num_mip_levels(read_only image2d_t);
15836int __ovld get_image_num_mip_levels(read_only image3d_t);
15837
15838int __ovld get_image_num_mip_levels(write_only image1d_t);
15839int __ovld get_image_num_mip_levels(write_only image2d_t);
15840#ifdef cl_khr_3d_image_writes
15841int __ovld get_image_num_mip_levels(write_only image3d_t);
15842#endif
15843
15844#if defined(__opencl_c_read_write_images)
15845int __ovld get_image_num_mip_levels(read_write image1d_t);
15846int __ovld get_image_num_mip_levels(read_write image2d_t);
15847#ifdef cl_khr_3d_image_writes
15848int __ovld get_image_num_mip_levels(read_write image3d_t);
15849#endif // cl_khr_3d_image_writes
15850#endif //defined(__opencl_c_read_write_images)
15851
15852int __ovld get_image_num_mip_levels(read_only image1d_array_t);
15853int __ovld get_image_num_mip_levels(read_only image2d_array_t);
15854#ifdef cl_khr_depth_images
15855int __ovld get_image_num_mip_levels(read_only image2d_array_depth_t);
15856int __ovld get_image_num_mip_levels(read_only image2d_depth_t);
15857#endif // cl_khr_depth_images
15858
15859int __ovld get_image_num_mip_levels(write_only image1d_array_t);
15860int __ovld get_image_num_mip_levels(write_only image2d_array_t);
15861#ifdef cl_khr_depth_images
15862int __ovld get_image_num_mip_levels(write_only image2d_array_depth_t);
15863int __ovld get_image_num_mip_levels(write_only image2d_depth_t);
15864#endif // cl_khr_depth_images
15865
15866#if defined(__opencl_c_read_write_images)
15867int __ovld get_image_num_mip_levels(read_write image1d_array_t);
15868int __ovld get_image_num_mip_levels(read_write image2d_array_t);
15869#ifdef cl_khr_depth_images
15870int __ovld get_image_num_mip_levels(read_write image2d_array_depth_t);
15871int __ovld get_image_num_mip_levels(read_write image2d_depth_t);
15872#endif // cl_khr_depth_images
15873#endif //defined(__opencl_c_read_write_images)
15874
15875#endif //cl_khr_mipmap_image
15876#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15877
15878/**
15879 * Return the channel data type. Valid values are:
15880 * CLK_SNORM_INT8
15881 * CLK_SNORM_INT16
15882 * CLK_UNORM_INT8
15883 * CLK_UNORM_INT16
15884 * CLK_UNORM_SHORT_565
15885 * CLK_UNORM_SHORT_555
15886 * CLK_UNORM_SHORT_101010
15887 * CLK_SIGNED_INT8
15888 * CLK_SIGNED_INT16
15889 * CLK_SIGNED_INT32
15890 * CLK_UNSIGNED_INT8
15891 * CLK_UNSIGNED_INT16
15892 * CLK_UNSIGNED_INT32
15893 * CLK_HALF_FLOAT
15894 * CLK_FLOAT
15895 */
15896
15898int __ovld __cnfn get_image_channel_data_type(read_only image1d_buffer_t);
15899int __ovld __cnfn get_image_channel_data_type(read_only image2d_t);
15900int __ovld __cnfn get_image_channel_data_type(read_only image3d_t);
15901int __ovld __cnfn get_image_channel_data_type(read_only image1d_array_t);
15902int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_t);
15903#ifdef cl_khr_depth_images
15904int __ovld __cnfn get_image_channel_data_type(read_only image2d_depth_t);
15905int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_depth_t);
15906#endif //cl_khr_depth_images
15907#if defined(cl_khr_gl_msaa_sharing)
15908int __ovld __cnfn get_image_channel_data_type(read_only image2d_msaa_t);
15909int __ovld __cnfn get_image_channel_data_type(read_only image2d_msaa_depth_t);
15910int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_msaa_t);
15911int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_msaa_depth_t);
15912#endif //cl_khr_gl_msaa_sharing
15913
15915int __ovld __cnfn get_image_channel_data_type(write_only image1d_buffer_t);
15916int __ovld __cnfn get_image_channel_data_type(write_only image2d_t);
15917#ifdef cl_khr_3d_image_writes
15918int __ovld __cnfn get_image_channel_data_type(write_only image3d_t);
15919#endif
15920int __ovld __cnfn get_image_channel_data_type(write_only image1d_array_t);
15921int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_t);
15922#ifdef cl_khr_depth_images
15923int __ovld __cnfn get_image_channel_data_type(write_only image2d_depth_t);
15924int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_depth_t);
15925#endif //cl_khr_depth_images
15926#if defined(cl_khr_gl_msaa_sharing)
15927int __ovld __cnfn get_image_channel_data_type(write_only image2d_msaa_t);
15928int __ovld __cnfn get_image_channel_data_type(write_only image2d_msaa_depth_t);
15929int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_t);
15930int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_depth_t);
15931#endif //cl_khr_gl_msaa_sharing
15932
15933#if defined(__opencl_c_read_write_images)
15934int __ovld __cnfn get_image_channel_data_type(read_write image1d_t);
15935int __ovld __cnfn get_image_channel_data_type(read_write image1d_buffer_t);
15936int __ovld __cnfn get_image_channel_data_type(read_write image2d_t);
15937#ifdef cl_khr_3d_image_writes
15938int __ovld __cnfn get_image_channel_data_type(read_write image3d_t);
15939#endif // cl_khr_3d_image_writes
15940int __ovld __cnfn get_image_channel_data_type(read_write image1d_array_t);
15941int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_t);
15942#ifdef cl_khr_depth_images
15943int __ovld __cnfn get_image_channel_data_type(read_write image2d_depth_t);
15944int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_depth_t);
15945#endif //cl_khr_depth_images
15946#if defined(cl_khr_gl_msaa_sharing)
15947int __ovld __cnfn get_image_channel_data_type(read_write image2d_msaa_t);
15948int __ovld __cnfn get_image_channel_data_type(read_write image2d_msaa_depth_t);
15949int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_t);
15950int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_depth_t);
15951#endif //cl_khr_gl_msaa_sharing
15952#endif //defined(__opencl_c_read_write_images)
15953
15954/**
15955 * Return the image channel order. Valid values are:
15956 * CLK_A
15957 * CLK_R
15958 * CLK_Rx
15959 * CLK_RG
15960 * CLK_RGx
15961 * CLK_RA
15962 * CLK_RGB
15963 * CLK_RGBx
15964 * CLK_RGBA
15965 * CLK_ARGB
15966 * CLK_BGRA
15967 * CLK_INTENSITY
15968 * CLK_LUMINANCE
15969 */
15970
15971int __ovld __cnfn get_image_channel_order(read_only image1d_t);
15972int __ovld __cnfn get_image_channel_order(read_only image1d_buffer_t);
15973int __ovld __cnfn get_image_channel_order(read_only image2d_t);
15974int __ovld __cnfn get_image_channel_order(read_only image3d_t);
15975int __ovld __cnfn get_image_channel_order(read_only image1d_array_t);
15976int __ovld __cnfn get_image_channel_order(read_only image2d_array_t);
15977#ifdef cl_khr_depth_images
15978int __ovld __cnfn get_image_channel_order(read_only image2d_depth_t);
15979int __ovld __cnfn get_image_channel_order(read_only image2d_array_depth_t);
15980#endif //cl_khr_depth_images
15981#if defined(cl_khr_gl_msaa_sharing)
15982int __ovld __cnfn get_image_channel_order(read_only image2d_msaa_t);
15983int __ovld __cnfn get_image_channel_order(read_only image2d_msaa_depth_t);
15984int __ovld __cnfn get_image_channel_order(read_only image2d_array_msaa_t);
15985int __ovld __cnfn get_image_channel_order(read_only image2d_array_msaa_depth_t);
15986#endif //cl_khr_gl_msaa_sharing
15987
15988int __ovld __cnfn get_image_channel_order(write_only image1d_t);
15989int __ovld __cnfn get_image_channel_order(write_only image1d_buffer_t);
15990int __ovld __cnfn get_image_channel_order(write_only image2d_t);
15991#ifdef cl_khr_3d_image_writes
15992int __ovld __cnfn get_image_channel_order(write_only image3d_t);
15993#endif
15994int __ovld __cnfn get_image_channel_order(write_only image1d_array_t);
15995int __ovld __cnfn get_image_channel_order(write_only image2d_array_t);
15996#ifdef cl_khr_depth_images
15997int __ovld __cnfn get_image_channel_order(write_only image2d_depth_t);
15998int __ovld __cnfn get_image_channel_order(write_only image2d_array_depth_t);
15999#endif //cl_khr_depth_images
16000#if defined(cl_khr_gl_msaa_sharing)
16001int __ovld __cnfn get_image_channel_order(write_only image2d_msaa_t);
16002int __ovld __cnfn get_image_channel_order(write_only image2d_msaa_depth_t);
16003int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_t);
16004int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_depth_t);
16005#endif //cl_khr_gl_msaa_sharing
16006
16007#if defined(__opencl_c_read_write_images)
16008int __ovld __cnfn get_image_channel_order(read_write image1d_t);
16009int __ovld __cnfn get_image_channel_order(read_write image1d_buffer_t);
16010int __ovld __cnfn get_image_channel_order(read_write image2d_t);
16011#ifdef cl_khr_3d_image_writes
16012int __ovld __cnfn get_image_channel_order(read_write image3d_t);
16013#endif // cl_khr_3d_image_writes
16014int __ovld __cnfn get_image_channel_order(read_write image1d_array_t);
16015int __ovld __cnfn get_image_channel_order(read_write image2d_array_t);
16016#ifdef cl_khr_depth_images
16017int __ovld __cnfn get_image_channel_order(read_write image2d_depth_t);
16018int __ovld __cnfn get_image_channel_order(read_write image2d_array_depth_t);
16019#endif //cl_khr_depth_images
16020#if defined(cl_khr_gl_msaa_sharing)
16021int __ovld __cnfn get_image_channel_order(read_write image2d_msaa_t);
16022int __ovld __cnfn get_image_channel_order(read_write image2d_msaa_depth_t);
16023int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_t);
16024int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_depth_t);
16025#endif //cl_khr_gl_msaa_sharing
16026#endif //defined(__opencl_c_read_write_images)
16027
16028/**
16029 * Return the 2D image width and height as an int2
16030 * type. The width is returned in the x component, and
16031 * the height in the y component.
16032 */
16033int2 __ovld __cnfn get_image_dim(read_only image2d_t);
16034int2 __ovld __cnfn get_image_dim(read_only image2d_array_t);
16035#ifdef cl_khr_depth_images
16036int2 __ovld __cnfn get_image_dim(read_only image2d_array_depth_t);
16037int2 __ovld __cnfn get_image_dim(read_only image2d_depth_t);
16038#endif //cl_khr_depth_images
16039#if defined(cl_khr_gl_msaa_sharing)
16040int2 __ovld __cnfn get_image_dim(read_only image2d_msaa_t);
16041int2 __ovld __cnfn get_image_dim(read_only image2d_msaa_depth_t);
16042int2 __ovld __cnfn get_image_dim(read_only image2d_array_msaa_t);
16043int2 __ovld __cnfn get_image_dim(read_only image2d_array_msaa_depth_t);
16044#endif //cl_khr_gl_msaa_sharing
16045
16046int2 __ovld __cnfn get_image_dim(write_only image2d_t);
16047int2 __ovld __cnfn get_image_dim(write_only image2d_array_t);
16048#ifdef cl_khr_depth_images
16049int2 __ovld __cnfn get_image_dim(write_only image2d_array_depth_t);
16050int2 __ovld __cnfn get_image_dim(write_only image2d_depth_t);
16051#endif //cl_khr_depth_images
16052#if defined(cl_khr_gl_msaa_sharing)
16053int2 __ovld __cnfn get_image_dim(write_only image2d_msaa_t);
16054int2 __ovld __cnfn get_image_dim(write_only image2d_msaa_depth_t);
16055int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_t);
16056int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_depth_t);
16057#endif //cl_khr_gl_msaa_sharing
16058
16059#if defined(__opencl_c_read_write_images)
16060int2 __ovld __cnfn get_image_dim(read_write image2d_t);
16061int2 __ovld __cnfn get_image_dim(read_write image2d_array_t);
16062#ifdef cl_khr_depth_images
16063int2 __ovld __cnfn get_image_dim(read_write image2d_array_depth_t);
16064int2 __ovld __cnfn get_image_dim(read_write image2d_depth_t);
16065#endif //cl_khr_depth_images
16066#if defined(cl_khr_gl_msaa_sharing)
16067int2 __ovld __cnfn get_image_dim(read_write image2d_msaa_t);
16068int2 __ovld __cnfn get_image_dim(read_write image2d_msaa_depth_t);
16069int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_t);
16070int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_depth_t);
16071#endif //cl_khr_gl_msaa_sharing
16072#endif //defined(__opencl_c_read_write_images)
16073
16074/**
16075 * Return the 3D image width, height, and depth as an
16076 * int4 type. The width is returned in the x
16077 * component, height in the y component, depth in the z
16078 * component and the w component is 0.
16079 */
16080int4 __ovld __cnfn get_image_dim(read_only image3d_t);
16081#ifdef cl_khr_3d_image_writes
16082int4 __ovld __cnfn get_image_dim(write_only image3d_t);
16083#if defined(__opencl_c_read_write_images)
16084int4 __ovld __cnfn get_image_dim(read_write image3d_t);
16085#endif //defined(__opencl_c_read_write_images)
16086#endif // cl_khr_3d_image_writes
16087
16088/**
16089 * Return the image array size.
16090 */
16091
16092size_t __ovld __cnfn get_image_array_size(read_only image1d_array_t);
16093size_t __ovld __cnfn get_image_array_size(read_only image2d_array_t);
16094#ifdef cl_khr_depth_images
16095size_t __ovld __cnfn get_image_array_size(read_only image2d_array_depth_t);
16096#endif //cl_khr_depth_images
16097#if defined(cl_khr_gl_msaa_sharing)
16098size_t __ovld __cnfn get_image_array_size(read_only image2d_array_msaa_t);
16099size_t __ovld __cnfn get_image_array_size(read_only image2d_array_msaa_depth_t);
16100#endif //cl_khr_gl_msaa_sharing
16101
16102size_t __ovld __cnfn get_image_array_size(write_only image1d_array_t);
16103size_t __ovld __cnfn get_image_array_size(write_only image2d_array_t);
16104#ifdef cl_khr_depth_images
16105size_t __ovld __cnfn get_image_array_size(write_only image2d_array_depth_t);
16106#endif //cl_khr_depth_images
16107#if defined(cl_khr_gl_msaa_sharing)
16108size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_t);
16109size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_depth_t);
16110#endif //cl_khr_gl_msaa_sharing
16111
16112#if defined(__opencl_c_read_write_images)
16113size_t __ovld __cnfn get_image_array_size(read_write image1d_array_t);
16114size_t __ovld __cnfn get_image_array_size(read_write image2d_array_t);
16115#ifdef cl_khr_depth_images
16116size_t __ovld __cnfn get_image_array_size(read_write image2d_array_depth_t);
16117#endif //cl_khr_depth_images
16118#if defined(cl_khr_gl_msaa_sharing)
16119size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_t);
16120size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_depth_t);
16121#endif //cl_khr_gl_msaa_sharing
16122#endif //defined(__opencl_c_read_write_images)
16123
16124/**
16125* Return the number of samples associated with image
16126*/
16127#if defined(cl_khr_gl_msaa_sharing)
16128int __ovld __cnfn get_image_num_samples(read_only image2d_msaa_t);
16129int __ovld __cnfn get_image_num_samples(read_only image2d_msaa_depth_t);
16130int __ovld __cnfn get_image_num_samples(read_only image2d_array_msaa_t);
16131int __ovld __cnfn get_image_num_samples(read_only image2d_array_msaa_depth_t);
16132
16133int __ovld __cnfn get_image_num_samples(write_only image2d_msaa_t);
16134int __ovld __cnfn get_image_num_samples(write_only image2d_msaa_depth_t);
16135int __ovld __cnfn get_image_num_samples(write_only image2d_array_msaa_t);
16136int __ovld __cnfn get_image_num_samples(write_only image2d_array_msaa_depth_t);
16137
16138#if defined(__opencl_c_read_write_images)
16139int __ovld __cnfn get_image_num_samples(read_write image2d_msaa_t);
16140int __ovld __cnfn get_image_num_samples(read_write image2d_msaa_depth_t);
16141int __ovld __cnfn get_image_num_samples(read_write image2d_array_msaa_t);
16142int __ovld __cnfn get_image_num_samples(read_write image2d_array_msaa_depth_t);
16143#endif //defined(__opencl_c_read_write_images)
16144#endif
16145
16146// OpenCL v2.0 s6.13.15 - Work-group Functions
16147
16148#if defined(__opencl_c_work_group_collective_functions)
16149int __ovld __conv work_group_all(int predicate);
16150int __ovld __conv work_group_any(int predicate);
16151
16152#ifdef cl_khr_fp16
16153half __ovld __conv work_group_broadcast(half, size_t local_id);
16154half __ovld __conv work_group_broadcast(half, size_t, size_t);
16155half __ovld __conv work_group_broadcast(half, size_t, size_t, size_t);
16156#endif
16157int __ovld __conv work_group_broadcast(int, size_t local_id);
16158int __ovld __conv work_group_broadcast(int, size_t, size_t);
16159int __ovld __conv work_group_broadcast(int, size_t, size_t, size_t);
16160uint __ovld __conv work_group_broadcast(uint, size_t local_id);
16161uint __ovld __conv work_group_broadcast(uint, size_t, size_t);
16162uint __ovld __conv work_group_broadcast(uint, size_t, size_t, size_t);
16163long __ovld __conv work_group_broadcast(long, size_t local_id);
16164long __ovld __conv work_group_broadcast(long, size_t, size_t);
16165long __ovld __conv work_group_broadcast(long, size_t, size_t, size_t);
16166ulong __ovld __conv work_group_broadcast(ulong, size_t local_id);
16167ulong __ovld __conv work_group_broadcast(ulong, size_t, size_t);
16168ulong __ovld __conv work_group_broadcast(ulong, size_t, size_t, size_t);
16169float __ovld __conv work_group_broadcast(float, size_t local_id);
16170float __ovld __conv work_group_broadcast(float, size_t, size_t);
16171float __ovld __conv work_group_broadcast(float, size_t, size_t, size_t);
16172#ifdef cl_khr_fp64
16173double __ovld __conv work_group_broadcast(double, size_t local_id);
16174double __ovld __conv work_group_broadcast(double, size_t, size_t);
16175double __ovld __conv work_group_broadcast(double, size_t, size_t, size_t);
16176#endif //cl_khr_fp64
16177
16178#ifdef cl_khr_fp16
16179half __ovld __conv work_group_reduce_add(half);
16180half __ovld __conv work_group_reduce_min(half);
16181half __ovld __conv work_group_reduce_max(half);
16182half __ovld __conv work_group_scan_exclusive_add(half);
16183half __ovld __conv work_group_scan_exclusive_min(half);
16184half __ovld __conv work_group_scan_exclusive_max(half);
16185half __ovld __conv work_group_scan_inclusive_add(half);
16186half __ovld __conv work_group_scan_inclusive_min(half);
16187half __ovld __conv work_group_scan_inclusive_max(half);
16188#endif
16189int __ovld __conv work_group_reduce_add(int);
16190int __ovld __conv work_group_reduce_min(int);
16191int __ovld __conv work_group_reduce_max(int);
16192int __ovld __conv work_group_scan_exclusive_add(int);
16193int __ovld __conv work_group_scan_exclusive_min(int);
16194int __ovld __conv work_group_scan_exclusive_max(int);
16195int __ovld __conv work_group_scan_inclusive_add(int);
16196int __ovld __conv work_group_scan_inclusive_min(int);
16197int __ovld __conv work_group_scan_inclusive_max(int);
16198uint __ovld __conv work_group_reduce_add(uint);
16199uint __ovld __conv work_group_reduce_min(uint);
16200uint __ovld __conv work_group_reduce_max(uint);
16201uint __ovld __conv work_group_scan_exclusive_add(uint);
16202uint __ovld __conv work_group_scan_exclusive_min(uint);
16203uint __ovld __conv work_group_scan_exclusive_max(uint);
16204uint __ovld __conv work_group_scan_inclusive_add(uint);
16205uint __ovld __conv work_group_scan_inclusive_min(uint);
16206uint __ovld __conv work_group_scan_inclusive_max(uint);
16207long __ovld __conv work_group_reduce_add(long);
16208long __ovld __conv work_group_reduce_min(long);
16209long __ovld __conv work_group_reduce_max(long);
16210long __ovld __conv work_group_scan_exclusive_add(long);
16211long __ovld __conv work_group_scan_exclusive_min(long);
16212long __ovld __conv work_group_scan_exclusive_max(long);
16213long __ovld __conv work_group_scan_inclusive_add(long);
16214long __ovld __conv work_group_scan_inclusive_min(long);
16215long __ovld __conv work_group_scan_inclusive_max(long);
16216ulong __ovld __conv work_group_reduce_add(ulong);
16217ulong __ovld __conv work_group_reduce_min(ulong);
16218ulong __ovld __conv work_group_reduce_max(ulong);
16219ulong __ovld __conv work_group_scan_exclusive_add(ulong);
16220ulong __ovld __conv work_group_scan_exclusive_min(ulong);
16221ulong __ovld __conv work_group_scan_exclusive_max(ulong);
16222ulong __ovld __conv work_group_scan_inclusive_add(ulong);
16223ulong __ovld __conv work_group_scan_inclusive_min(ulong);
16224ulong __ovld __conv work_group_scan_inclusive_max(ulong);
16225float __ovld __conv work_group_reduce_add(float);
16226float __ovld __conv work_group_reduce_min(float);
16227float __ovld __conv work_group_reduce_max(float);
16228float __ovld __conv work_group_scan_exclusive_add(float);
16229float __ovld __conv work_group_scan_exclusive_min(float);
16230float __ovld __conv work_group_scan_exclusive_max(float);
16231float __ovld __conv work_group_scan_inclusive_add(float);
16232float __ovld __conv work_group_scan_inclusive_min(float);
16233float __ovld __conv work_group_scan_inclusive_max(float);
16234#ifdef cl_khr_fp64
16235double __ovld __conv work_group_reduce_add(double);
16236double __ovld __conv work_group_reduce_min(double);
16237double __ovld __conv work_group_reduce_max(double);
16238double __ovld __conv work_group_scan_exclusive_add(double);
16239double __ovld __conv work_group_scan_exclusive_min(double);
16240double __ovld __conv work_group_scan_exclusive_max(double);
16241double __ovld __conv work_group_scan_inclusive_add(double);
16242double __ovld __conv work_group_scan_inclusive_min(double);
16243double __ovld __conv work_group_scan_inclusive_max(double);
16244#endif //cl_khr_fp64
16245
16246#endif //defined(__opencl_c_work_group_collective_functions)
16247
16248// OpenCL v2.0 s6.13.16 - Pipe Functions
16249#if defined(__opencl_c_pipes)
16250bool __ovld is_valid_reserve_id(reserve_id_t reserve_id);
16251#endif //defined(__opencl_c_pipes)
16252
16253
16254// OpenCL v2.0 s6.13.17 - Enqueue Kernels
16255#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16256
16257#ifdef __opencl_c_device_enqueue
16258ndrange_t __ovld ndrange_1D(size_t);
16259ndrange_t __ovld ndrange_1D(size_t, size_t);
16260ndrange_t __ovld ndrange_1D(size_t, size_t, size_t);
16261
16262ndrange_t __ovld ndrange_2D(const size_t[2]);
16263ndrange_t __ovld ndrange_2D(const size_t[2], const size_t[2]);
16264ndrange_t __ovld ndrange_2D(const size_t[2], const size_t[2], const size_t[2]);
16265
16266ndrange_t __ovld ndrange_3D(const size_t[3]);
16267ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3]);
16268ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3], const size_t[3]);
16269
16270int __ovld enqueue_marker(queue_t, uint, const clk_event_t*, clk_event_t*);
16271
16272void __ovld retain_event(clk_event_t);
16273
16274void __ovld release_event(clk_event_t);
16275
16276clk_event_t __ovld create_user_event(void);
16277
16278void __ovld set_user_event_status(clk_event_t e, int state);
16279
16280bool __ovld is_valid_event (clk_event_t event);
16281
16282void __ovld capture_event_profiling_info(clk_event_t, clk_profiling_info, __global void*);
16283
16284queue_t __ovld get_default_queue(void);
16285#endif //__opencl_c_device_enqueue
16286#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16287
16288// OpenCL Extension v2.0 s9.17 - Sub-groups
16289
16290#if defined(__opencl_subgroup_builtins)
16291// Shared Sub Group Functions
16292uint __ovld get_sub_group_size(void);
16293uint __ovld get_max_sub_group_size(void);
16294uint __ovld get_num_sub_groups(void);
16295#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16296uint __ovld get_enqueued_num_sub_groups(void);
16297#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16298uint __ovld get_sub_group_id(void);
16299uint __ovld get_sub_group_local_id(void);
16300
16301void __ovld __conv sub_group_barrier(cl_mem_fence_flags);
16302#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16303void __ovld __conv sub_group_barrier(cl_mem_fence_flags, memory_scope);
16304#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16305
16306int __ovld __conv sub_group_all(int predicate);
16307int __ovld __conv sub_group_any(int predicate);
16308
16309int __ovld __conv sub_group_broadcast(int , uint sub_group_local_id);
16310uint __ovld __conv sub_group_broadcast(uint , uint sub_group_local_id);
16311long __ovld __conv sub_group_broadcast(long , uint sub_group_local_id);
16312ulong __ovld __conv sub_group_broadcast(ulong, uint sub_group_local_id);
16313float __ovld __conv sub_group_broadcast(float, uint sub_group_local_id);
16314
16315int __ovld __conv sub_group_reduce_add(int );
16316uint __ovld __conv sub_group_reduce_add(uint );
16317long __ovld __conv sub_group_reduce_add(long );
16318ulong __ovld __conv sub_group_reduce_add(ulong);
16319float __ovld __conv sub_group_reduce_add(float);
16320int __ovld __conv sub_group_reduce_min(int );
16321uint __ovld __conv sub_group_reduce_min(uint );
16322long __ovld __conv sub_group_reduce_min(long );
16323ulong __ovld __conv sub_group_reduce_min(ulong);
16324float __ovld __conv sub_group_reduce_min(float);
16325int __ovld __conv sub_group_reduce_max(int );
16326uint __ovld __conv sub_group_reduce_max(uint );
16327long __ovld __conv sub_group_reduce_max(long );
16328ulong __ovld __conv sub_group_reduce_max(ulong);
16329float __ovld __conv sub_group_reduce_max(float);
16330
16331int __ovld __conv sub_group_scan_exclusive_add(int );
16332uint __ovld __conv sub_group_scan_exclusive_add(uint );
16333long __ovld __conv sub_group_scan_exclusive_add(long );
16334ulong __ovld __conv sub_group_scan_exclusive_add(ulong);
16335float __ovld __conv sub_group_scan_exclusive_add(float);
16336int __ovld __conv sub_group_scan_exclusive_min(int );
16337uint __ovld __conv sub_group_scan_exclusive_min(uint );
16338long __ovld __conv sub_group_scan_exclusive_min(long );
16339ulong __ovld __conv sub_group_scan_exclusive_min(ulong);
16340float __ovld __conv sub_group_scan_exclusive_min(float);
16341int __ovld __conv sub_group_scan_exclusive_max(int );
16342uint __ovld __conv sub_group_scan_exclusive_max(uint );
16343long __ovld __conv sub_group_scan_exclusive_max(long );
16344ulong __ovld __conv sub_group_scan_exclusive_max(ulong);
16345float __ovld __conv sub_group_scan_exclusive_max(float);
16346
16347int __ovld __conv sub_group_scan_inclusive_add(int );
16348uint __ovld __conv sub_group_scan_inclusive_add(uint );
16349long __ovld __conv sub_group_scan_inclusive_add(long );
16350ulong __ovld __conv sub_group_scan_inclusive_add(ulong);
16351float __ovld __conv sub_group_scan_inclusive_add(float);
16352int __ovld __conv sub_group_scan_inclusive_min(int );
16353uint __ovld __conv sub_group_scan_inclusive_min(uint );
16354long __ovld __conv sub_group_scan_inclusive_min(long );
16355ulong __ovld __conv sub_group_scan_inclusive_min(ulong);
16356float __ovld __conv sub_group_scan_inclusive_min(float);
16357int __ovld __conv sub_group_scan_inclusive_max(int );
16358uint __ovld __conv sub_group_scan_inclusive_max(uint );
16359long __ovld __conv sub_group_scan_inclusive_max(long );
16360ulong __ovld __conv sub_group_scan_inclusive_max(ulong);
16361float __ovld __conv sub_group_scan_inclusive_max(float);
16362
16363#ifdef cl_khr_fp16
16364half __ovld __conv sub_group_broadcast(half, uint sub_group_local_id);
16365half __ovld __conv sub_group_reduce_add(half);
16366half __ovld __conv sub_group_reduce_min(half);
16367half __ovld __conv sub_group_reduce_max(half);
16368half __ovld __conv sub_group_scan_exclusive_add(half);
16369half __ovld __conv sub_group_scan_exclusive_min(half);
16370half __ovld __conv sub_group_scan_exclusive_max(half);
16371half __ovld __conv sub_group_scan_inclusive_add(half);
16372half __ovld __conv sub_group_scan_inclusive_min(half);
16373half __ovld __conv sub_group_scan_inclusive_max(half);
16374#endif //cl_khr_fp16
16375
16376#ifdef cl_khr_fp64
16377double __ovld __conv sub_group_broadcast(double, uint sub_group_local_id);
16378double __ovld __conv sub_group_reduce_add(double);
16379double __ovld __conv sub_group_reduce_min(double);
16380double __ovld __conv sub_group_reduce_max(double);
16381double __ovld __conv sub_group_scan_exclusive_add(double);
16382double __ovld __conv sub_group_scan_exclusive_min(double);
16383double __ovld __conv sub_group_scan_exclusive_max(double);
16384double __ovld __conv sub_group_scan_inclusive_add(double);
16385double __ovld __conv sub_group_scan_inclusive_min(double);
16386double __ovld __conv sub_group_scan_inclusive_max(double);
16387#endif //cl_khr_fp64
16388
16389#endif // __opencl_subgroup_builtins
16390
16391#if defined(cl_khr_subgroup_extended_types)
16392char __ovld __conv sub_group_broadcast( char value, uint index );
16393char2 __ovld __conv sub_group_broadcast( char2 value, uint index );
16394char3 __ovld __conv sub_group_broadcast( char3 value, uint index );
16395char4 __ovld __conv sub_group_broadcast( char4 value, uint index );
16396char8 __ovld __conv sub_group_broadcast( char8 value, uint index );
16397char16 __ovld __conv sub_group_broadcast( char16 value, uint index );
16398
16399uchar __ovld __conv sub_group_broadcast( uchar value, uint index );
16400uchar2 __ovld __conv sub_group_broadcast( uchar2 value, uint index );
16401uchar3 __ovld __conv sub_group_broadcast( uchar3 value, uint index );
16402uchar4 __ovld __conv sub_group_broadcast( uchar4 value, uint index );
16403uchar8 __ovld __conv sub_group_broadcast( uchar8 value, uint index );
16404uchar16 __ovld __conv sub_group_broadcast( uchar16 value, uint index );
16405
16406short __ovld __conv sub_group_broadcast( short value, uint index );
16407short2 __ovld __conv sub_group_broadcast( short2 value, uint index );
16408short3 __ovld __conv sub_group_broadcast( short3 value, uint index );
16409short4 __ovld __conv sub_group_broadcast( short4 value, uint index );
16410short8 __ovld __conv sub_group_broadcast( short8 value, uint index );
16411short16 __ovld __conv sub_group_broadcast( short16 value, uint index );
16412
16413ushort __ovld __conv sub_group_broadcast( ushort value, uint index );
16414ushort2 __ovld __conv sub_group_broadcast( ushort2 value, uint index );
16415ushort3 __ovld __conv sub_group_broadcast( ushort3 value, uint index );
16416ushort4 __ovld __conv sub_group_broadcast( ushort4 value, uint index );
16417ushort8 __ovld __conv sub_group_broadcast( ushort8 value, uint index );
16418ushort16 __ovld __conv sub_group_broadcast( ushort16 value, uint index );
16419
16420// scalar int broadcast is part of cl_khr_subgroups
16421int2 __ovld __conv sub_group_broadcast( int2 value, uint index );
16422int3 __ovld __conv sub_group_broadcast( int3 value, uint index );
16423int4 __ovld __conv sub_group_broadcast( int4 value, uint index );
16424int8 __ovld __conv sub_group_broadcast( int8 value, uint index );
16425int16 __ovld __conv sub_group_broadcast( int16 value, uint index );
16426
16427// scalar uint broadcast is part of cl_khr_subgroups
16428uint2 __ovld __conv sub_group_broadcast( uint2 value, uint index );
16429uint3 __ovld __conv sub_group_broadcast( uint3 value, uint index );
16430uint4 __ovld __conv sub_group_broadcast( uint4 value, uint index );
16431uint8 __ovld __conv sub_group_broadcast( uint8 value, uint index );
16432uint16 __ovld __conv sub_group_broadcast( uint16 value, uint index );
16433
16434// scalar long broadcast is part of cl_khr_subgroups
16435long2 __ovld __conv sub_group_broadcast( long2 value, uint index );
16436long3 __ovld __conv sub_group_broadcast( long3 value, uint index );
16437long4 __ovld __conv sub_group_broadcast( long4 value, uint index );
16438long8 __ovld __conv sub_group_broadcast( long8 value, uint index );
16439long16 __ovld __conv sub_group_broadcast( long16 value, uint index );
16440
16441// scalar ulong broadcast is part of cl_khr_subgroups
16442ulong2 __ovld __conv sub_group_broadcast( ulong2 value, uint index );
16443ulong3 __ovld __conv sub_group_broadcast( ulong3 value, uint index );
16444ulong4 __ovld __conv sub_group_broadcast( ulong4 value, uint index );
16445ulong8 __ovld __conv sub_group_broadcast( ulong8 value, uint index );
16446ulong16 __ovld __conv sub_group_broadcast( ulong16 value, uint index );
16447
16448// scalar float broadcast is part of cl_khr_subgroups
16449float2 __ovld __conv sub_group_broadcast( float2 value, uint index );
16450float3 __ovld __conv sub_group_broadcast( float3 value, uint index );
16451float4 __ovld __conv sub_group_broadcast( float4 value, uint index );
16452float8 __ovld __conv sub_group_broadcast( float8 value, uint index );
16453float16 __ovld __conv sub_group_broadcast( float16 value, uint index );
16454
16455char __ovld __conv sub_group_reduce_add( char value );
16456uchar __ovld __conv sub_group_reduce_add( uchar value );
16457short __ovld __conv sub_group_reduce_add( short value );
16458ushort __ovld __conv sub_group_reduce_add( ushort value );
16459
16460char __ovld __conv sub_group_reduce_min( char value );
16461uchar __ovld __conv sub_group_reduce_min( uchar value );
16462short __ovld __conv sub_group_reduce_min( short value );
16463ushort __ovld __conv sub_group_reduce_min( ushort value );
16464
16465char __ovld __conv sub_group_reduce_max( char value );
16466uchar __ovld __conv sub_group_reduce_max( uchar value );
16467short __ovld __conv sub_group_reduce_max( short value );
16468ushort __ovld __conv sub_group_reduce_max( ushort value );
16469
16470char __ovld __conv sub_group_scan_inclusive_add( char value );
16471uchar __ovld __conv sub_group_scan_inclusive_add( uchar value );
16472short __ovld __conv sub_group_scan_inclusive_add( short value );
16473ushort __ovld __conv sub_group_scan_inclusive_add( ushort value );
16474
16475char __ovld __conv sub_group_scan_inclusive_min( char value );
16476uchar __ovld __conv sub_group_scan_inclusive_min( uchar value );
16477short __ovld __conv sub_group_scan_inclusive_min( short value );
16478ushort __ovld __conv sub_group_scan_inclusive_min( ushort value );
16479
16480char __ovld __conv sub_group_scan_inclusive_max( char value );
16481uchar __ovld __conv sub_group_scan_inclusive_max( uchar value );
16482short __ovld __conv sub_group_scan_inclusive_max( short value );
16483ushort __ovld __conv sub_group_scan_inclusive_max( ushort value );
16484
16485char __ovld __conv sub_group_scan_exclusive_add( char value );
16486uchar __ovld __conv sub_group_scan_exclusive_add( uchar value );
16487short __ovld __conv sub_group_scan_exclusive_add( short value );
16488ushort __ovld __conv sub_group_scan_exclusive_add( ushort value );
16489
16490char __ovld __conv sub_group_scan_exclusive_min( char value );
16491uchar __ovld __conv sub_group_scan_exclusive_min( uchar value );
16492short __ovld __conv sub_group_scan_exclusive_min( short value );
16493ushort __ovld __conv sub_group_scan_exclusive_min( ushort value );
16494
16495char __ovld __conv sub_group_scan_exclusive_max( char value );
16496uchar __ovld __conv sub_group_scan_exclusive_max( uchar value );
16497short __ovld __conv sub_group_scan_exclusive_max( short value );
16498ushort __ovld __conv sub_group_scan_exclusive_max( ushort value );
16499
16500#if defined(cl_khr_fp16)
16501// scalar half broadcast is part of cl_khr_subgroups
16502half2 __ovld __conv sub_group_broadcast( half2 value, uint index );
16503half3 __ovld __conv sub_group_broadcast( half3 value, uint index );
16504half4 __ovld __conv sub_group_broadcast( half4 value, uint index );
16505half8 __ovld __conv sub_group_broadcast( half8 value, uint index );
16506half16 __ovld __conv sub_group_broadcast( half16 value, uint index );
16507#endif // cl_khr_fp16
16508
16509#if defined(cl_khr_fp64)
16510// scalar double broadcast is part of cl_khr_subgroups
16511double2 __ovld __conv sub_group_broadcast( double2 value, uint index );
16512double3 __ovld __conv sub_group_broadcast( double3 value, uint index );
16513double4 __ovld __conv sub_group_broadcast( double4 value, uint index );
16514double8 __ovld __conv sub_group_broadcast( double8 value, uint index );
16515double16 __ovld __conv sub_group_broadcast( double16 value, uint index );
16516#endif // cl_khr_fp64
16517
16518#endif // cl_khr_subgroup_extended_types
16519
16520#if defined(cl_khr_subgroup_non_uniform_vote)
16521int __ovld sub_group_elect(void);
16522int __ovld sub_group_non_uniform_all( int predicate );
16523int __ovld sub_group_non_uniform_any( int predicate );
16524
16525int __ovld sub_group_non_uniform_all_equal( char value );
16526int __ovld sub_group_non_uniform_all_equal( uchar value );
16527int __ovld sub_group_non_uniform_all_equal( short value );
16528int __ovld sub_group_non_uniform_all_equal( ushort value );
16529int __ovld sub_group_non_uniform_all_equal( int value );
16530int __ovld sub_group_non_uniform_all_equal( uint value );
16531int __ovld sub_group_non_uniform_all_equal( long value );
16532int __ovld sub_group_non_uniform_all_equal( ulong value );
16533int __ovld sub_group_non_uniform_all_equal( float value );
16534
16535#if defined(cl_khr_fp16)
16536int __ovld sub_group_non_uniform_all_equal( half value );
16537#endif // cl_khr_fp16
16538
16539#if defined(cl_khr_fp64)
16540int __ovld sub_group_non_uniform_all_equal( double value );
16541#endif // cl_khr_fp64
16542
16543#endif // cl_khr_subgroup_non_uniform_vote
16544
16545#if defined(cl_khr_subgroup_ballot)
16546char __ovld sub_group_non_uniform_broadcast( char value, uint index );
16547char2 __ovld sub_group_non_uniform_broadcast( char2 value, uint index );
16548char3 __ovld sub_group_non_uniform_broadcast( char3 value, uint index );
16549char4 __ovld sub_group_non_uniform_broadcast( char4 value, uint index );
16550char8 __ovld sub_group_non_uniform_broadcast( char8 value, uint index );
16551char16 __ovld sub_group_non_uniform_broadcast( char16 value, uint index );
16552
16553uchar __ovld sub_group_non_uniform_broadcast( uchar value, uint index );
16554uchar2 __ovld sub_group_non_uniform_broadcast( uchar2 value, uint index );
16555uchar3 __ovld sub_group_non_uniform_broadcast( uchar3 value, uint index );
16556uchar4 __ovld sub_group_non_uniform_broadcast( uchar4 value, uint index );
16557uchar8 __ovld sub_group_non_uniform_broadcast( uchar8 value, uint index );
16558uchar16 __ovld sub_group_non_uniform_broadcast( uchar16 value, uint index );
16559
16560short __ovld sub_group_non_uniform_broadcast( short value, uint index );
16561short2 __ovld sub_group_non_uniform_broadcast( short2 value, uint index );
16562short3 __ovld sub_group_non_uniform_broadcast( short3 value, uint index );
16563short4 __ovld sub_group_non_uniform_broadcast( short4 value, uint index );
16564short8 __ovld sub_group_non_uniform_broadcast( short8 value, uint index );
16565short16 __ovld sub_group_non_uniform_broadcast( short16 value, uint index );
16566
16567ushort __ovld sub_group_non_uniform_broadcast( ushort value, uint index );
16568ushort2 __ovld sub_group_non_uniform_broadcast( ushort2 value, uint index );
16569ushort3 __ovld sub_group_non_uniform_broadcast( ushort3 value, uint index );
16570ushort4 __ovld sub_group_non_uniform_broadcast( ushort4 value, uint index );
16571ushort8 __ovld sub_group_non_uniform_broadcast( ushort8 value, uint index );
16572ushort16 __ovld sub_group_non_uniform_broadcast( ushort16 value, uint index );
16573
16574int __ovld sub_group_non_uniform_broadcast( int value, uint index );
16575int2 __ovld sub_group_non_uniform_broadcast( int2 value, uint index );
16576int3 __ovld sub_group_non_uniform_broadcast( int3 value, uint index );
16577int4 __ovld sub_group_non_uniform_broadcast( int4 value, uint index );
16578int8 __ovld sub_group_non_uniform_broadcast( int8 value, uint index );
16579int16 __ovld sub_group_non_uniform_broadcast( int16 value, uint index );
16580
16581uint __ovld sub_group_non_uniform_broadcast( uint value, uint index );
16582uint2 __ovld sub_group_non_uniform_broadcast( uint2 value, uint index );
16583uint3 __ovld sub_group_non_uniform_broadcast( uint3 value, uint index );
16584uint4 __ovld sub_group_non_uniform_broadcast( uint4 value, uint index );
16585uint8 __ovld sub_group_non_uniform_broadcast( uint8 value, uint index );
16586uint16 __ovld sub_group_non_uniform_broadcast( uint16 value, uint index );
16587
16588long __ovld sub_group_non_uniform_broadcast( long value, uint index );
16589long2 __ovld sub_group_non_uniform_broadcast( long2 value, uint index );
16590long3 __ovld sub_group_non_uniform_broadcast( long3 value, uint index );
16591long4 __ovld sub_group_non_uniform_broadcast( long4 value, uint index );
16592long8 __ovld sub_group_non_uniform_broadcast( long8 value, uint index );
16593long16 __ovld sub_group_non_uniform_broadcast( long16 value, uint index );
16594
16595ulong __ovld sub_group_non_uniform_broadcast( ulong value, uint index );
16596ulong2 __ovld sub_group_non_uniform_broadcast( ulong2 value, uint index );
16597ulong3 __ovld sub_group_non_uniform_broadcast( ulong3 value, uint index );
16598ulong4 __ovld sub_group_non_uniform_broadcast( ulong4 value, uint index );
16599ulong8 __ovld sub_group_non_uniform_broadcast( ulong8 value, uint index );
16600ulong16 __ovld sub_group_non_uniform_broadcast( ulong16 value, uint index );
16601
16602float __ovld sub_group_non_uniform_broadcast( float value, uint index );
16603float2 __ovld sub_group_non_uniform_broadcast( float2 value, uint index );
16604float3 __ovld sub_group_non_uniform_broadcast( float3 value, uint index );
16605float4 __ovld sub_group_non_uniform_broadcast( float4 value, uint index );
16606float8 __ovld sub_group_non_uniform_broadcast( float8 value, uint index );
16607float16 __ovld sub_group_non_uniform_broadcast( float16 value, uint index );
16608
16609char __ovld sub_group_broadcast_first( char value );
16610uchar __ovld sub_group_broadcast_first( uchar value );
16611short __ovld sub_group_broadcast_first( short value );
16612ushort __ovld sub_group_broadcast_first( ushort value );
16613int __ovld sub_group_broadcast_first( int value );
16614uint __ovld sub_group_broadcast_first( uint value );
16615long __ovld sub_group_broadcast_first( long value );
16616ulong __ovld sub_group_broadcast_first( ulong value );
16617float __ovld sub_group_broadcast_first( float value );
16618
16619uint4 __ovld sub_group_ballot( int predicate );
16620int __ovld __cnfn sub_group_inverse_ballot( uint4 value );
16621int __ovld __cnfn sub_group_ballot_bit_extract( uint4 value, uint index );
16622uint __ovld __cnfn sub_group_ballot_bit_count( uint4 value );
16623
16624uint __ovld sub_group_ballot_inclusive_scan( uint4 value );
16625uint __ovld sub_group_ballot_exclusive_scan( uint4 value );
16626uint __ovld sub_group_ballot_find_lsb( uint4 value );
16627uint __ovld sub_group_ballot_find_msb( uint4 value );
16628
16629uint4 __ovld __cnfn get_sub_group_eq_mask(void);
16630uint4 __ovld __cnfn get_sub_group_ge_mask(void);
16631uint4 __ovld __cnfn get_sub_group_gt_mask(void);
16632uint4 __ovld __cnfn get_sub_group_le_mask(void);
16633uint4 __ovld __cnfn get_sub_group_lt_mask(void);
16634
16635#if defined(cl_khr_fp16)
16636half __ovld sub_group_non_uniform_broadcast( half value, uint index );
16637half2 __ovld sub_group_non_uniform_broadcast( half2 value, uint index );
16638half3 __ovld sub_group_non_uniform_broadcast( half3 value, uint index );
16639half4 __ovld sub_group_non_uniform_broadcast( half4 value, uint index );
16640half8 __ovld sub_group_non_uniform_broadcast( half8 value, uint index );
16641half16 __ovld sub_group_non_uniform_broadcast( half16 value, uint index );
16642
16643half __ovld sub_group_broadcast_first( half value );
16644#endif // cl_khr_fp16
16645
16646#if defined(cl_khr_fp64)
16647double __ovld sub_group_non_uniform_broadcast( double value, uint index );
16648double2 __ovld sub_group_non_uniform_broadcast( double2 value, uint index );
16649double3 __ovld sub_group_non_uniform_broadcast( double3 value, uint index );
16650double4 __ovld sub_group_non_uniform_broadcast( double4 value, uint index );
16651double8 __ovld sub_group_non_uniform_broadcast( double8 value, uint index );
16652double16 __ovld sub_group_non_uniform_broadcast( double16 value, uint index );
16653
16654double __ovld sub_group_broadcast_first( double value );
16655#endif // cl_khr_fp64
16656
16657#endif // cl_khr_subgroup_ballot
16658
16659#if defined(cl_khr_subgroup_non_uniform_arithmetic)
16660char __ovld sub_group_non_uniform_reduce_add( char value );
16661uchar __ovld sub_group_non_uniform_reduce_add( uchar value );
16662short __ovld sub_group_non_uniform_reduce_add( short value );
16663ushort __ovld sub_group_non_uniform_reduce_add( ushort value );
16664int __ovld sub_group_non_uniform_reduce_add( int value );
16665uint __ovld sub_group_non_uniform_reduce_add( uint value );
16666long __ovld sub_group_non_uniform_reduce_add( long value );
16667ulong __ovld sub_group_non_uniform_reduce_add( ulong value );
16668float __ovld sub_group_non_uniform_reduce_add( float value );
16669
16670char __ovld sub_group_non_uniform_reduce_mul( char value );
16671uchar __ovld sub_group_non_uniform_reduce_mul( uchar value );
16672short __ovld sub_group_non_uniform_reduce_mul( short value );
16673ushort __ovld sub_group_non_uniform_reduce_mul( ushort value );
16674int __ovld sub_group_non_uniform_reduce_mul( int value );
16675uint __ovld sub_group_non_uniform_reduce_mul( uint value );
16676long __ovld sub_group_non_uniform_reduce_mul( long value );
16677ulong __ovld sub_group_non_uniform_reduce_mul( ulong value );
16678float __ovld sub_group_non_uniform_reduce_mul( float value );
16679
16680char __ovld sub_group_non_uniform_reduce_min( char value );
16681uchar __ovld sub_group_non_uniform_reduce_min( uchar value );
16682short __ovld sub_group_non_uniform_reduce_min( short value );
16683ushort __ovld sub_group_non_uniform_reduce_min( ushort value );
16684int __ovld sub_group_non_uniform_reduce_min( int value );
16685uint __ovld sub_group_non_uniform_reduce_min( uint value );
16686long __ovld sub_group_non_uniform_reduce_min( long value );
16687ulong __ovld sub_group_non_uniform_reduce_min( ulong value );
16688float __ovld sub_group_non_uniform_reduce_min( float value );
16689
16690char __ovld sub_group_non_uniform_reduce_max( char value );
16691uchar __ovld sub_group_non_uniform_reduce_max( uchar value );
16692short __ovld sub_group_non_uniform_reduce_max( short value );
16693ushort __ovld sub_group_non_uniform_reduce_max( ushort value );
16694int __ovld sub_group_non_uniform_reduce_max( int value );
16695uint __ovld sub_group_non_uniform_reduce_max( uint value );
16696long __ovld sub_group_non_uniform_reduce_max( long value );
16697ulong __ovld sub_group_non_uniform_reduce_max( ulong value );
16698float __ovld sub_group_non_uniform_reduce_max( float value );
16699
16700char __ovld sub_group_non_uniform_scan_inclusive_add( char value );
16701uchar __ovld sub_group_non_uniform_scan_inclusive_add( uchar value );
16702short __ovld sub_group_non_uniform_scan_inclusive_add( short value );
16703ushort __ovld sub_group_non_uniform_scan_inclusive_add( ushort value );
16704int __ovld sub_group_non_uniform_scan_inclusive_add( int value );
16705uint __ovld sub_group_non_uniform_scan_inclusive_add( uint value );
16706long __ovld sub_group_non_uniform_scan_inclusive_add( long value );
16707ulong __ovld sub_group_non_uniform_scan_inclusive_add( ulong value );
16708float __ovld sub_group_non_uniform_scan_inclusive_add( float value );
16709
16710char __ovld sub_group_non_uniform_scan_inclusive_mul( char value );
16711uchar __ovld sub_group_non_uniform_scan_inclusive_mul( uchar value );
16712short __ovld sub_group_non_uniform_scan_inclusive_mul( short value );
16713ushort __ovld sub_group_non_uniform_scan_inclusive_mul( ushort value );
16714int __ovld sub_group_non_uniform_scan_inclusive_mul( int value );
16715uint __ovld sub_group_non_uniform_scan_inclusive_mul( uint value );
16716long __ovld sub_group_non_uniform_scan_inclusive_mul( long value );
16717ulong __ovld sub_group_non_uniform_scan_inclusive_mul( ulong value );
16718float __ovld sub_group_non_uniform_scan_inclusive_mul( float value );
16719
16720char __ovld sub_group_non_uniform_scan_inclusive_min( char value );
16721uchar __ovld sub_group_non_uniform_scan_inclusive_min( uchar value );
16722short __ovld sub_group_non_uniform_scan_inclusive_min( short value );
16723ushort __ovld sub_group_non_uniform_scan_inclusive_min( ushort value );
16724int __ovld sub_group_non_uniform_scan_inclusive_min( int value );
16725uint __ovld sub_group_non_uniform_scan_inclusive_min( uint value );
16726long __ovld sub_group_non_uniform_scan_inclusive_min( long value );
16727ulong __ovld sub_group_non_uniform_scan_inclusive_min( ulong value );
16728float __ovld sub_group_non_uniform_scan_inclusive_min( float value );
16729
16730char __ovld sub_group_non_uniform_scan_inclusive_max( char value );
16731uchar __ovld sub_group_non_uniform_scan_inclusive_max( uchar value );
16732short __ovld sub_group_non_uniform_scan_inclusive_max( short value );
16733ushort __ovld sub_group_non_uniform_scan_inclusive_max( ushort value );
16734int __ovld sub_group_non_uniform_scan_inclusive_max( int value );
16735uint __ovld sub_group_non_uniform_scan_inclusive_max( uint value );
16736long __ovld sub_group_non_uniform_scan_inclusive_max( long value );
16737ulong __ovld sub_group_non_uniform_scan_inclusive_max( ulong value );
16738float __ovld sub_group_non_uniform_scan_inclusive_max( float value );
16739
16740char __ovld sub_group_non_uniform_scan_exclusive_add( char value );
16741uchar __ovld sub_group_non_uniform_scan_exclusive_add( uchar value );
16742short __ovld sub_group_non_uniform_scan_exclusive_add( short value );
16743ushort __ovld sub_group_non_uniform_scan_exclusive_add( ushort value );
16744int __ovld sub_group_non_uniform_scan_exclusive_add( int value );
16745uint __ovld sub_group_non_uniform_scan_exclusive_add( uint value );
16746long __ovld sub_group_non_uniform_scan_exclusive_add( long value );
16747ulong __ovld sub_group_non_uniform_scan_exclusive_add( ulong value );
16748float __ovld sub_group_non_uniform_scan_exclusive_add( float value );
16749
16750char __ovld sub_group_non_uniform_scan_exclusive_mul( char value );
16751uchar __ovld sub_group_non_uniform_scan_exclusive_mul( uchar value );
16752short __ovld sub_group_non_uniform_scan_exclusive_mul( short value );
16753ushort __ovld sub_group_non_uniform_scan_exclusive_mul( ushort value );
16754int __ovld sub_group_non_uniform_scan_exclusive_mul( int value );
16755uint __ovld sub_group_non_uniform_scan_exclusive_mul( uint value );
16756long __ovld sub_group_non_uniform_scan_exclusive_mul( long value );
16757ulong __ovld sub_group_non_uniform_scan_exclusive_mul( ulong value );
16758float __ovld sub_group_non_uniform_scan_exclusive_mul( float value );
16759
16760char __ovld sub_group_non_uniform_scan_exclusive_min( char value );
16761uchar __ovld sub_group_non_uniform_scan_exclusive_min( uchar value );
16762short __ovld sub_group_non_uniform_scan_exclusive_min( short value );
16763ushort __ovld sub_group_non_uniform_scan_exclusive_min( ushort value );
16764int __ovld sub_group_non_uniform_scan_exclusive_min( int value );
16765uint __ovld sub_group_non_uniform_scan_exclusive_min( uint value );
16766long __ovld sub_group_non_uniform_scan_exclusive_min( long value );
16767ulong __ovld sub_group_non_uniform_scan_exclusive_min( ulong value );
16768float __ovld sub_group_non_uniform_scan_exclusive_min( float value );
16769
16770char __ovld sub_group_non_uniform_scan_exclusive_max( char value );
16771uchar __ovld sub_group_non_uniform_scan_exclusive_max( uchar value );
16772short __ovld sub_group_non_uniform_scan_exclusive_max( short value );
16773ushort __ovld sub_group_non_uniform_scan_exclusive_max( ushort value );
16774int __ovld sub_group_non_uniform_scan_exclusive_max( int value );
16775uint __ovld sub_group_non_uniform_scan_exclusive_max( uint value );
16776long __ovld sub_group_non_uniform_scan_exclusive_max( long value );
16777ulong __ovld sub_group_non_uniform_scan_exclusive_max( ulong value );
16778float __ovld sub_group_non_uniform_scan_exclusive_max( float value );
16779
16780char __ovld sub_group_non_uniform_reduce_and( char value );
16781uchar __ovld sub_group_non_uniform_reduce_and( uchar value );
16782short __ovld sub_group_non_uniform_reduce_and( short value );
16783ushort __ovld sub_group_non_uniform_reduce_and( ushort value );
16784int __ovld sub_group_non_uniform_reduce_and( int value );
16785uint __ovld sub_group_non_uniform_reduce_and( uint value );
16786long __ovld sub_group_non_uniform_reduce_and( long value );
16787ulong __ovld sub_group_non_uniform_reduce_and( ulong value );
16788
16789char __ovld sub_group_non_uniform_reduce_or( char value );
16790uchar __ovld sub_group_non_uniform_reduce_or( uchar value );
16791short __ovld sub_group_non_uniform_reduce_or( short value );
16792ushort __ovld sub_group_non_uniform_reduce_or( ushort value );
16793int __ovld sub_group_non_uniform_reduce_or( int value );
16794uint __ovld sub_group_non_uniform_reduce_or( uint value );
16795long __ovld sub_group_non_uniform_reduce_or( long value );
16796ulong __ovld sub_group_non_uniform_reduce_or( ulong value );
16797
16798char __ovld sub_group_non_uniform_reduce_xor( char value );
16799uchar __ovld sub_group_non_uniform_reduce_xor( uchar value );
16800short __ovld sub_group_non_uniform_reduce_xor( short value );
16801ushort __ovld sub_group_non_uniform_reduce_xor( ushort value );
16802int __ovld sub_group_non_uniform_reduce_xor( int value );
16803uint __ovld sub_group_non_uniform_reduce_xor( uint value );
16804long __ovld sub_group_non_uniform_reduce_xor( long value );
16805ulong __ovld sub_group_non_uniform_reduce_xor( ulong value );
16806
16807char __ovld sub_group_non_uniform_scan_inclusive_and( char value );
16808uchar __ovld sub_group_non_uniform_scan_inclusive_and( uchar value );
16809short __ovld sub_group_non_uniform_scan_inclusive_and( short value );
16810ushort __ovld sub_group_non_uniform_scan_inclusive_and( ushort value );
16811int __ovld sub_group_non_uniform_scan_inclusive_and( int value );
16812uint __ovld sub_group_non_uniform_scan_inclusive_and( uint value );
16813long __ovld sub_group_non_uniform_scan_inclusive_and( long value );
16814ulong __ovld sub_group_non_uniform_scan_inclusive_and( ulong value );
16815
16816char __ovld sub_group_non_uniform_scan_inclusive_or( char value );
16817uchar __ovld sub_group_non_uniform_scan_inclusive_or( uchar value );
16818short __ovld sub_group_non_uniform_scan_inclusive_or( short value );
16819ushort __ovld sub_group_non_uniform_scan_inclusive_or( ushort value );
16820int __ovld sub_group_non_uniform_scan_inclusive_or( int value );
16821uint __ovld sub_group_non_uniform_scan_inclusive_or( uint value );
16822long __ovld sub_group_non_uniform_scan_inclusive_or( long value );
16823ulong __ovld sub_group_non_uniform_scan_inclusive_or( ulong value );
16824
16825char __ovld sub_group_non_uniform_scan_inclusive_xor( char value );
16826uchar __ovld sub_group_non_uniform_scan_inclusive_xor( uchar value );
16827short __ovld sub_group_non_uniform_scan_inclusive_xor( short value );
16828ushort __ovld sub_group_non_uniform_scan_inclusive_xor( ushort value );
16829int __ovld sub_group_non_uniform_scan_inclusive_xor( int value );
16830uint __ovld sub_group_non_uniform_scan_inclusive_xor( uint value );
16831long __ovld sub_group_non_uniform_scan_inclusive_xor( long value );
16832ulong __ovld sub_group_non_uniform_scan_inclusive_xor( ulong value );
16833
16834char __ovld sub_group_non_uniform_scan_exclusive_and( char value );
16835uchar __ovld sub_group_non_uniform_scan_exclusive_and( uchar value );
16836short __ovld sub_group_non_uniform_scan_exclusive_and( short value );
16837ushort __ovld sub_group_non_uniform_scan_exclusive_and( ushort value );
16838int __ovld sub_group_non_uniform_scan_exclusive_and( int value );
16839uint __ovld sub_group_non_uniform_scan_exclusive_and( uint value );
16840long __ovld sub_group_non_uniform_scan_exclusive_and( long value );
16841ulong __ovld sub_group_non_uniform_scan_exclusive_and( ulong value );
16842
16843char __ovld sub_group_non_uniform_scan_exclusive_or( char value );
16844uchar __ovld sub_group_non_uniform_scan_exclusive_or( uchar value );
16845short __ovld sub_group_non_uniform_scan_exclusive_or( short value );
16846ushort __ovld sub_group_non_uniform_scan_exclusive_or( ushort value );
16847int __ovld sub_group_non_uniform_scan_exclusive_or( int value );
16848uint __ovld sub_group_non_uniform_scan_exclusive_or( uint value );
16849long __ovld sub_group_non_uniform_scan_exclusive_or( long value );
16850ulong __ovld sub_group_non_uniform_scan_exclusive_or( ulong value );
16851
16852char __ovld sub_group_non_uniform_scan_exclusive_xor( char value );
16853uchar __ovld sub_group_non_uniform_scan_exclusive_xor( uchar value );
16854short __ovld sub_group_non_uniform_scan_exclusive_xor( short value );
16855ushort __ovld sub_group_non_uniform_scan_exclusive_xor( ushort value );
16856int __ovld sub_group_non_uniform_scan_exclusive_xor( int value );
16857uint __ovld sub_group_non_uniform_scan_exclusive_xor( uint value );
16858long __ovld sub_group_non_uniform_scan_exclusive_xor( long value );
16859ulong __ovld sub_group_non_uniform_scan_exclusive_xor( ulong value );
16860
16861int __ovld sub_group_non_uniform_reduce_logical_and( int predicate );
16862int __ovld sub_group_non_uniform_reduce_logical_or( int predicate );
16863int __ovld sub_group_non_uniform_reduce_logical_xor( int predicate );
16864
16865int __ovld sub_group_non_uniform_scan_inclusive_logical_and( int predicate );
16866int __ovld sub_group_non_uniform_scan_inclusive_logical_or( int predicate );
16867int __ovld sub_group_non_uniform_scan_inclusive_logical_xor( int predicate );
16868
16869int __ovld sub_group_non_uniform_scan_exclusive_logical_and( int predicate );
16870int __ovld sub_group_non_uniform_scan_exclusive_logical_or( int predicate );
16871int __ovld sub_group_non_uniform_scan_exclusive_logical_xor( int predicate );
16872
16873#if defined(cl_khr_fp16)
16874half __ovld sub_group_non_uniform_reduce_add( half value );
16875half __ovld sub_group_non_uniform_reduce_mul( half value );
16876half __ovld sub_group_non_uniform_reduce_min( half value );
16877half __ovld sub_group_non_uniform_reduce_max( half value );
16878half __ovld sub_group_non_uniform_scan_inclusive_add( half value );
16879half __ovld sub_group_non_uniform_scan_inclusive_mul( half value );
16880half __ovld sub_group_non_uniform_scan_inclusive_min( half value );
16881half __ovld sub_group_non_uniform_scan_inclusive_max( half value );
16882half __ovld sub_group_non_uniform_scan_exclusive_add( half value );
16883half __ovld sub_group_non_uniform_scan_exclusive_mul( half value );
16884half __ovld sub_group_non_uniform_scan_exclusive_min( half value );
16885half __ovld sub_group_non_uniform_scan_exclusive_max( half value );
16886#endif // cl_khr_fp16
16887
16888#if defined(cl_khr_fp64)
16889double __ovld sub_group_non_uniform_reduce_add( double value );
16890double __ovld sub_group_non_uniform_reduce_mul( double value );
16891double __ovld sub_group_non_uniform_reduce_min( double value );
16892double __ovld sub_group_non_uniform_reduce_max( double value );
16893double __ovld sub_group_non_uniform_scan_inclusive_add( double value );
16894double __ovld sub_group_non_uniform_scan_inclusive_mul( double value );
16895double __ovld sub_group_non_uniform_scan_inclusive_min( double value );
16896double __ovld sub_group_non_uniform_scan_inclusive_max( double value );
16897double __ovld sub_group_non_uniform_scan_exclusive_add( double value );
16898double __ovld sub_group_non_uniform_scan_exclusive_mul( double value );
16899double __ovld sub_group_non_uniform_scan_exclusive_min( double value );
16900double __ovld sub_group_non_uniform_scan_exclusive_max( double value );
16901#endif // cl_khr_fp64
16902
16903#endif // cl_khr_subgroup_non_uniform_arithmetic
16904
16905#if defined(cl_khr_subgroup_shuffle)
16906char __ovld sub_group_shuffle( char value, uint index );
16907uchar __ovld sub_group_shuffle( uchar value, uint index );
16908short __ovld sub_group_shuffle( short value, uint index );
16909ushort __ovld sub_group_shuffle( ushort value, uint index );
16910int __ovld sub_group_shuffle( int value, uint index );
16911uint __ovld sub_group_shuffle( uint value, uint index );
16912long __ovld sub_group_shuffle( long value, uint index );
16913ulong __ovld sub_group_shuffle( ulong value, uint index );
16914float __ovld sub_group_shuffle( float value, uint index );
16915
16916char __ovld sub_group_shuffle_xor( char value, uint mask );
16917uchar __ovld sub_group_shuffle_xor( uchar value, uint mask );
16918short __ovld sub_group_shuffle_xor( short value, uint mask );
16919ushort __ovld sub_group_shuffle_xor( ushort value, uint mask );
16920int __ovld sub_group_shuffle_xor( int value, uint mask );
16921uint __ovld sub_group_shuffle_xor( uint value, uint mask );
16922long __ovld sub_group_shuffle_xor( long value, uint mask );
16923ulong __ovld sub_group_shuffle_xor( ulong value, uint mask );
16924float __ovld sub_group_shuffle_xor( float value, uint mask );
16925
16926#if defined(cl_khr_fp16)
16927half __ovld sub_group_shuffle( half value, uint index );
16928half __ovld sub_group_shuffle_xor( half value, uint mask );
16929#endif // cl_khr_fp16
16930
16931#if defined(cl_khr_fp64)
16932double __ovld sub_group_shuffle( double value, uint index );
16933double __ovld sub_group_shuffle_xor( double value, uint mask );
16934#endif // cl_khr_fp64
16935
16936#endif // cl_khr_subgroup_shuffle
16937
16938#if defined(cl_khr_subgroup_shuffle_relative)
16939char __ovld sub_group_shuffle_up( char value, uint delta );
16940uchar __ovld sub_group_shuffle_up( uchar value, uint delta );
16941short __ovld sub_group_shuffle_up( short value, uint delta );
16942ushort __ovld sub_group_shuffle_up( ushort value, uint delta );
16943int __ovld sub_group_shuffle_up( int value, uint delta );
16944uint __ovld sub_group_shuffle_up( uint value, uint delta );
16945long __ovld sub_group_shuffle_up( long value, uint delta );
16946ulong __ovld sub_group_shuffle_up( ulong value, uint delta );
16947float __ovld sub_group_shuffle_up( float value, uint delta );
16948
16949char __ovld sub_group_shuffle_down( char value, uint delta );
16950uchar __ovld sub_group_shuffle_down( uchar value, uint delta );
16951short __ovld sub_group_shuffle_down( short value, uint delta );
16952ushort __ovld sub_group_shuffle_down( ushort value, uint delta );
16953int __ovld sub_group_shuffle_down( int value, uint delta );
16954uint __ovld sub_group_shuffle_down( uint value, uint delta );
16955long __ovld sub_group_shuffle_down( long value, uint delta );
16956ulong __ovld sub_group_shuffle_down( ulong value, uint delta );
16957float __ovld sub_group_shuffle_down( float value, uint delta );
16958
16959#if defined(cl_khr_fp16)
16960half __ovld sub_group_shuffle_up( half value, uint delta );
16961half __ovld sub_group_shuffle_down( half value, uint delta );
16962#endif // cl_khr_fp16
16963
16964#if defined(cl_khr_fp64)
16965double __ovld sub_group_shuffle_up( double value, uint delta );
16966double __ovld sub_group_shuffle_down( double value, uint delta );
16967#endif // cl_khr_fp64
16968
16969#endif // cl_khr_subgroup_shuffle_relative
16970
16971#if defined(cl_khr_subgroup_clustered_reduce)
16972char __ovld sub_group_clustered_reduce_add( char value, uint clustersize );
16973uchar __ovld sub_group_clustered_reduce_add( uchar value, uint clustersize );
16974short __ovld sub_group_clustered_reduce_add( short value, uint clustersize );
16975ushort __ovld sub_group_clustered_reduce_add( ushort value, uint clustersize );
16976int __ovld sub_group_clustered_reduce_add( int value, uint clustersize );
16977uint __ovld sub_group_clustered_reduce_add( uint value, uint clustersize );
16978long __ovld sub_group_clustered_reduce_add( long value, uint clustersize );
16979ulong __ovld sub_group_clustered_reduce_add( ulong value, uint clustersize );
16980float __ovld sub_group_clustered_reduce_add( float value, uint clustersize );
16981
16982char __ovld sub_group_clustered_reduce_mul( char value, uint clustersize );
16983uchar __ovld sub_group_clustered_reduce_mul( uchar value, uint clustersize );
16984short __ovld sub_group_clustered_reduce_mul( short value, uint clustersize );
16985ushort __ovld sub_group_clustered_reduce_mul( ushort value, uint clustersize );
16986int __ovld sub_group_clustered_reduce_mul( int value, uint clustersize );
16987uint __ovld sub_group_clustered_reduce_mul( uint value, uint clustersize );
16988long __ovld sub_group_clustered_reduce_mul( long value, uint clustersize );
16989ulong __ovld sub_group_clustered_reduce_mul( ulong value, uint clustersize );
16990float __ovld sub_group_clustered_reduce_mul( float value, uint clustersize );
16991
16992char __ovld sub_group_clustered_reduce_min( char value, uint clustersize );
16993uchar __ovld sub_group_clustered_reduce_min( uchar value, uint clustersize );
16994short __ovld sub_group_clustered_reduce_min( short value, uint clustersize );
16995ushort __ovld sub_group_clustered_reduce_min( ushort value, uint clustersize );
16996int __ovld sub_group_clustered_reduce_min( int value, uint clustersize );
16997uint __ovld sub_group_clustered_reduce_min( uint value, uint clustersize );
16998long __ovld sub_group_clustered_reduce_min( long value, uint clustersize );
16999ulong __ovld sub_group_clustered_reduce_min( ulong value, uint clustersize );
17000float __ovld sub_group_clustered_reduce_min( float value, uint clustersize );
17001
17002char __ovld sub_group_clustered_reduce_max( char value, uint clustersize );
17003uchar __ovld sub_group_clustered_reduce_max( uchar value, uint clustersize );
17004short __ovld sub_group_clustered_reduce_max( short value, uint clustersize );
17005ushort __ovld sub_group_clustered_reduce_max( ushort value, uint clustersize );
17006int __ovld sub_group_clustered_reduce_max( int value, uint clustersize );
17007uint __ovld sub_group_clustered_reduce_max( uint value, uint clustersize );
17008long __ovld sub_group_clustered_reduce_max( long value, uint clustersize );
17009ulong __ovld sub_group_clustered_reduce_max( ulong value, uint clustersize );
17010float __ovld sub_group_clustered_reduce_max( float value, uint clustersize );
17011
17012char __ovld sub_group_clustered_reduce_and( char value, uint clustersize );
17013uchar __ovld sub_group_clustered_reduce_and( uchar value, uint clustersize );
17014short __ovld sub_group_clustered_reduce_and( short value, uint clustersize );
17015ushort __ovld sub_group_clustered_reduce_and( ushort value, uint clustersize );
17016int __ovld sub_group_clustered_reduce_and( int value, uint clustersize );
17017uint __ovld sub_group_clustered_reduce_and( uint value, uint clustersize );
17018long __ovld sub_group_clustered_reduce_and( long value, uint clustersize );
17019ulong __ovld sub_group_clustered_reduce_and( ulong value, uint clustersize );
17020
17021char __ovld sub_group_clustered_reduce_or( char value, uint clustersize );
17022uchar __ovld sub_group_clustered_reduce_or( uchar value, uint clustersize );
17023short __ovld sub_group_clustered_reduce_or( short value, uint clustersize );
17024ushort __ovld sub_group_clustered_reduce_or( ushort value, uint clustersize );
17025int __ovld sub_group_clustered_reduce_or( int value, uint clustersize );
17026uint __ovld sub_group_clustered_reduce_or( uint value, uint clustersize );
17027long __ovld sub_group_clustered_reduce_or( long value, uint clustersize );
17028ulong __ovld sub_group_clustered_reduce_or( ulong value, uint clustersize );
17029
17030char __ovld sub_group_clustered_reduce_xor( char value, uint clustersize );
17031uchar __ovld sub_group_clustered_reduce_xor( uchar value, uint clustersize );
17032short __ovld sub_group_clustered_reduce_xor( short value, uint clustersize );
17033ushort __ovld sub_group_clustered_reduce_xor( ushort value, uint clustersize );
17034int __ovld sub_group_clustered_reduce_xor( int value, uint clustersize );
17035uint __ovld sub_group_clustered_reduce_xor( uint value, uint clustersize );
17036long __ovld sub_group_clustered_reduce_xor( long value, uint clustersize );
17037ulong __ovld sub_group_clustered_reduce_xor( ulong value, uint clustersize );
17038
17039int __ovld sub_group_clustered_reduce_logical_and( int predicate, uint clustersize );
17040int __ovld sub_group_clustered_reduce_logical_or( int predicate, uint clustersize );
17041int __ovld sub_group_clustered_reduce_logical_xor( int predicate, uint clustersize );
17042
17043#if defined(cl_khr_fp16)
17044half __ovld sub_group_clustered_reduce_add( half value, uint clustersize );
17045half __ovld sub_group_clustered_reduce_mul( half value, uint clustersize );
17046half __ovld sub_group_clustered_reduce_min( half value, uint clustersize );
17047half __ovld sub_group_clustered_reduce_max( half value, uint clustersize );
17048#endif // cl_khr_fp16
17049
17050#if defined(cl_khr_fp64)
17051double __ovld sub_group_clustered_reduce_add( double value, uint clustersize );
17052double __ovld sub_group_clustered_reduce_mul( double value, uint clustersize );
17053double __ovld sub_group_clustered_reduce_min( double value, uint clustersize );
17054double __ovld sub_group_clustered_reduce_max( double value, uint clustersize );
17055#endif // cl_khr_fp64
17056
17057#endif // cl_khr_subgroup_clustered_reduce
17058
17059#if defined(cl_khr_extended_bit_ops)
17060char __ovld __cnfn bitfield_insert(char, char, uint, uint);
17061uchar __ovld __cnfn bitfield_insert(uchar, uchar, uint, uint);
17062short __ovld __cnfn bitfield_insert(short, short, uint, uint);
17063ushort __ovld __cnfn bitfield_insert(ushort, ushort, uint, uint);
17064int __ovld __cnfn bitfield_insert(int, int, uint, uint);
17065uint __ovld __cnfn bitfield_insert(uint, uint, uint, uint);
17066long __ovld __cnfn bitfield_insert(long, long, uint, uint);
17067ulong __ovld __cnfn bitfield_insert(ulong, ulong, uint, uint);
17068char2 __ovld __cnfn bitfield_insert(char2, char2, uint, uint);
17069uchar2 __ovld __cnfn bitfield_insert(uchar2, uchar2, uint, uint);
17070short2 __ovld __cnfn bitfield_insert(short2, short2, uint, uint);
17071ushort2 __ovld __cnfn bitfield_insert(ushort2, ushort2, uint, uint);
17072int2 __ovld __cnfn bitfield_insert(int2, int2, uint, uint);
17073uint2 __ovld __cnfn bitfield_insert(uint2, uint2, uint, uint);
17074long2 __ovld __cnfn bitfield_insert(long2, long2, uint, uint);
17075ulong2 __ovld __cnfn bitfield_insert(ulong2, ulong2, uint, uint);
17076char3 __ovld __cnfn bitfield_insert(char3, char3, uint, uint);
17077uchar3 __ovld __cnfn bitfield_insert(uchar3, uchar3, uint, uint);
17078short3 __ovld __cnfn bitfield_insert(short3, short3, uint, uint);
17079ushort3 __ovld __cnfn bitfield_insert(ushort3, ushort3, uint, uint);
17080int3 __ovld __cnfn bitfield_insert(int3, int3, uint, uint);
17081uint3 __ovld __cnfn bitfield_insert(uint3, uint3, uint, uint);
17082long3 __ovld __cnfn bitfield_insert(long3, long3, uint, uint);
17083ulong3 __ovld __cnfn bitfield_insert(ulong3, ulong3, uint, uint);
17084char4 __ovld __cnfn bitfield_insert(char4, char4, uint, uint);
17085uchar4 __ovld __cnfn bitfield_insert(uchar4, uchar4, uint, uint);
17086short4 __ovld __cnfn bitfield_insert(short4, short4, uint, uint);
17087ushort4 __ovld __cnfn bitfield_insert(ushort4, ushort4, uint, uint);
17088int4 __ovld __cnfn bitfield_insert(int4, int4, uint, uint);
17089uint4 __ovld __cnfn bitfield_insert(uint4, uint4, uint, uint);
17090long4 __ovld __cnfn bitfield_insert(long4, long4, uint, uint);
17091ulong4 __ovld __cnfn bitfield_insert(ulong4, ulong4, uint, uint);
17092char8 __ovld __cnfn bitfield_insert(char8, char8, uint, uint);
17093uchar8 __ovld __cnfn bitfield_insert(uchar8, uchar8, uint, uint);
17094short8 __ovld __cnfn bitfield_insert(short8, short8, uint, uint);
17095ushort8 __ovld __cnfn bitfield_insert(ushort8, ushort8, uint, uint);
17096int8 __ovld __cnfn bitfield_insert(int8, int8, uint, uint);
17097uint8 __ovld __cnfn bitfield_insert(uint8, uint8, uint, uint);
17098long8 __ovld __cnfn bitfield_insert(long8, long8, uint, uint);
17099ulong8 __ovld __cnfn bitfield_insert(ulong8, ulong8, uint, uint);
17100char16 __ovld __cnfn bitfield_insert(char16, char16, uint, uint);
17101uchar16 __ovld __cnfn bitfield_insert(uchar16, uchar16, uint, uint);
17102short16 __ovld __cnfn bitfield_insert(short16, short16, uint, uint);
17103ushort16 __ovld __cnfn bitfield_insert(ushort16, ushort16, uint, uint);
17104int16 __ovld __cnfn bitfield_insert(int16, int16, uint, uint);
17105uint16 __ovld __cnfn bitfield_insert(uint16, uint16, uint, uint);
17106long16 __ovld __cnfn bitfield_insert(long16, long16, uint, uint);
17107ulong16 __ovld __cnfn bitfield_insert(ulong16, ulong16, uint, uint);
17108
17109char __ovld __cnfn bitfield_extract_signed(char, uint, uint);
17110short __ovld __cnfn bitfield_extract_signed(short, uint, uint);
17111int __ovld __cnfn bitfield_extract_signed(int, uint, uint);
17112long __ovld __cnfn bitfield_extract_signed(long, uint, uint);
17113char2 __ovld __cnfn bitfield_extract_signed(char2, uint, uint);
17114short2 __ovld __cnfn bitfield_extract_signed(short2, uint, uint);
17115int2 __ovld __cnfn bitfield_extract_signed(int2, uint, uint);
17116long2 __ovld __cnfn bitfield_extract_signed(long2, uint, uint);
17117char3 __ovld __cnfn bitfield_extract_signed(char3, uint, uint);
17118short3 __ovld __cnfn bitfield_extract_signed(short3, uint, uint);
17119int3 __ovld __cnfn bitfield_extract_signed(int3, uint, uint);
17120long3 __ovld __cnfn bitfield_extract_signed(long3, uint, uint);
17121char4 __ovld __cnfn bitfield_extract_signed(char4, uint, uint);
17122short4 __ovld __cnfn bitfield_extract_signed(short4, uint, uint);
17123int4 __ovld __cnfn bitfield_extract_signed(int4, uint, uint);
17124long4 __ovld __cnfn bitfield_extract_signed(long4, uint, uint);
17125char8 __ovld __cnfn bitfield_extract_signed(char8, uint, uint);
17126short8 __ovld __cnfn bitfield_extract_signed(short8, uint, uint);
17127int8 __ovld __cnfn bitfield_extract_signed(int8, uint, uint);
17128long8 __ovld __cnfn bitfield_extract_signed(long8, uint, uint);
17129char16 __ovld __cnfn bitfield_extract_signed(char16, uint, uint);
17130short16 __ovld __cnfn bitfield_extract_signed(short16, uint, uint);
17131int16 __ovld __cnfn bitfield_extract_signed(int16, uint, uint);
17132long16 __ovld __cnfn bitfield_extract_signed(long16, uint, uint);
17133
17134char __ovld __cnfn bitfield_extract_signed(uchar, uint, uint);
17135short __ovld __cnfn bitfield_extract_signed(ushort, uint, uint);
17136int __ovld __cnfn bitfield_extract_signed(uint, uint, uint);
17137long __ovld __cnfn bitfield_extract_signed(ulong, uint, uint);
17138char2 __ovld __cnfn bitfield_extract_signed(uchar2, uint, uint);
17139short2 __ovld __cnfn bitfield_extract_signed(ushort2, uint, uint);
17140int2 __ovld __cnfn bitfield_extract_signed(uint2, uint, uint);
17141long2 __ovld __cnfn bitfield_extract_signed(ulong2, uint, uint);
17142char3 __ovld __cnfn bitfield_extract_signed(uchar3, uint, uint);
17143short3 __ovld __cnfn bitfield_extract_signed(ushort3, uint, uint);
17144int3 __ovld __cnfn bitfield_extract_signed(uint3, uint, uint);
17145long3 __ovld __cnfn bitfield_extract_signed(ulong3, uint, uint);
17146char4 __ovld __cnfn bitfield_extract_signed(uchar4, uint, uint);
17147short4 __ovld __cnfn bitfield_extract_signed(ushort4, uint, uint);
17148int4 __ovld __cnfn bitfield_extract_signed(uint4, uint, uint);
17149long4 __ovld __cnfn bitfield_extract_signed(ulong4, uint, uint);
17150char8 __ovld __cnfn bitfield_extract_signed(uchar8, uint, uint);
17151short8 __ovld __cnfn bitfield_extract_signed(ushort8, uint, uint);
17152int8 __ovld __cnfn bitfield_extract_signed(uint8, uint, uint);
17153long8 __ovld __cnfn bitfield_extract_signed(ulong8, uint, uint);
17154char16 __ovld __cnfn bitfield_extract_signed(uchar16, uint, uint);
17155short16 __ovld __cnfn bitfield_extract_signed(ushort16, uint, uint);
17156int16 __ovld __cnfn bitfield_extract_signed(uint16, uint, uint);
17157long16 __ovld __cnfn bitfield_extract_signed(ulong16, uint, uint);
17158
17159uchar __ovld __cnfn bitfield_extract_unsigned(char, uint, uint);
17160ushort __ovld __cnfn bitfield_extract_unsigned(short, uint, uint);
17161uint __ovld __cnfn bitfield_extract_unsigned(int, uint, uint);
17162ulong __ovld __cnfn bitfield_extract_unsigned(long, uint, uint);
17163uchar2 __ovld __cnfn bitfield_extract_unsigned(char2, uint, uint);
17164ushort2 __ovld __cnfn bitfield_extract_unsigned(short2, uint, uint);
17165uint2 __ovld __cnfn bitfield_extract_unsigned(int2, uint, uint);
17166ulong2 __ovld __cnfn bitfield_extract_unsigned(long2, uint, uint);
17167uchar3 __ovld __cnfn bitfield_extract_unsigned(char3, uint, uint);
17168ushort3 __ovld __cnfn bitfield_extract_unsigned(short3, uint, uint);
17169uint3 __ovld __cnfn bitfield_extract_unsigned(int3, uint, uint);
17170ulong3 __ovld __cnfn bitfield_extract_unsigned(long3, uint, uint);
17171uchar4 __ovld __cnfn bitfield_extract_unsigned(char4, uint, uint);
17172ushort4 __ovld __cnfn bitfield_extract_unsigned(short4, uint, uint);
17173uint4 __ovld __cnfn bitfield_extract_unsigned(int4, uint, uint);
17174ulong4 __ovld __cnfn bitfield_extract_unsigned(long4, uint, uint);
17175uchar8 __ovld __cnfn bitfield_extract_unsigned(char8, uint, uint);
17176ushort8 __ovld __cnfn bitfield_extract_unsigned(short8, uint, uint);
17177uint8 __ovld __cnfn bitfield_extract_unsigned(int8, uint, uint);
17178ulong8 __ovld __cnfn bitfield_extract_unsigned(long8, uint, uint);
17179uchar16 __ovld __cnfn bitfield_extract_unsigned(char16, uint, uint);
17180ushort16 __ovld __cnfn bitfield_extract_unsigned(short16, uint, uint);
17181uint16 __ovld __cnfn bitfield_extract_unsigned(int16, uint, uint);
17182ulong16 __ovld __cnfn bitfield_extract_unsigned(long16, uint, uint);
17183
17184uchar __ovld __cnfn bitfield_extract_unsigned(uchar, uint, uint);
17185ushort __ovld __cnfn bitfield_extract_unsigned(ushort, uint, uint);
17186uint __ovld __cnfn bitfield_extract_unsigned(uint, uint, uint);
17187ulong __ovld __cnfn bitfield_extract_unsigned(ulong, uint, uint);
17188uchar2 __ovld __cnfn bitfield_extract_unsigned(uchar2, uint, uint);
17189ushort2 __ovld __cnfn bitfield_extract_unsigned(ushort2, uint, uint);
17190uint2 __ovld __cnfn bitfield_extract_unsigned(uint2, uint, uint);
17191ulong2 __ovld __cnfn bitfield_extract_unsigned(ulong2, uint, uint);
17192uchar3 __ovld __cnfn bitfield_extract_unsigned(uchar3, uint, uint);
17193ushort3 __ovld __cnfn bitfield_extract_unsigned(ushort3, uint, uint);
17194uint3 __ovld __cnfn bitfield_extract_unsigned(uint3, uint, uint);
17195ulong3 __ovld __cnfn bitfield_extract_unsigned(ulong3, uint, uint);
17196uchar4 __ovld __cnfn bitfield_extract_unsigned(uchar4, uint, uint);
17197ushort4 __ovld __cnfn bitfield_extract_unsigned(ushort4, uint, uint);
17198uint4 __ovld __cnfn bitfield_extract_unsigned(uint4, uint, uint);
17199ulong4 __ovld __cnfn bitfield_extract_unsigned(ulong4, uint, uint);
17200uchar8 __ovld __cnfn bitfield_extract_unsigned(uchar8, uint, uint);
17201ushort8 __ovld __cnfn bitfield_extract_unsigned(ushort8, uint, uint);
17202uint8 __ovld __cnfn bitfield_extract_unsigned(uint8, uint, uint);
17203ulong8 __ovld __cnfn bitfield_extract_unsigned(ulong8, uint, uint);
17204uchar16 __ovld __cnfn bitfield_extract_unsigned(uchar16, uint, uint);
17205ushort16 __ovld __cnfn bitfield_extract_unsigned(ushort16, uint, uint);
17206uint16 __ovld __cnfn bitfield_extract_unsigned(uint16, uint, uint);
17207ulong16 __ovld __cnfn bitfield_extract_unsigned(ulong16, uint, uint);
17208
17209char __ovld __cnfn bit_reverse(char);
17210uchar __ovld __cnfn bit_reverse(uchar);
17211short __ovld __cnfn bit_reverse(short);
17212ushort __ovld __cnfn bit_reverse(ushort);
17213int __ovld __cnfn bit_reverse(int);
17214uint __ovld __cnfn bit_reverse(uint);
17215long __ovld __cnfn bit_reverse(long);
17216ulong __ovld __cnfn bit_reverse(ulong);
17217char2 __ovld __cnfn bit_reverse(char2);
17218uchar2 __ovld __cnfn bit_reverse(uchar2);
17219short2 __ovld __cnfn bit_reverse(short2);
17220ushort2 __ovld __cnfn bit_reverse(ushort2);
17221int2 __ovld __cnfn bit_reverse(int2);
17222uint2 __ovld __cnfn bit_reverse(uint2);
17223long2 __ovld __cnfn bit_reverse(long2);
17224ulong2 __ovld __cnfn bit_reverse(ulong2);
17225char3 __ovld __cnfn bit_reverse(char3);
17226uchar3 __ovld __cnfn bit_reverse(uchar3);
17227short3 __ovld __cnfn bit_reverse(short3);
17228ushort3 __ovld __cnfn bit_reverse(ushort3);
17229int3 __ovld __cnfn bit_reverse(int3);
17230uint3 __ovld __cnfn bit_reverse(uint3);
17231long3 __ovld __cnfn bit_reverse(long3);
17232ulong3 __ovld __cnfn bit_reverse(ulong3);
17233char4 __ovld __cnfn bit_reverse(char4);
17234uchar4 __ovld __cnfn bit_reverse(uchar4);
17235short4 __ovld __cnfn bit_reverse(short4);
17236ushort4 __ovld __cnfn bit_reverse(ushort4);
17237int4 __ovld __cnfn bit_reverse(int4);
17238uint4 __ovld __cnfn bit_reverse(uint4);
17239long4 __ovld __cnfn bit_reverse(long4);
17240ulong4 __ovld __cnfn bit_reverse(ulong4);
17241char8 __ovld __cnfn bit_reverse(char8);
17242uchar8 __ovld __cnfn bit_reverse(uchar8);
17243short8 __ovld __cnfn bit_reverse(short8);
17244ushort8 __ovld __cnfn bit_reverse(ushort8);
17245int8 __ovld __cnfn bit_reverse(int8);
17246uint8 __ovld __cnfn bit_reverse(uint8);
17247long8 __ovld __cnfn bit_reverse(long8);
17248ulong8 __ovld __cnfn bit_reverse(ulong8);
17249char16 __ovld __cnfn bit_reverse(char16);
17250uchar16 __ovld __cnfn bit_reverse(uchar16);
17251short16 __ovld __cnfn bit_reverse(short16);
17252ushort16 __ovld __cnfn bit_reverse(ushort16);
17253int16 __ovld __cnfn bit_reverse(int16);
17254uint16 __ovld __cnfn bit_reverse(uint16);
17255long16 __ovld __cnfn bit_reverse(long16);
17256ulong16 __ovld __cnfn bit_reverse(ulong16);
17257#endif // cl_khr_extended_bit_ops
17258
17259#if defined(__opencl_c_integer_dot_product_input_4x8bit)
17260uint __ovld __cnfn dot(uchar4, uchar4);
17261int __ovld __cnfn dot(char4, char4);
17262int __ovld __cnfn dot(uchar4, char4);
17263int __ovld __cnfn dot(char4, uchar4);
17264
17265uint __ovld __cnfn dot_acc_sat(uchar4, uchar4, uint);
17266int __ovld __cnfn dot_acc_sat(char4, char4, int);
17267int __ovld __cnfn dot_acc_sat(uchar4, char4, int);
17268int __ovld __cnfn dot_acc_sat(char4, uchar4, int);
17269#endif // __opencl_c_integer_dot_product_input_4x8bit
17270
17271#if defined(__opencl_c_integer_dot_product_input_4x8bit_packed)
17272uint __ovld __cnfn dot_4x8packed_uu_uint(uint, uint);
17273int __ovld __cnfn dot_4x8packed_ss_int(uint, uint);
17274int __ovld __cnfn dot_4x8packed_us_int(uint, uint);
17275int __ovld __cnfn dot_4x8packed_su_int(uint, uint);
17276
17277uint __ovld __cnfn dot_acc_sat_4x8packed_uu_uint(uint, uint, uint);
17278int __ovld __cnfn dot_acc_sat_4x8packed_ss_int(uint, uint, int);
17279int __ovld __cnfn dot_acc_sat_4x8packed_us_int(uint, uint, int);
17280int __ovld __cnfn dot_acc_sat_4x8packed_su_int(uint, uint, int);
17281#endif // __opencl_c_integer_dot_product_input_4x8bit_packed
17282
17283#if defined(cl_khr_subgroup_rotate)
17284char __ovld __conv sub_group_rotate(char, int);
17285uchar __ovld __conv sub_group_rotate(uchar, int);
17286short __ovld __conv sub_group_rotate(short, int);
17287ushort __ovld __conv sub_group_rotate(ushort, int);
17288int __ovld __conv sub_group_rotate(int, int);
17289uint __ovld __conv sub_group_rotate(uint, int);
17290long __ovld __conv sub_group_rotate(long, int);
17291ulong __ovld __conv sub_group_rotate(ulong, int);
17292float __ovld __conv sub_group_rotate(float, int);
17293#if defined(cl_khr_fp64)
17294double __ovld __conv sub_group_rotate(double, int);
17295#endif // cl_khr_fp64
17296#if defined(cl_khr_fp16)
17297half __ovld __conv sub_group_rotate(half, int);
17298#endif // cl_khr_fp16
17299
17300char __ovld __conv sub_group_clustered_rotate(char, int, uint);
17301uchar __ovld __conv sub_group_clustered_rotate(uchar, int, uint);
17302short __ovld __conv sub_group_clustered_rotate(short, int, uint);
17303ushort __ovld __conv sub_group_clustered_rotate(ushort, int, uint);
17304int __ovld __conv sub_group_clustered_rotate(int, int, uint);
17305uint __ovld __conv sub_group_clustered_rotate(uint, int, uint);
17306long __ovld __conv sub_group_clustered_rotate(long, int, uint);
17307ulong __ovld __conv sub_group_clustered_rotate(ulong, int, uint);
17308float __ovld __conv sub_group_clustered_rotate(float, int, uint);
17309#if defined(cl_khr_fp64)
17310double __ovld __conv sub_group_clustered_rotate(double, int, uint);
17311#endif // cl_khr_fp64
17312#if defined(cl_khr_fp16)
17313half __ovld __conv sub_group_clustered_rotate(half, int, uint);
17314#endif // cl_khr_fp16
17315#endif // cl_khr_subgroup_rotate
17316
17317#if defined(cl_intel_subgroups)
17318// Intel-Specific Sub Group Functions
17319float __ovld __conv intel_sub_group_shuffle( float , uint );
17320float2 __ovld __conv intel_sub_group_shuffle( float2, uint );
17321float3 __ovld __conv intel_sub_group_shuffle( float3, uint );
17322float4 __ovld __conv intel_sub_group_shuffle( float4, uint );
17323float8 __ovld __conv intel_sub_group_shuffle( float8, uint );
17324float16 __ovld __conv intel_sub_group_shuffle( float16, uint );
17325
17326int __ovld __conv intel_sub_group_shuffle( int , uint );
17327int2 __ovld __conv intel_sub_group_shuffle( int2, uint );
17328int3 __ovld __conv intel_sub_group_shuffle( int3, uint );
17329int4 __ovld __conv intel_sub_group_shuffle( int4, uint );
17330int8 __ovld __conv intel_sub_group_shuffle( int8, uint );
17331int16 __ovld __conv intel_sub_group_shuffle( int16, uint );
17332
17333uint __ovld __conv intel_sub_group_shuffle( uint , uint );
17334uint2 __ovld __conv intel_sub_group_shuffle( uint2, uint );
17335uint3 __ovld __conv intel_sub_group_shuffle( uint3, uint );
17336uint4 __ovld __conv intel_sub_group_shuffle( uint4, uint );
17337uint8 __ovld __conv intel_sub_group_shuffle( uint8, uint );
17338uint16 __ovld __conv intel_sub_group_shuffle( uint16, uint );
17339
17340long __ovld __conv intel_sub_group_shuffle( long, uint );
17341ulong __ovld __conv intel_sub_group_shuffle( ulong, uint );
17342
17343float __ovld __conv intel_sub_group_shuffle_down( float cur, float next, uint );
17344float2 __ovld __conv intel_sub_group_shuffle_down( float2 cur, float2 next, uint );
17345float3 __ovld __conv intel_sub_group_shuffle_down( float3 cur, float3 next, uint );
17346float4 __ovld __conv intel_sub_group_shuffle_down( float4 cur, float4 next, uint );
17347float8 __ovld __conv intel_sub_group_shuffle_down( float8 cur, float8 next, uint );
17348float16 __ovld __conv intel_sub_group_shuffle_down( float16 cur, float16 next, uint );
17349
17350int __ovld __conv intel_sub_group_shuffle_down( int cur, int next, uint );
17351int2 __ovld __conv intel_sub_group_shuffle_down( int2 cur, int2 next, uint );
17352int3 __ovld __conv intel_sub_group_shuffle_down( int3 cur, int3 next, uint );
17353int4 __ovld __conv intel_sub_group_shuffle_down( int4 cur, int4 next, uint );
17354int8 __ovld __conv intel_sub_group_shuffle_down( int8 cur, int8 next, uint );
17355int16 __ovld __conv intel_sub_group_shuffle_down( int16 cur, int16 next, uint );
17356
17357uint __ovld __conv intel_sub_group_shuffle_down( uint cur, uint next, uint );
17358uint2 __ovld __conv intel_sub_group_shuffle_down( uint2 cur, uint2 next, uint );
17359uint3 __ovld __conv intel_sub_group_shuffle_down( uint3 cur, uint3 next, uint );
17360uint4 __ovld __conv intel_sub_group_shuffle_down( uint4 cur, uint4 next, uint );
17361uint8 __ovld __conv intel_sub_group_shuffle_down( uint8 cur, uint8 next, uint );
17362uint16 __ovld __conv intel_sub_group_shuffle_down( uint16 cur, uint16 next, uint );
17363
17364long __ovld __conv intel_sub_group_shuffle_down( long prev, long cur, uint );
17365ulong __ovld __conv intel_sub_group_shuffle_down( ulong prev, ulong cur, uint );
17366
17367float __ovld __conv intel_sub_group_shuffle_up( float prev, float cur, uint );
17368float2 __ovld __conv intel_sub_group_shuffle_up( float2 prev, float2 cur, uint );
17369float3 __ovld __conv intel_sub_group_shuffle_up( float3 prev, float3 cur, uint );
17370float4 __ovld __conv intel_sub_group_shuffle_up( float4 prev, float4 cur, uint );
17371float8 __ovld __conv intel_sub_group_shuffle_up( float8 prev, float8 cur, uint );
17372float16 __ovld __conv intel_sub_group_shuffle_up( float16 prev, float16 cur, uint );
17373
17374int __ovld __conv intel_sub_group_shuffle_up( int prev, int cur, uint );
17375int2 __ovld __conv intel_sub_group_shuffle_up( int2 prev, int2 cur, uint );
17376int3 __ovld __conv intel_sub_group_shuffle_up( int3 prev, int3 cur, uint );
17377int4 __ovld __conv intel_sub_group_shuffle_up( int4 prev, int4 cur, uint );
17378int8 __ovld __conv intel_sub_group_shuffle_up( int8 prev, int8 cur, uint );
17379int16 __ovld __conv intel_sub_group_shuffle_up( int16 prev, int16 cur, uint );
17380
17381uint __ovld __conv intel_sub_group_shuffle_up( uint prev, uint cur, uint );
17382uint2 __ovld __conv intel_sub_group_shuffle_up( uint2 prev, uint2 cur, uint );
17383uint3 __ovld __conv intel_sub_group_shuffle_up( uint3 prev, uint3 cur, uint );
17384uint4 __ovld __conv intel_sub_group_shuffle_up( uint4 prev, uint4 cur, uint );
17385uint8 __ovld __conv intel_sub_group_shuffle_up( uint8 prev, uint8 cur, uint );
17386uint16 __ovld __conv intel_sub_group_shuffle_up( uint16 prev, uint16 cur, uint );
17387
17388long __ovld __conv intel_sub_group_shuffle_up( long prev, long cur, uint );
17389ulong __ovld __conv intel_sub_group_shuffle_up( ulong prev, ulong cur, uint );
17390
17391float __ovld __conv intel_sub_group_shuffle_xor( float , uint );
17392float2 __ovld __conv intel_sub_group_shuffle_xor( float2, uint );
17393float3 __ovld __conv intel_sub_group_shuffle_xor( float3, uint );
17394float4 __ovld __conv intel_sub_group_shuffle_xor( float4, uint );
17395float8 __ovld __conv intel_sub_group_shuffle_xor( float8, uint );
17396float16 __ovld __conv intel_sub_group_shuffle_xor( float16, uint );
17397
17398int __ovld __conv intel_sub_group_shuffle_xor( int , uint );
17399int2 __ovld __conv intel_sub_group_shuffle_xor( int2, uint );
17400int3 __ovld __conv intel_sub_group_shuffle_xor( int3, uint );
17401int4 __ovld __conv intel_sub_group_shuffle_xor( int4, uint );
17402int8 __ovld __conv intel_sub_group_shuffle_xor( int8, uint );
17403int16 __ovld __conv intel_sub_group_shuffle_xor( int16, uint );
17404
17405uint __ovld __conv intel_sub_group_shuffle_xor( uint , uint );
17406uint2 __ovld __conv intel_sub_group_shuffle_xor( uint2, uint );
17407uint3 __ovld __conv intel_sub_group_shuffle_xor( uint3, uint );
17408uint4 __ovld __conv intel_sub_group_shuffle_xor( uint4, uint );
17409uint8 __ovld __conv intel_sub_group_shuffle_xor( uint8, uint );
17410uint16 __ovld __conv intel_sub_group_shuffle_xor( uint16, uint );
17411
17412long __ovld __conv intel_sub_group_shuffle_xor( long, uint );
17413ulong __ovld __conv intel_sub_group_shuffle_xor( ulong, uint );
17414
17415#if defined(__opencl_c_images)
17416uint __ovld __conv intel_sub_group_block_read(read_only image2d_t, int2);
17417uint2 __ovld __conv intel_sub_group_block_read2(read_only image2d_t, int2);
17418uint4 __ovld __conv intel_sub_group_block_read4(read_only image2d_t, int2);
17419uint8 __ovld __conv intel_sub_group_block_read8(read_only image2d_t, int2);
17420#endif
17421
17422#if defined(__opencl_c_read_write_images)
17423uint __ovld __conv intel_sub_group_block_read(read_write image2d_t, int2);
17424uint2 __ovld __conv intel_sub_group_block_read2(read_write image2d_t, int2);
17425uint4 __ovld __conv intel_sub_group_block_read4(read_write image2d_t, int2);
17426uint8 __ovld __conv intel_sub_group_block_read8(read_write image2d_t, int2);
17427#endif // defined(__opencl_c_read_write_images)
17428
17429uint __ovld __conv intel_sub_group_block_read( const __global uint* p );
17430uint2 __ovld __conv intel_sub_group_block_read2( const __global uint* p );
17431uint4 __ovld __conv intel_sub_group_block_read4( const __global uint* p );
17432uint8 __ovld __conv intel_sub_group_block_read8( const __global uint* p );
17433
17434#if defined(__opencl_c_images)
17435void __ovld __conv intel_sub_group_block_write(write_only image2d_t, int2, uint);
17436void __ovld __conv intel_sub_group_block_write2(write_only image2d_t, int2, uint2);
17437void __ovld __conv intel_sub_group_block_write4(write_only image2d_t, int2, uint4);
17438void __ovld __conv intel_sub_group_block_write8(write_only image2d_t, int2, uint8);
17439#endif // defined(__opencl_c_images)
17440
17441#if defined(__opencl_c_read_write_images)
17442void __ovld __conv intel_sub_group_block_write(read_write image2d_t, int2, uint);
17443void __ovld __conv intel_sub_group_block_write2(read_write image2d_t, int2, uint2);
17444void __ovld __conv intel_sub_group_block_write4(read_write image2d_t, int2, uint4);
17445void __ovld __conv intel_sub_group_block_write8(read_write image2d_t, int2, uint8);
17446#endif // defined(__opencl_c_read_write_images)
17447
17448void __ovld __conv intel_sub_group_block_write( __global uint* p, uint data );
17449void __ovld __conv intel_sub_group_block_write2( __global uint* p, uint2 data );
17450void __ovld __conv intel_sub_group_block_write4( __global uint* p, uint4 data );
17451void __ovld __conv intel_sub_group_block_write8( __global uint* p, uint8 data );
17452
17453#ifdef cl_khr_fp16
17454half __ovld __conv intel_sub_group_shuffle( half, uint );
17455half __ovld __conv intel_sub_group_shuffle_down( half prev, half cur, uint );
17456half __ovld __conv intel_sub_group_shuffle_up( half prev, half cur, uint );
17457half __ovld __conv intel_sub_group_shuffle_xor( half, uint );
17458#endif
17459
17460#if defined(cl_khr_fp64)
17461double __ovld __conv intel_sub_group_shuffle( double, uint );
17462double __ovld __conv intel_sub_group_shuffle_down( double prev, double cur, uint );
17463double __ovld __conv intel_sub_group_shuffle_up( double prev, double cur, uint );
17464double __ovld __conv intel_sub_group_shuffle_xor( double, uint );
17465#endif
17466
17467#endif //cl_intel_subgroups
17468
17469#if defined(cl_intel_subgroups_short)
17470short __ovld __conv intel_sub_group_broadcast( short , uint sub_group_local_id );
17471short2 __ovld __conv intel_sub_group_broadcast( short2, uint sub_group_local_id );
17472short3 __ovld __conv intel_sub_group_broadcast( short3, uint sub_group_local_id );
17473short4 __ovld __conv intel_sub_group_broadcast( short4, uint sub_group_local_id );
17474short8 __ovld __conv intel_sub_group_broadcast( short8, uint sub_group_local_id );
17475
17476ushort __ovld __conv intel_sub_group_broadcast( ushort , uint sub_group_local_id );
17477ushort2 __ovld __conv intel_sub_group_broadcast( ushort2, uint sub_group_local_id );
17478ushort3 __ovld __conv intel_sub_group_broadcast( ushort3, uint sub_group_local_id );
17479ushort4 __ovld __conv intel_sub_group_broadcast( ushort4, uint sub_group_local_id );
17480ushort8 __ovld __conv intel_sub_group_broadcast( ushort8, uint sub_group_local_id );
17481
17482short __ovld __conv intel_sub_group_shuffle( short , uint );
17483short2 __ovld __conv intel_sub_group_shuffle( short2 , uint );
17484short3 __ovld __conv intel_sub_group_shuffle( short3 , uint );
17485short4 __ovld __conv intel_sub_group_shuffle( short4 , uint );
17486short8 __ovld __conv intel_sub_group_shuffle( short8 , uint );
17487short16 __ovld __conv intel_sub_group_shuffle( short16, uint);
17488
17489ushort __ovld __conv intel_sub_group_shuffle( ushort , uint );
17490ushort2 __ovld __conv intel_sub_group_shuffle( ushort2 , uint );
17491ushort3 __ovld __conv intel_sub_group_shuffle( ushort3 , uint );
17492ushort4 __ovld __conv intel_sub_group_shuffle( ushort4 , uint );
17493ushort8 __ovld __conv intel_sub_group_shuffle( ushort8 , uint );
17494ushort16 __ovld __conv intel_sub_group_shuffle( ushort16, uint );
17495
17496short __ovld __conv intel_sub_group_shuffle_down( short cur, short next, uint );
17497short2 __ovld __conv intel_sub_group_shuffle_down( short2 cur, short2 next, uint );
17498short3 __ovld __conv intel_sub_group_shuffle_down( short3 cur, short3 next, uint );
17499short4 __ovld __conv intel_sub_group_shuffle_down( short4 cur, short4 next, uint );
17500short8 __ovld __conv intel_sub_group_shuffle_down( short8 cur, short8 next, uint );
17501short16 __ovld __conv intel_sub_group_shuffle_down( short16 cur, short16 next, uint );
17502
17503ushort __ovld __conv intel_sub_group_shuffle_down( ushort cur, ushort next, uint );
17504ushort2 __ovld __conv intel_sub_group_shuffle_down( ushort2 cur, ushort2 next, uint );
17505ushort3 __ovld __conv intel_sub_group_shuffle_down( ushort3 cur, ushort3 next, uint );
17506ushort4 __ovld __conv intel_sub_group_shuffle_down( ushort4 cur, ushort4 next, uint );
17507ushort8 __ovld __conv intel_sub_group_shuffle_down( ushort8 cur, ushort8 next, uint );
17508ushort16 __ovld __conv intel_sub_group_shuffle_down( ushort16 cur, ushort16 next, uint );
17509
17510short __ovld __conv intel_sub_group_shuffle_up( short cur, short next, uint );
17511short2 __ovld __conv intel_sub_group_shuffle_up( short2 cur, short2 next, uint );
17512short3 __ovld __conv intel_sub_group_shuffle_up( short3 cur, short3 next, uint );
17513short4 __ovld __conv intel_sub_group_shuffle_up( short4 cur, short4 next, uint );
17514short8 __ovld __conv intel_sub_group_shuffle_up( short8 cur, short8 next, uint );
17515short16 __ovld __conv intel_sub_group_shuffle_up( short16 cur, short16 next, uint );
17516
17517ushort __ovld __conv intel_sub_group_shuffle_up( ushort cur, ushort next, uint );
17518ushort2 __ovld __conv intel_sub_group_shuffle_up( ushort2 cur, ushort2 next, uint );
17519ushort3 __ovld __conv intel_sub_group_shuffle_up( ushort3 cur, ushort3 next, uint );
17520ushort4 __ovld __conv intel_sub_group_shuffle_up( ushort4 cur, ushort4 next, uint );
17521ushort8 __ovld __conv intel_sub_group_shuffle_up( ushort8 cur, ushort8 next, uint );
17522ushort16 __ovld __conv intel_sub_group_shuffle_up( ushort16 cur, ushort16 next, uint );
17523
17524short __ovld __conv intel_sub_group_shuffle_xor( short , uint );
17525short2 __ovld __conv intel_sub_group_shuffle_xor( short2 , uint );
17526short3 __ovld __conv intel_sub_group_shuffle_xor( short3 , uint );
17527short4 __ovld __conv intel_sub_group_shuffle_xor( short4 , uint );
17528short8 __ovld __conv intel_sub_group_shuffle_xor( short8 , uint );
17529short16 __ovld __conv intel_sub_group_shuffle_xor( short16, uint );
17530
17531ushort __ovld __conv intel_sub_group_shuffle_xor( ushort , uint );
17532ushort2 __ovld __conv intel_sub_group_shuffle_xor( ushort2 , uint );
17533ushort3 __ovld __conv intel_sub_group_shuffle_xor( ushort3 , uint );
17534ushort4 __ovld __conv intel_sub_group_shuffle_xor( ushort4 , uint );
17535ushort8 __ovld __conv intel_sub_group_shuffle_xor( ushort8 , uint );
17536ushort16 __ovld __conv intel_sub_group_shuffle_xor( ushort16, uint );
17537
17538short __ovld __conv intel_sub_group_reduce_add( short x );
17539ushort __ovld __conv intel_sub_group_reduce_add( ushort x );
17540short __ovld __conv intel_sub_group_reduce_min( short x );
17541ushort __ovld __conv intel_sub_group_reduce_min( ushort x );
17542short __ovld __conv intel_sub_group_reduce_max( short x );
17543ushort __ovld __conv intel_sub_group_reduce_max( ushort x );
17544
17545short __ovld __conv intel_sub_group_scan_exclusive_add( short x );
17546ushort __ovld __conv intel_sub_group_scan_exclusive_add( ushort x );
17547short __ovld __conv intel_sub_group_scan_exclusive_min( short x );
17548ushort __ovld __conv intel_sub_group_scan_exclusive_min( ushort x );
17549short __ovld __conv intel_sub_group_scan_exclusive_max( short x );
17550ushort __ovld __conv intel_sub_group_scan_exclusive_max( ushort x );
17551
17552short __ovld __conv intel_sub_group_scan_inclusive_add( short x );
17553ushort __ovld __conv intel_sub_group_scan_inclusive_add( ushort x );
17554short __ovld __conv intel_sub_group_scan_inclusive_min( short x );
17555ushort __ovld __conv intel_sub_group_scan_inclusive_min( ushort x );
17556short __ovld __conv intel_sub_group_scan_inclusive_max( short x );
17557ushort __ovld __conv intel_sub_group_scan_inclusive_max( ushort x );
17558
17559#if defined(__opencl_c_images)
17560uint __ovld __conv intel_sub_group_block_read_ui(read_only image2d_t, int2);
17561uint2 __ovld __conv intel_sub_group_block_read_ui2(read_only image2d_t, int2);
17562uint4 __ovld __conv intel_sub_group_block_read_ui4(read_only image2d_t, int2);
17563uint8 __ovld __conv intel_sub_group_block_read_ui8(read_only image2d_t, int2);
17564#endif // defined(__opencl_c_images)
17565
17566#if defined(__opencl_c_read_write_images)
17567uint __ovld __conv intel_sub_group_block_read_ui(read_write image2d_t, int2);
17568uint2 __ovld __conv intel_sub_group_block_read_ui2(read_write image2d_t, int2);
17569uint4 __ovld __conv intel_sub_group_block_read_ui4(read_write image2d_t, int2);
17570uint8 __ovld __conv intel_sub_group_block_read_ui8(read_write image2d_t, int2);
17571#endif // defined(__opencl_c_read_write_images)
17572
17573uint __ovld __conv intel_sub_group_block_read_ui( const __global uint* p );
17574uint2 __ovld __conv intel_sub_group_block_read_ui2( const __global uint* p );
17575uint4 __ovld __conv intel_sub_group_block_read_ui4( const __global uint* p );
17576uint8 __ovld __conv intel_sub_group_block_read_ui8( const __global uint* p );
17577
17578#if defined(__opencl_c_images)
17579void __ovld __conv intel_sub_group_block_write_ui(read_only image2d_t, int2, uint);
17580void __ovld __conv intel_sub_group_block_write_ui2(read_only image2d_t, int2, uint2);
17581void __ovld __conv intel_sub_group_block_write_ui4(read_only image2d_t, int2, uint4);
17582void __ovld __conv intel_sub_group_block_write_ui8(read_only image2d_t, int2, uint8);
17583#endif //defined(__opencl_c_images)
17584
17585#if defined(__opencl_c_read_write_images)
17586void __ovld __conv intel_sub_group_block_write_ui(read_write image2d_t, int2, uint);
17587void __ovld __conv intel_sub_group_block_write_ui2(read_write image2d_t, int2, uint2);
17588void __ovld __conv intel_sub_group_block_write_ui4(read_write image2d_t, int2, uint4);
17589void __ovld __conv intel_sub_group_block_write_ui8(read_write image2d_t, int2, uint8);
17590#endif // defined(__opencl_c_read_write_images)
17591
17592void __ovld __conv intel_sub_group_block_write_ui( __global uint* p, uint data );
17593void __ovld __conv intel_sub_group_block_write_ui2( __global uint* p, uint2 data );
17594void __ovld __conv intel_sub_group_block_write_ui4( __global uint* p, uint4 data );
17595void __ovld __conv intel_sub_group_block_write_ui8( __global uint* p, uint8 data );
17596
17597#if defined(__opencl_c_images)
17598ushort __ovld __conv intel_sub_group_block_read_us(read_only image2d_t, int2);
17599ushort2 __ovld __conv intel_sub_group_block_read_us2(read_only image2d_t, int2);
17600ushort4 __ovld __conv intel_sub_group_block_read_us4(read_only image2d_t, int2);
17601ushort8 __ovld __conv intel_sub_group_block_read_us8(read_only image2d_t, int2);
17602#endif // defined(__opencl_c_images)
17603
17604#if defined(__opencl_c_read_write_images)
17605ushort __ovld __conv intel_sub_group_block_read_us(read_write image2d_t, int2);
17606ushort2 __ovld __conv intel_sub_group_block_read_us2(read_write image2d_t, int2);
17607ushort4 __ovld __conv intel_sub_group_block_read_us4(read_write image2d_t, int2);
17608ushort8 __ovld __conv intel_sub_group_block_read_us8(read_write image2d_t, int2);
17609#endif // defined(__opencl_c_read_write_images)
17610
17611ushort __ovld __conv intel_sub_group_block_read_us( const __global ushort* p );
17612ushort2 __ovld __conv intel_sub_group_block_read_us2( const __global ushort* p );
17613ushort4 __ovld __conv intel_sub_group_block_read_us4( const __global ushort* p );
17614ushort8 __ovld __conv intel_sub_group_block_read_us8( const __global ushort* p );
17615
17616#if defined(__opencl_c_images)
17617void __ovld __conv intel_sub_group_block_write_us(write_only image2d_t, int2, ushort);
17618void __ovld __conv intel_sub_group_block_write_us2(write_only image2d_t, int2, ushort2);
17619void __ovld __conv intel_sub_group_block_write_us4(write_only image2d_t, int2, ushort4);
17620void __ovld __conv intel_sub_group_block_write_us8(write_only image2d_t, int2, ushort8);
17621#endif // defined(__opencl_c_images)
17622
17623#if defined(__opencl_c_read_write_images)
17624void __ovld __conv intel_sub_group_block_write_us(read_write image2d_t, int2, ushort);
17625void __ovld __conv intel_sub_group_block_write_us2(read_write image2d_t, int2, ushort2);
17626void __ovld __conv intel_sub_group_block_write_us4(read_write image2d_t, int2, ushort4);
17627void __ovld __conv intel_sub_group_block_write_us8(read_write image2d_t, int2, ushort8);
17628#endif // defined(__opencl_c_read_write_images)
17629
17630void __ovld __conv intel_sub_group_block_write_us( __global ushort* p, ushort data );
17631void __ovld __conv intel_sub_group_block_write_us2( __global ushort* p, ushort2 data );
17632void __ovld __conv intel_sub_group_block_write_us4( __global ushort* p, ushort4 data );
17633void __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, ushort8 data );
17634#endif // cl_intel_subgroups_short
17635
17636#ifdef cl_intel_device_side_avc_motion_estimation
17637#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : begin
17638
17639// MCE built-in functions
17641intel_sub_group_avc_mce_get_default_inter_base_multi_reference_penalty(
17642 uchar slice_type, uchar qp);
17643ulong __ovld intel_sub_group_avc_mce_get_default_inter_shape_penalty(
17644 uchar slice_type, uchar qp);
17645uchar __ovld intel_sub_group_avc_mce_get_default_inter_direction_penalty(
17646 uchar slice_type, uchar qp);
17647uint __ovld intel_sub_group_avc_mce_get_default_intra_luma_shape_penalty(
17648 uchar slice_type, uchar qp);
17649uint2 __ovld
17650intel_sub_group_avc_mce_get_default_inter_motion_vector_cost_table(
17651 uchar slice_type, uchar qp);
17652uchar __ovld intel_sub_group_avc_mce_get_default_intra_luma_mode_penalty(
17653 uchar slice_type, uchar qp);
17654
17655uint2 __ovld intel_sub_group_avc_mce_get_default_high_penalty_cost_table();
17656uint2 __ovld intel_sub_group_avc_mce_get_default_medium_penalty_cost_table();
17657uint2 __ovld intel_sub_group_avc_mce_get_default_low_penalty_cost_table();
17658uint __ovld intel_sub_group_avc_mce_get_default_non_dc_luma_intra_penalty();
17660intel_sub_group_avc_mce_get_default_intra_chroma_mode_base_penalty();
17661
17662intel_sub_group_avc_mce_payload_t __ovld
17663intel_sub_group_avc_mce_set_inter_base_multi_reference_penalty(
17664 uchar reference_base_penalty, intel_sub_group_avc_mce_payload_t payload);
17665intel_sub_group_avc_mce_payload_t __ovld
17666intel_sub_group_avc_mce_set_inter_shape_penalty(
17667 ulong packed_shape_penalty, intel_sub_group_avc_mce_payload_t payload);
17668intel_sub_group_avc_mce_payload_t __ovld
17669intel_sub_group_avc_mce_set_inter_direction_penalty(
17670 uchar direction_cost, intel_sub_group_avc_mce_payload_t payload);
17671intel_sub_group_avc_mce_payload_t __ovld
17672intel_sub_group_avc_mce_set_motion_vector_cost_function(
17673 ulong packed_cost_center_delta, uint2 packed_cost_table,
17674 uchar cost_precision, intel_sub_group_avc_mce_payload_t payload);
17675intel_sub_group_avc_mce_payload_t __ovld
17676intel_sub_group_avc_mce_set_ac_only_haar(
17677 intel_sub_group_avc_mce_payload_t payload);
17678intel_sub_group_avc_mce_payload_t __ovld
17679intel_sub_group_avc_mce_set_source_interlaced_field_polarity(
17680 uchar src_field_polarity, intel_sub_group_avc_mce_payload_t payload);
17681intel_sub_group_avc_mce_payload_t __ovld
17682intel_sub_group_avc_mce_set_single_reference_interlaced_field_polarity(
17683 uchar ref_field_polarity, intel_sub_group_avc_mce_payload_t payload);
17684intel_sub_group_avc_mce_payload_t __ovld
17685intel_sub_group_avc_mce_set_dual_reference_interlaced_field_polarities(
17686 uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
17687 intel_sub_group_avc_mce_payload_t payload);
17688
17689ulong __ovld intel_sub_group_avc_mce_get_motion_vectors(
17690 intel_sub_group_avc_mce_result_t result);
17691ushort __ovld intel_sub_group_avc_mce_get_inter_distortions(
17692 intel_sub_group_avc_mce_result_t result);
17693ushort __ovld intel_sub_group_avc_mce_get_best_inter_distortion(
17694 intel_sub_group_avc_mce_result_t result);
17695uchar __ovld intel_sub_group_avc_mce_get_inter_major_shape(
17696 intel_sub_group_avc_mce_result_t result);
17697uchar __ovld intel_sub_group_avc_mce_get_inter_minor_shapes(
17698 intel_sub_group_avc_mce_result_t result);
17699uchar __ovld intel_sub_group_avc_mce_get_inter_directions(
17700 intel_sub_group_avc_mce_result_t result);
17701uchar __ovld intel_sub_group_avc_mce_get_inter_motion_vector_count(
17702 intel_sub_group_avc_mce_result_t result);
17703uint __ovld intel_sub_group_avc_mce_get_inter_reference_ids(
17704 intel_sub_group_avc_mce_result_t result);
17706intel_sub_group_avc_mce_get_inter_reference_interlaced_field_polarities(
17707 uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
17708 intel_sub_group_avc_mce_result_t result);
17709
17710// IME built-in functions
17711intel_sub_group_avc_ime_payload_t __ovld
17712intel_sub_group_avc_ime_initialize(
17713 ushort2 src_coord, uchar partition_mask, uchar sad_adjustment);
17714intel_sub_group_avc_ime_payload_t __ovld
17715intel_sub_group_avc_ime_set_single_reference(
17716 short2 ref_offset, uchar search_window_config,
17717 intel_sub_group_avc_ime_payload_t payload);
17718intel_sub_group_avc_ime_payload_t __ovld
17719intel_sub_group_avc_ime_set_dual_reference(
17720 short2 fwd_ref_offset, short2 bwd_ref_offset, uchar search_window_config,
17721 intel_sub_group_avc_ime_payload_t payload);
17722intel_sub_group_avc_ime_payload_t __ovld
17723intel_sub_group_avc_ime_set_max_motion_vector_count(
17724 uchar max_motion_vector_count, intel_sub_group_avc_ime_payload_t payload);
17725intel_sub_group_avc_ime_payload_t __ovld
17726intel_sub_group_avc_ime_set_unidirectional_mix_disable(
17727 intel_sub_group_avc_ime_payload_t payload);
17728intel_sub_group_avc_ime_payload_t __ovld
17729intel_sub_group_avc_ime_set_early_search_termination_threshold(
17730 uchar threshold, intel_sub_group_avc_ime_payload_t payload);
17731intel_sub_group_avc_ime_payload_t __ovld
17732intel_sub_group_avc_ime_set_weighted_sad(
17733 uint packed_sad_weights, intel_sub_group_avc_ime_payload_t payload);
17734
17735__attribute__((deprecated("If you use the latest Intel driver, please use "
17736 "intel_sub_group_avc_ime_ref_window_size instead",
17737 "intel_sub_group_avc_ime_ref_window_size")))
17738ushort2 __ovld
17739intel_sub_group_ime_ref_window_size(uchar search_window_config, char dual_ref);
17740ushort2 __ovld intel_sub_group_avc_ime_ref_window_size(
17741 uchar search_window_config, char dual_ref);
17742short2 __ovld intel_sub_group_avc_ime_adjust_ref_offset(
17743 short2 ref_offset, ushort2 src_coord, ushort2 ref_window_size,
17744 ushort2 image_size);
17745
17746#if defined(__opencl_c_images)
17747intel_sub_group_avc_ime_result_t __ovld
17748intel_sub_group_avc_ime_evaluate_with_single_reference(
17749 read_only image2d_t src_image, read_only image2d_t ref_image,
17750 sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload);
17751intel_sub_group_avc_ime_result_t __ovld
17752intel_sub_group_avc_ime_evaluate_with_dual_reference(
17753 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17754 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17755 intel_sub_group_avc_ime_payload_t payload);
17756intel_sub_group_avc_ime_result_single_reference_streamout_t __ovld
17757intel_sub_group_avc_ime_evaluate_with_single_reference_streamout(
17758 read_only image2d_t src_image, read_only image2d_t ref_image,
17759 sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload);
17760intel_sub_group_avc_ime_result_dual_reference_streamout_t __ovld
17761intel_sub_group_avc_ime_evaluate_with_dual_reference_streamout(
17762 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17763 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17764 intel_sub_group_avc_ime_payload_t payload);
17765intel_sub_group_avc_ime_result_t __ovld
17766intel_sub_group_avc_ime_evaluate_with_single_reference_streamin(
17767 read_only image2d_t src_image, read_only image2d_t ref_image,
17768 sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload,
17769 intel_sub_group_avc_ime_single_reference_streamin_t streamin_components);
17770intel_sub_group_avc_ime_result_t __ovld
17771intel_sub_group_avc_ime_evaluate_with_dual_reference_streamin(
17772 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17773 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17774 intel_sub_group_avc_ime_payload_t payload,
17775 intel_sub_group_avc_ime_dual_reference_streamin_t streamin_components);
17776intel_sub_group_avc_ime_result_single_reference_streamout_t __ovld
17777intel_sub_group_avc_ime_evaluate_with_single_reference_streaminout(
17778 read_only image2d_t src_image, read_only image2d_t ref_image,
17779 sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload,
17780 intel_sub_group_avc_ime_single_reference_streamin_t streamin_components);
17781intel_sub_group_avc_ime_result_dual_reference_streamout_t __ovld
17782intel_sub_group_avc_ime_evaluate_with_dual_reference_streaminout(
17783 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17784 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17785 intel_sub_group_avc_ime_payload_t payload,
17786 intel_sub_group_avc_ime_dual_reference_streamin_t streamin_components);
17787#endif
17788
17789intel_sub_group_avc_ime_single_reference_streamin_t __ovld
17790intel_sub_group_avc_ime_get_single_reference_streamin(
17791 intel_sub_group_avc_ime_result_single_reference_streamout_t result);
17792intel_sub_group_avc_ime_dual_reference_streamin_t __ovld
17793intel_sub_group_avc_ime_get_dual_reference_streamin(
17794 intel_sub_group_avc_ime_result_dual_reference_streamout_t result);
17795intel_sub_group_avc_ime_result_t __ovld
17796intel_sub_group_avc_ime_strip_single_reference_streamout(
17797 intel_sub_group_avc_ime_result_single_reference_streamout_t result);
17798intel_sub_group_avc_ime_result_t __ovld
17799intel_sub_group_avc_ime_strip_dual_reference_streamout(
17800 intel_sub_group_avc_ime_result_dual_reference_streamout_t result);
17801
17802uint __ovld intel_sub_group_avc_ime_get_streamout_major_shape_motion_vectors(
17803 intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17804 uchar major_shape);
17805ushort __ovld intel_sub_group_avc_ime_get_streamout_major_shape_distortions(
17806 intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17807 uchar major_shape);
17808uchar __ovld intel_sub_group_avc_ime_get_streamout_major_shape_reference_ids(
17809 intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17810 uchar major_shape);
17811uint __ovld intel_sub_group_avc_ime_get_streamout_major_shape_motion_vectors(
17812 intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17813 uchar major_shape, uchar direction);
17814ushort __ovld intel_sub_group_avc_ime_get_streamout_major_shape_distortions(
17815 intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17816 uchar major_shape, uchar direction);
17817uchar __ovld intel_sub_group_avc_ime_get_streamout_major_shape_reference_ids(
17818 intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17819 uchar major_shape, uchar direction);
17820
17821uchar __ovld intel_sub_group_avc_ime_get_border_reached(
17822 uchar image_select, intel_sub_group_avc_ime_result_t result);
17823uchar __ovld intel_sub_group_avc_ime_get_truncated_search_indication(
17824 intel_sub_group_avc_ime_result_t result);
17826intel_sub_group_avc_ime_get_unidirectional_early_search_termination(
17827 intel_sub_group_avc_ime_result_t result);
17828uint __ovld intel_sub_group_avc_ime_get_weighting_pattern_minimum_motion_vector(
17829 intel_sub_group_avc_ime_result_t result);
17830ushort __ovld intel_sub_group_avc_ime_get_weighting_pattern_minimum_distortion(
17831 intel_sub_group_avc_ime_result_t result);
17832
17833// REF built-in functions
17834intel_sub_group_avc_ref_payload_t __ovld
17835intel_sub_group_avc_fme_initialize(
17836 ushort2 src_coord, ulong motion_vectors, uchar major_shapes,
17837 uchar minor_shapes, uchar directions, uchar pixel_resolution,
17838 uchar sad_adjustment);
17839intel_sub_group_avc_ref_payload_t __ovld
17840intel_sub_group_avc_bme_initialize(
17841 ushort2 src_coord, ulong motion_vectors, uchar major_shapes,
17842 uchar minor_shapes, uchar directions, uchar pixel_resolution,
17843 uchar bidirectional_weight, uchar sad_adjustment);
17844
17845intel_sub_group_avc_ref_payload_t __ovld
17846intel_sub_group_avc_ref_set_bidirectional_mix_disable(
17847 intel_sub_group_avc_ref_payload_t payload);
17848intel_sub_group_avc_ref_payload_t __ovld
17849intel_sub_group_avc_ref_set_bilinear_filter_enable(
17850 intel_sub_group_avc_ref_payload_t payload);
17851
17852#if defined(__opencl_c_images)
17853intel_sub_group_avc_ref_result_t __ovld
17854intel_sub_group_avc_ref_evaluate_with_single_reference(
17855 read_only image2d_t src_image, read_only image2d_t ref_image,
17856 sampler_t vme_media_sampler, intel_sub_group_avc_ref_payload_t payload);
17857intel_sub_group_avc_ref_result_t __ovld
17858intel_sub_group_avc_ref_evaluate_with_dual_reference(
17859 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17860 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17861 intel_sub_group_avc_ref_payload_t payload);
17862intel_sub_group_avc_ref_result_t __ovld
17863intel_sub_group_avc_ref_evaluate_with_multi_reference(
17864 read_only image2d_t src_image, uint packed_reference_ids,
17865 sampler_t vme_media_sampler, intel_sub_group_avc_ref_payload_t payload);
17866intel_sub_group_avc_ref_result_t __ovld
17867intel_sub_group_avc_ref_evaluate_with_multi_reference(
17868 read_only image2d_t src_image, uint packed_reference_ids,
17869 uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
17870 intel_sub_group_avc_ref_payload_t payload);
17871#endif //defined(__opencl_c_images)
17872
17873// SIC built-in functions
17874intel_sub_group_avc_sic_payload_t __ovld
17875intel_sub_group_avc_sic_initialize(
17876 ushort2 src_coord);
17877intel_sub_group_avc_sic_payload_t __ovld
17878intel_sub_group_avc_sic_configure_skc(
17879 uint skip_block_partition_type, uint skip_motion_vector_mask,
17880 ulong motion_vectors, uchar bidirectional_weight, uchar skip_sad_adjustment,
17881 intel_sub_group_avc_sic_payload_t payload);
17882intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe(
17883 uchar luma_intra_partition_mask, uchar intra_neighbour_availability,
17884 uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel,
17885 uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels,
17886 uchar intra_sad_adjustment, intel_sub_group_avc_sic_payload_t payload);
17887intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe(
17888 uchar luma_intra_partition_mask, uchar intra_neighbour_availability,
17889 uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel,
17890 uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels,
17891 ushort left_edge_chroma_pixels, ushort upper_left_corner_chroma_pixel,
17892 ushort upper_edge_chroma_pixels, uchar intra_sad_adjustment,
17893 intel_sub_group_avc_sic_payload_t payload);
17895intel_sub_group_avc_sic_get_motion_vector_mask(
17896 uint skip_block_partition_type, uchar direction);
17897
17898intel_sub_group_avc_sic_payload_t __ovld
17899intel_sub_group_avc_sic_set_intra_luma_shape_penalty(
17900 uint packed_shape_cost, intel_sub_group_avc_sic_payload_t payload);
17901intel_sub_group_avc_sic_payload_t __ovld
17902intel_sub_group_avc_sic_set_intra_luma_mode_cost_function(
17903 uchar luma_mode_penalty, uint luma_packed_neighbor_modes,
17904 uint luma_packed_non_dc_penalty, intel_sub_group_avc_sic_payload_t payload);
17905intel_sub_group_avc_sic_payload_t __ovld
17906intel_sub_group_avc_sic_set_intra_chroma_mode_cost_function(
17907 uchar chroma_mode_penalty, intel_sub_group_avc_sic_payload_t payload);
17908
17909intel_sub_group_avc_sic_payload_t __ovld
17910intel_sub_group_avc_sic_set_skc_bilinear_filter_enable(
17911 intel_sub_group_avc_sic_payload_t payload);
17912intel_sub_group_avc_sic_payload_t __ovld
17913intel_sub_group_avc_sic_set_skc_forward_transform_enable(
17914 ulong packed_sad_coefficients, intel_sub_group_avc_sic_payload_t payload);
17915intel_sub_group_avc_sic_payload_t __ovld
17916intel_sub_group_avc_sic_set_block_based_raw_skip_sad(
17917 uchar block_based_skip_type,
17918 intel_sub_group_avc_sic_payload_t payload);
17919
17920#if defined(__opencl_c_images)
17921intel_sub_group_avc_sic_result_t __ovld
17922intel_sub_group_avc_sic_evaluate_ipe(
17923 read_only image2d_t src_image, sampler_t vme_media_sampler,
17924 intel_sub_group_avc_sic_payload_t payload);
17925intel_sub_group_avc_sic_result_t __ovld
17926intel_sub_group_avc_sic_evaluate_with_single_reference(
17927 read_only image2d_t src_image, read_only image2d_t ref_image,
17928 sampler_t vme_media_sampler, intel_sub_group_avc_sic_payload_t payload);
17929intel_sub_group_avc_sic_result_t __ovld
17930intel_sub_group_avc_sic_evaluate_with_dual_reference(
17931 read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17932 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17933 intel_sub_group_avc_sic_payload_t payload);
17934intel_sub_group_avc_sic_result_t __ovld
17935intel_sub_group_avc_sic_evaluate_with_multi_reference(
17936 read_only image2d_t src_image, uint packed_reference_ids,
17937 sampler_t vme_media_sampler, intel_sub_group_avc_sic_payload_t payload);
17938intel_sub_group_avc_sic_result_t __ovld
17939intel_sub_group_avc_sic_evaluate_with_multi_reference(
17940 read_only image2d_t src_image, uint packed_reference_ids,
17941 uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
17942 intel_sub_group_avc_sic_payload_t payload);
17943#endif //defined(__opencl_c_images)
17944
17945uchar __ovld intel_sub_group_avc_sic_get_ipe_luma_shape(
17946 intel_sub_group_avc_sic_result_t result);
17947ushort __ovld intel_sub_group_avc_sic_get_best_ipe_luma_distortion(
17948 intel_sub_group_avc_sic_result_t result);
17949ushort __ovld intel_sub_group_avc_sic_get_best_ipe_chroma_distortion(
17950 intel_sub_group_avc_sic_result_t result);
17951ulong __ovld intel_sub_group_avc_sic_get_packed_ipe_luma_modes(
17952 intel_sub_group_avc_sic_result_t result);
17953uchar __ovld intel_sub_group_avc_sic_get_ipe_chroma_mode(
17954 intel_sub_group_avc_sic_result_t result);
17955uint __ovld intel_sub_group_avc_sic_get_packed_skc_luma_count_threshold(
17956 intel_sub_group_avc_sic_result_t result);
17957ulong __ovld intel_sub_group_avc_sic_get_packed_skc_luma_sum_threshold(
17958 intel_sub_group_avc_sic_result_t result);
17959ushort __ovld intel_sub_group_avc_sic_get_inter_raw_sads(
17960 intel_sub_group_avc_sic_result_t result);
17961
17962// Wrappers
17963intel_sub_group_avc_ime_payload_t __ovld
17964intel_sub_group_avc_ime_set_inter_base_multi_reference_penalty(
17965 uchar reference_base_penalty, intel_sub_group_avc_ime_payload_t payload);
17966intel_sub_group_avc_ref_payload_t __ovld
17967intel_sub_group_avc_ref_set_inter_base_multi_reference_penalty(
17968 uchar reference_base_penalty, intel_sub_group_avc_ref_payload_t payload);
17969intel_sub_group_avc_sic_payload_t __ovld
17970intel_sub_group_avc_sic_set_inter_base_multi_reference_penalty(
17971 uchar reference_base_penalty, intel_sub_group_avc_sic_payload_t payload);
17972
17973intel_sub_group_avc_ime_payload_t __ovld
17974intel_sub_group_avc_ime_set_inter_shape_penalty(
17975 ulong packed_shape_cost, intel_sub_group_avc_ime_payload_t payload);
17976intel_sub_group_avc_ref_payload_t __ovld
17977intel_sub_group_avc_ref_set_inter_shape_penalty(
17978 ulong packed_shape_cost, intel_sub_group_avc_ref_payload_t payload);
17979intel_sub_group_avc_sic_payload_t __ovld
17980intel_sub_group_avc_sic_set_inter_shape_penalty(
17981 ulong packed_shape_cost, intel_sub_group_avc_sic_payload_t payload);
17982
17983intel_sub_group_avc_ime_payload_t __ovld
17984intel_sub_group_avc_ime_set_inter_direction_penalty(
17985 uchar direction_cost, intel_sub_group_avc_ime_payload_t payload);
17986intel_sub_group_avc_ref_payload_t __ovld
17987intel_sub_group_avc_ref_set_inter_direction_penalty(
17988 uchar direction_cost, intel_sub_group_avc_ref_payload_t payload);
17989intel_sub_group_avc_sic_payload_t __ovld
17990intel_sub_group_avc_sic_set_inter_direction_penalty(
17991 uchar direction_cost, intel_sub_group_avc_sic_payload_t payload);
17992
17993intel_sub_group_avc_ime_payload_t __ovld
17994intel_sub_group_avc_ime_set_motion_vector_cost_function(
17995 ulong packed_cost_center_delta, uint2 packed_cost_table,
17996 uchar cost_precision, intel_sub_group_avc_ime_payload_t payload);
17997intel_sub_group_avc_ref_payload_t __ovld
17998intel_sub_group_avc_ref_set_motion_vector_cost_function(
17999 ulong packed_cost_center_delta, uint2 packed_cost_table,
18000 uchar cost_precision, intel_sub_group_avc_ref_payload_t payload);
18001intel_sub_group_avc_sic_payload_t __ovld
18002intel_sub_group_avc_sic_set_motion_vector_cost_function(
18003 ulong packed_cost_center_delta, uint2 packed_cost_table,
18004 uchar cost_precision, intel_sub_group_avc_sic_payload_t payload);
18005
18006intel_sub_group_avc_ime_payload_t __ovld
18007intel_sub_group_avc_ime_set_source_interlaced_field_polarity(
18008 uchar src_field_polarity, intel_sub_group_avc_ime_payload_t payload);
18009intel_sub_group_avc_ref_payload_t __ovld
18010intel_sub_group_avc_ref_set_source_interlaced_field_polarity(
18011 uchar src_field_polarity, intel_sub_group_avc_ref_payload_t payload);
18012intel_sub_group_avc_sic_payload_t __ovld
18013intel_sub_group_avc_sic_set_source_interlaced_field_polarity(
18014 uchar src_field_polarity, intel_sub_group_avc_sic_payload_t payload);
18015
18016intel_sub_group_avc_ime_payload_t __ovld
18017intel_sub_group_avc_ime_set_single_reference_interlaced_field_polarity(
18018 uchar ref_field_polarity, intel_sub_group_avc_ime_payload_t payload);
18019intel_sub_group_avc_ref_payload_t __ovld
18020intel_sub_group_avc_ref_set_single_reference_interlaced_field_polarity(
18021 uchar ref_field_polarity, intel_sub_group_avc_ref_payload_t payload);
18022intel_sub_group_avc_sic_payload_t __ovld
18023intel_sub_group_avc_sic_set_single_reference_interlaced_field_polarity(
18024 uchar ref_field_polarity, intel_sub_group_avc_sic_payload_t payload);
18025intel_sub_group_avc_ime_payload_t __ovld
18026intel_sub_group_avc_ime_set_dual_reference_interlaced_field_polarities(
18027 uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18028 intel_sub_group_avc_ime_payload_t payload);
18029intel_sub_group_avc_ref_payload_t __ovld
18030intel_sub_group_avc_ref_set_dual_reference_interlaced_field_polarities(
18031 uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18032 intel_sub_group_avc_ref_payload_t payload);
18033intel_sub_group_avc_sic_payload_t __ovld
18034intel_sub_group_avc_sic_set_dual_reference_interlaced_field_polarities(
18035 uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18036 intel_sub_group_avc_sic_payload_t payload);
18037
18038intel_sub_group_avc_ime_payload_t __ovld
18039intel_sub_group_avc_ime_set_ac_only_haar(
18040 intel_sub_group_avc_ime_payload_t payload);
18041intel_sub_group_avc_ref_payload_t __ovld
18042intel_sub_group_avc_ref_set_ac_only_haar(
18043 intel_sub_group_avc_ref_payload_t payload);
18044intel_sub_group_avc_sic_payload_t __ovld
18045intel_sub_group_avc_sic_set_ac_only_haar(
18046 intel_sub_group_avc_sic_payload_t payload);
18047
18048ulong __ovld intel_sub_group_avc_ime_get_motion_vectors(
18049 intel_sub_group_avc_ime_result_t result);
18050ulong __ovld intel_sub_group_avc_ref_get_motion_vectors(
18051 intel_sub_group_avc_ref_result_t result);
18052
18053ushort __ovld intel_sub_group_avc_ime_get_inter_distortions(
18054 intel_sub_group_avc_ime_result_t result);
18055ushort __ovld intel_sub_group_avc_ref_get_inter_distortions(
18056 intel_sub_group_avc_ref_result_t result);
18057ushort __ovld intel_sub_group_avc_sic_get_inter_distortions(
18058 intel_sub_group_avc_sic_result_t result);
18059
18060ushort __ovld intel_sub_group_avc_ime_get_best_inter_distortion(
18061 intel_sub_group_avc_ime_result_t result);
18062ushort __ovld intel_sub_group_avc_ref_get_best_inter_distortion(
18063 intel_sub_group_avc_ref_result_t result);
18064
18065uchar __ovld intel_sub_group_avc_ime_get_inter_major_shape(
18066 intel_sub_group_avc_ime_result_t result);
18067uchar __ovld intel_sub_group_avc_ref_get_inter_major_shape(
18068 intel_sub_group_avc_ref_result_t result);
18069uchar __ovld intel_sub_group_avc_ime_get_inter_minor_shapes(
18070 intel_sub_group_avc_ime_result_t result);
18071uchar __ovld intel_sub_group_avc_ref_get_inter_minor_shapes(
18072 intel_sub_group_avc_ref_result_t result);
18073
18074uchar __ovld intel_sub_group_avc_ime_get_inter_directions(
18075 intel_sub_group_avc_ime_result_t result);
18076uchar __ovld intel_sub_group_avc_ref_get_inter_directions(
18077 intel_sub_group_avc_ref_result_t result);
18078
18079uchar __ovld intel_sub_group_avc_ime_get_inter_motion_vector_count(
18080 intel_sub_group_avc_ime_result_t result);
18081uchar __ovld intel_sub_group_avc_ref_get_inter_motion_vector_count(
18082 intel_sub_group_avc_ref_result_t result);
18083
18084uint __ovld intel_sub_group_avc_ime_get_inter_reference_ids(
18085 intel_sub_group_avc_ime_result_t result);
18086uint __ovld intel_sub_group_avc_ref_get_inter_reference_ids(
18087 intel_sub_group_avc_ref_result_t result);
18088
18090intel_sub_group_avc_ime_get_inter_reference_interlaced_field_polarities(
18091 uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
18092 intel_sub_group_avc_ime_result_t result);
18094intel_sub_group_avc_ref_get_inter_reference_interlaced_field_polarities(
18095 uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
18096 intel_sub_group_avc_ref_result_t result);
18097
18098// Type conversion functions
18099intel_sub_group_avc_mce_payload_t __ovld
18100intel_sub_group_avc_ime_convert_to_mce_payload(
18101 intel_sub_group_avc_ime_payload_t payload);
18102intel_sub_group_avc_ime_payload_t __ovld
18103intel_sub_group_avc_mce_convert_to_ime_payload(
18104 intel_sub_group_avc_mce_payload_t payload);
18105intel_sub_group_avc_mce_payload_t __ovld
18106intel_sub_group_avc_ref_convert_to_mce_payload(
18107 intel_sub_group_avc_ref_payload_t payload);
18108intel_sub_group_avc_ref_payload_t __ovld
18109intel_sub_group_avc_mce_convert_to_ref_payload(
18110 intel_sub_group_avc_mce_payload_t payload);
18111intel_sub_group_avc_mce_payload_t __ovld
18112intel_sub_group_avc_sic_convert_to_mce_payload(
18113 intel_sub_group_avc_sic_payload_t payload);
18114intel_sub_group_avc_sic_payload_t __ovld
18115intel_sub_group_avc_mce_convert_to_sic_payload(
18116 intel_sub_group_avc_mce_payload_t payload);
18117
18118intel_sub_group_avc_mce_result_t __ovld
18119intel_sub_group_avc_ime_convert_to_mce_result(
18120 intel_sub_group_avc_ime_result_t result);
18121intel_sub_group_avc_ime_result_t __ovld
18122intel_sub_group_avc_mce_convert_to_ime_result(
18123 intel_sub_group_avc_mce_result_t result);
18124intel_sub_group_avc_mce_result_t __ovld
18125intel_sub_group_avc_ref_convert_to_mce_result(
18126 intel_sub_group_avc_ref_result_t result);
18127intel_sub_group_avc_ref_result_t __ovld
18128intel_sub_group_avc_mce_convert_to_ref_result(
18129 intel_sub_group_avc_mce_result_t result);
18130intel_sub_group_avc_mce_result_t __ovld
18131intel_sub_group_avc_sic_convert_to_mce_result(
18132 intel_sub_group_avc_sic_result_t result);
18133intel_sub_group_avc_sic_result_t __ovld
18134intel_sub_group_avc_mce_convert_to_sic_result(
18135 intel_sub_group_avc_mce_result_t result);
18136#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end
18137#endif // cl_intel_device_side_avc_motion_estimation
18138
18139#ifdef cl_amd_media_ops
18140uint __ovld amd_bitalign(uint, uint, uint);
18141uint2 __ovld amd_bitalign(uint2, uint2, uint2);
18142uint3 __ovld amd_bitalign(uint3, uint3, uint3);
18143uint4 __ovld amd_bitalign(uint4, uint4, uint4);
18144uint8 __ovld amd_bitalign(uint8, uint8, uint8);
18145uint16 __ovld amd_bitalign(uint16, uint16, uint16);
18146
18147uint __ovld amd_bytealign(uint, uint, uint);
18148uint2 __ovld amd_bytealign(uint2, uint2, uint2);
18149uint3 __ovld amd_bytealign(uint3, uint3, uint3);
18150uint4 __ovld amd_bytealign(uint4, uint4, uint4);
18151uint8 __ovld amd_bytealign(uint8, uint8, uint8);
18152uint16 __ovld amd_bytealign(uint16, uint16, uint16);
18153
18154uint __ovld amd_lerp(uint, uint, uint);
18155uint2 __ovld amd_lerp(uint2, uint2, uint2);
18156uint3 __ovld amd_lerp(uint3, uint3, uint3);
18157uint4 __ovld amd_lerp(uint4, uint4, uint4);
18158uint8 __ovld amd_lerp(uint8, uint8, uint8);
18159uint16 __ovld amd_lerp(uint16, uint16, uint16);
18160
18161uint __ovld amd_pack(float4 v);
18162
18163uint __ovld amd_sad4(uint4, uint4, uint);
18164
18165uint __ovld amd_sadhi(uint, uint, uint);
18166uint2 __ovld amd_sadhi(uint2, uint2, uint2);
18167uint3 __ovld amd_sadhi(uint3, uint3, uint3);
18168uint4 __ovld amd_sadhi(uint4, uint4, uint4);
18169uint8 __ovld amd_sadhi(uint8, uint8, uint8);
18170uint16 __ovld amd_sadhi(uint16, uint16, uint16);
18171
18172uint __ovld amd_sad(uint, uint, uint);
18173uint2 __ovld amd_sad(uint2, uint2, uint2);
18174uint3 __ovld amd_sad(uint3, uint3, uint3);
18175uint4 __ovld amd_sad(uint4, uint4, uint4);
18176uint8 __ovld amd_sad(uint8, uint8, uint8);
18177uint16 __ovld amd_sad(uint16, uint16, uint16);
18178
18179float __ovld amd_unpack0(uint);
18180float2 __ovld amd_unpack0(uint2);
18181float3 __ovld amd_unpack0(uint3);
18182float4 __ovld amd_unpack0(uint4);
18183float8 __ovld amd_unpack0(uint8);
18184float16 __ovld amd_unpack0(uint16);
18185
18186float __ovld amd_unpack1(uint);
18187float2 __ovld amd_unpack1(uint2);
18188float3 __ovld amd_unpack1(uint3);
18189float4 __ovld amd_unpack1(uint4);
18190float8 __ovld amd_unpack1(uint8);
18191float16 __ovld amd_unpack1(uint16);
18192
18193float __ovld amd_unpack2(uint);
18194float2 __ovld amd_unpack2(uint2);
18195float3 __ovld amd_unpack2(uint3);
18196float4 __ovld amd_unpack2(uint4);
18197float8 __ovld amd_unpack2(uint8);
18198float16 __ovld amd_unpack2(uint16);
18199
18200float __ovld amd_unpack3(uint);
18201float2 __ovld amd_unpack3(uint2);
18202float3 __ovld amd_unpack3(uint3);
18203float4 __ovld amd_unpack3(uint4);
18204float8 __ovld amd_unpack3(uint8);
18205float16 __ovld amd_unpack3(uint16);
18206#endif // cl_amd_media_ops
18207
18208#ifdef cl_amd_media_ops2
18209int __ovld amd_bfe(int src0, uint src1, uint src2);
18210int2 __ovld amd_bfe(int2 src0, uint2 src1, uint2 src2);
18211int3 __ovld amd_bfe(int3 src0, uint3 src1, uint3 src2);
18212int4 __ovld amd_bfe(int4 src0, uint4 src1, uint4 src2);
18213int8 __ovld amd_bfe(int8 src0, uint8 src1, uint8 src2);
18214int16 __ovld amd_bfe(int16 src0, uint16 src1, uint16 src2);
18215
18216uint __ovld amd_bfe(uint src0, uint src1, uint src2);
18217uint2 __ovld amd_bfe(uint2 src0, uint2 src1, uint2 src2);
18218uint3 __ovld amd_bfe(uint3 src0, uint3 src1, uint3 src2);
18219uint4 __ovld amd_bfe(uint4 src0, uint4 src1, uint4 src2);
18220uint8 __ovld amd_bfe(uint8 src0, uint8 src1, uint8 src2);
18221uint16 __ovld amd_bfe(uint16 src0, uint16 src1, uint16 src2);
18222
18223uint __ovld amd_bfm(uint src0, uint src1);
18224uint2 __ovld amd_bfm(uint2 src0, uint2 src1);
18225uint3 __ovld amd_bfm(uint3 src0, uint3 src1);
18226uint4 __ovld amd_bfm(uint4 src0, uint4 src1);
18227uint8 __ovld amd_bfm(uint8 src0, uint8 src1);
18228uint16 __ovld amd_bfm(uint16 src0, uint16 src1);
18229
18230float __ovld amd_max3(float src0, float src1, float src2);
18231float2 __ovld amd_max3(float2 src0, float2 src1, float2 src2);
18232float3 __ovld amd_max3(float3 src0, float3 src1, float3 src2);
18233float4 __ovld amd_max3(float4 src0, float4 src1, float4 src2);
18234float8 __ovld amd_max3(float8 src0, float8 src1, float8 src2);
18235float16 __ovld amd_max3(float16 src0, float16 src1, float16 src2);
18236
18237int __ovld amd_max3(int src0, int src1, int src2);
18238int2 __ovld amd_max3(int2 src0, int2 src1, int2 src2);
18239int3 __ovld amd_max3(int3 src0, int3 src1, int3 src2);
18240int4 __ovld amd_max3(int4 src0, int4 src1, int4 src2);
18241int8 __ovld amd_max3(int8 src0, int8 src1, int8 src2);
18242int16 __ovld amd_max3(int16 src0, int16 src1, int16 src2);
18243
18244uint __ovld amd_max3(uint src0, uint src1, uint src2);
18245uint2 __ovld amd_max3(uint2 src0, uint2 src1, uint2 src2);
18246uint3 __ovld amd_max3(uint3 src0, uint3 src1, uint3 src2);
18247uint4 __ovld amd_max3(uint4 src0, uint4 src1, uint4 src2);
18248uint8 __ovld amd_max3(uint8 src0, uint8 src1, uint8 src2);
18249uint16 __ovld amd_max3(uint16 src0, uint16 src1, uint16 src2);
18250
18251float __ovld amd_median3(float src0, float src1, float src2);
18252float2 __ovld amd_median3(float2 src0, float2 src1, float2 src2);
18253float3 __ovld amd_median3(float3 src0, float3 src1, float3 src2);
18254float4 __ovld amd_median3(float4 src0, float4 src1, float4 src2);
18255float8 __ovld amd_median3(float8 src0, float8 src1, float8 src2);
18256float16 __ovld amd_median3(float16 src0, float16 src1, float16 src2);
18257
18258int __ovld amd_median3(int src0, int src1, int src2);
18259int2 __ovld amd_median3(int2 src0, int2 src1, int2 src2);
18260int3 __ovld amd_median3(int3 src0, int3 src1, int3 src2);
18261int4 __ovld amd_median3(int4 src0, int4 src1, int4 src2);
18262int8 __ovld amd_median3(int8 src0, int8 src1, int8 src2);
18263int16 __ovld amd_median3(int16 src0, int16 src1, int16 src2);
18264
18265uint __ovld amd_median3(uint src0, uint src1, uint src2);
18266uint2 __ovld amd_median3(uint2 src0, uint2 src1, uint2 src2);
18267uint3 __ovld amd_median3(uint3 src0, uint3 src1, uint3 src2);
18268uint4 __ovld amd_median3(uint4 src0, uint4 src1, uint4 src2);
18269uint8 __ovld amd_median3(uint8 src0, uint8 src1, uint8 src2);
18270uint16 __ovld amd_median3(uint16 src0, uint16 src1, uint16 src2);
18271
18272float __ovld amd_min3(float src0, float src1, float src);
18273float2 __ovld amd_min3(float2 src0, float2 src1, float2 src);
18274float3 __ovld amd_min3(float3 src0, float3 src1, float3 src);
18275float4 __ovld amd_min3(float4 src0, float4 src1, float4 src);
18276float8 __ovld amd_min3(float8 src0, float8 src1, float8 src);
18277float16 __ovld amd_min3(float16 src0, float16 src1, float16 src);
18278
18279int __ovld amd_min3(int src0, int src1, int src2);
18280int2 __ovld amd_min3(int2 src0, int2 src1, int2 src2);
18281int3 __ovld amd_min3(int3 src0, int3 src1, int3 src2);
18282int4 __ovld amd_min3(int4 src0, int4 src1, int4 src2);
18283int8 __ovld amd_min3(int8 src0, int8 src1, int8 src2);
18284int16 __ovld amd_min3(int16 src0, int16 src1, int16 src2);
18285
18286uint __ovld amd_min3(uint src0, uint src1, uint src2);
18287uint2 __ovld amd_min3(uint2 src0, uint2 src1, uint2 src2);
18288uint3 __ovld amd_min3(uint3 src0, uint3 src1, uint3 src2);
18289uint4 __ovld amd_min3(uint4 src0, uint4 src1, uint4 src2);
18290uint8 __ovld amd_min3(uint8 src0, uint8 src1, uint8 src2);
18291uint16 __ovld amd_min3(uint16 src0, uint16 src1, uint16 src2);
18292
18293ulong __ovld amd_mqsad(ulong src0, uint src1, ulong src2);
18294ulong2 __ovld amd_mqsad(ulong2 src0, uint2 src1, ulong2 src2);
18295ulong3 __ovld amd_mqsad(ulong3 src0, uint3 src1, ulong3 src2);
18296ulong4 __ovld amd_mqsad(ulong4 src0, uint4 src1, ulong4 src2);
18297ulong8 __ovld amd_mqsad(ulong8 src0, uint8 src1, ulong8 src2);
18298ulong16 __ovld amd_mqsad(ulong16 src0, uint16 src1, ulong16 src2);
18299
18300ulong __ovld amd_qsad(ulong src0, uint src1, ulong src2);
18301ulong2 __ovld amd_qsad(ulong2 src0, uint2 src1, ulong2 src2);
18302ulong3 __ovld amd_qsad(ulong3 src0, uint3 src1, ulong3 src2);
18303ulong4 __ovld amd_qsad(ulong4 src0, uint4 src1, ulong4 src2);
18304ulong8 __ovld amd_qsad(ulong8 src0, uint8 src1, ulong8 src2);
18305ulong16 __ovld amd_qsad(ulong16 src0, uint16 src1, ulong16 src2);
18306
18307uint __ovld amd_msad(uint src0, uint src1, uint src2);
18308uint2 __ovld amd_msad(uint2 src0, uint2 src1, uint2 src2);
18309uint3 __ovld amd_msad(uint3 src0, uint3 src1, uint3 src2);
18310uint4 __ovld amd_msad(uint4 src0, uint4 src1, uint4 src2);
18311uint8 __ovld amd_msad(uint8 src0, uint8 src1, uint8 src2);
18312uint16 __ovld amd_msad(uint16 src0, uint16 src1, uint16 src2);
18313
18314uint __ovld amd_sadd(uint src0, uint src1, uint src2);
18315uint2 __ovld amd_sadd(uint2 src0, uint2 src1, uint2 src2);
18316uint3 __ovld amd_sadd(uint3 src0, uint3 src1, uint3 src2);
18317uint4 __ovld amd_sadd(uint4 src0, uint4 src1, uint4 src2);
18318uint8 __ovld amd_sadd(uint8 src0, uint8 src1, uint8 src2);
18319uint16 __ovld amd_sadd(uint16 src0, uint16 src1, uint16 src2);
18320
18321uint __ovld amd_sadw(uint src0, uint src1, uint src2);
18322uint2 __ovld amd_sadw(uint2 src0, uint2 src1, uint2 src2);
18323uint3 __ovld amd_sadw(uint3 src0, uint3 src1, uint3 src2);
18324uint4 __ovld amd_sadw(uint4 src0, uint4 src1, uint4 src2);
18325uint8 __ovld amd_sadw(uint8 src0, uint8 src1, uint8 src2);
18326uint16 __ovld amd_sadw(uint16 src0, uint16 src1, uint16 src2);
18327#endif // cl_amd_media_ops2
18328
18329#if defined(cl_arm_integer_dot_product_int8)
18330uint __ovld arm_dot(uchar4, uchar4);
18331int __ovld arm_dot(char4, char4);
18332#endif // defined(cl_arm_integer_dot_product_int8)
18333
18334#if defined(cl_arm_integer_dot_product_accumulate_int8)
18335uint __ovld arm_dot_acc(uchar4, uchar4, uint);
18336int __ovld arm_dot_acc(char4, char4, int);
18337#endif // defined(cl_arm_integer_dot_product_accumulate_int8)
18338
18339#if defined(cl_arm_integer_dot_product_accumulate_int16)
18340uint __ovld arm_dot_acc(ushort2, ushort2, uint);
18341int __ovld arm_dot_acc(short2, short2, int);
18342#endif // defined(cl_arm_integer_dot_product_accumulate_int16)
18343
18344#if defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
18345uint __ovld arm_dot_acc_sat(uchar4, uchar4, uint);
18346int __ovld arm_dot_acc_sat(char4, char4, int);
18347#endif // defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
18348
18349// Disable any extensions we may have enabled previously.
18350#pragma OPENCL EXTENSION all : disable
18351
18352#undef __opencl_c_named_address_space_builtins
18353
18354#undef __cnfn
18355#undef __ovld
18356#endif //_OPENCL_H_
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
__PTRDIFF_TYPE__ ptrdiff_t
do v
Definition: arm_acle.h:83
__INTPTR_TYPE__ intptr_t
A signed integer type with the property that any valid pointer to void can be converted to this type,...
memory_order
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
int clk_profiling_info
uint cl_mem_fence_flags
unsigned char uchar
An unsigned 8-bit integer.
unsigned long ulong
An unsigned 64-bit integer.
unsigned int uint
An unsigned 32-bit integer.
memory_scope
unsigned short ushort
An unsigned 16-bit integer.
int4 __ovld __cnfn convert_int4_rte(char4)
void __ovld vstore16(char16, size_t, __global char *)
uint8 __ovld __cnfn convert_uint8_rte(char8)
long __ovld __cnfn convert_long_rtp(char)
long2 __ovld __cnfn convert_long2_sat_rtp(char2)
char2 __ovld __cnfn convert_char2_rtp(char2)
void __ovld vstorea_half2_rte(float2, size_t, __global half *)
short8 __ovld __cnfn convert_short8_sat_rte(char8)
uchar8 __ovld __cnfn convert_uchar8_rtp(char8)
ulong16 __ovld __cnfn convert_ulong16_sat(char16)
uchar __ovld __cnfn convert_uchar(char)
ulong8 __ovld __cnfn convert_ulong8_rte(char8)
float __ovld __cnfn half_tan(float)
Compute tangent.
void __ovld vstore2(char2, size_t, __global char *)
int16 __ovld __cnfn convert_int16_sat_rtn(char16)
int3 __ovld __cnfn convert_int3_rtn(char3)
float __ovld __cnfn nan(uint)
Returns a quiet NaN.
void __ovld vstorea_half4(float4, size_t, __global half *)
int __ovld __cnfn isequal(float, float)
intn isequal (floatn x, floatn y) Returns the component-wise compare of x == y.
short4 __ovld __cnfn convert_short4_rtp(char4)
int __ovld atomic_or(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
ulong2 __ovld __cnfn convert_ulong2_rtn(char2)
void __ovld vstore_half4(float4, size_t, __global half *)
ushort8 __ovld __cnfn convert_ushort8_rtn(char8)
uint16 __ovld __cnfn convert_uint16_sat_rtp(char16)
char __ovld __cnfn mad_hi(char, char, char)
Returns mul_hi(a, b) + c.
int3 __ovld __cnfn convert_int3_rtp(char3)
void __ovld vstorea_half2_rtz(float2, size_t, __global half *)
char3 __ovld __cnfn convert_char3_sat(char3)
char4 __ovld __cnfn convert_char4_sat(char4)
long __ovld __cnfn convert_long_rtz(char)
ushort8 __ovld __cnfn convert_ushort8_sat_rtn(char8)
float __ovld __cnfn native_tan(float)
Compute tangent over an implementation-defined range.
uint __ovld __cnfn convert_uint_sat_rtn(char)
uint16 __ovld __cnfn convert_uint16_sat_rtn(char16)
uchar8 __ovld __cnfn convert_uchar8(char8)
char __ovld __cnfn sub_sat(char, char)
Returns x - y and saturates the result.
float8 __ovld __purefn vload_half8(size_t, const __constant half *)
uchar2 __ovld __cnfn convert_uchar2_sat(char2)
void __ovld vstore_half8_rtz(float8, size_t, __global half *)
int3 __ovld __cnfn convert_int3(char3)
short __ovld __cnfn convert_short_sat_rtn(char)
uchar2 __ovld __cnfn convert_uchar2_rte(char2)
float __ovld fract(float, __global float *)
Returns fmin(x - floor (x), 0x1.fffffep-1f ).
uchar16 __ovld __cnfn convert_uchar16_sat_rtn(char16)
float __ovld __cnfn pown(float, int)
Compute x to the power y, where y is an integer.
float __ovld __cnfn dot(float, float)
Compute dot product.
ulong4 __ovld __cnfn convert_ulong4_rtp(char4)
ushort3 __ovld __cnfn convert_ushort3_rtz(char3)
void __ovld vstorea_half16_rtz(float16, size_t, __global half *)
int16 __ovld __cnfn convert_int16_sat(char16)
int __ovld __cnfn get_image_width(read_only image1d_t)
Return the image width in pixels.
float __ovld __cnfn native_sin(float)
Compute sine over an implementation-defined range.
char4 __ovld __cnfn convert_char4_rte(char4)
int __ovld atomic_max(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
int2 __ovld __cnfn convert_int2_sat_rtz(char2)
char __ovld __cnfn clz(char)
Returns the number of leading 0-bits in x, starting at the most significant bit position.
float __ovld __cnfn convert_float_rte(char)
ulong __ovld __cnfn convert_ulong_rtz(char)
float2 __ovld __cnfn convert_float2_rtp(char2)
short4 __ovld __cnfn convert_short4_sat_rtn(char4)
short2 __ovld __cnfn convert_short2_rtz(char2)
char8 __ovld __cnfn convert_char8_sat_rte(char8)
ushort8 __ovld __cnfn convert_ushort8_sat_rtp(char8)
void __ovld write_imagei(write_only image2d_t, int2, int4)
void __ovld vstorea_half3_rtn(float3, size_t, __global half *)
void __ovld vstore_half2_rte(float2, size_t, __global half *)
int3 __ovld __cnfn convert_int3_rtz(char3)
ushort8 __ovld __cnfn convert_ushort8_sat_rtz(char8)
char8 __ovld __cnfn convert_char8_sat_rtn(char8)
int2 __ovld __cnfn convert_int2_sat(char2)
size_t __ovld __cnfn get_global_offset(uint)
get_global_offset returns the offset values specified in global_work_offset argument to clEnqueueNDRa...
float __ovld __cnfn fast_length(float)
Returns the length of vector p computed as: half_sqrt(p.x2 + p.y2 + ...)
ushort3 __ovld __cnfn convert_ushort3_rtn(char3)
float4 __ovld __cnfn convert_float4(char4)
int __ovld __cnfn isnotequal(float, float)
Returns the component-wise compare of x != y.
char __ovld __cnfn add_sat(char, char)
Returns x + y and saturates the result.
ulong8 __ovld __cnfn convert_ulong8_rtp(char8)
uint3 __ovld __cnfn convert_uint3_rtn(char3)
ushort3 __ovld __cnfn convert_ushort3_sat_rtn(char3)
long2 __ovld __cnfn convert_long2_sat(char2)
ushort3 __ovld __cnfn convert_ushort3_rte(char3)
ulong16 __ovld __cnfn convert_ulong16_sat_rtp(char16)
size_t __ovld __cnfn get_local_id(uint)
Returns the unique local work-item ID i.e.
float __ovld __cnfn native_log(float)
Compute natural logarithm over an implementationdefined range.
char8 __ovld __cnfn convert_char8(char8)
char __ovld __cnfn convert_char_sat(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtn(char3)
ushort __ovld __cnfn convert_ushort_rtn(char)
float __ovld __cnfn native_recip(float)
Compute reciprocal over an implementation-defined range.
uint4 __ovld __cnfn convert_uint4_rtz(char4)
float16 __ovld __cnfn convert_float16_rtn(char16)
short3 __ovld __cnfn convert_short3_rtp(char3)
int __ovld __cnfn convert_int_sat_rtz(char)
float __ovld __cnfn asinpi(float)
Compute asin (x) / PI.
int16 __ovld __cnfn convert_int16(char16)
uint __ovld __cnfn convert_uint_rtz(char)
int __ovld atomic_xchg(volatile __global int *, int)
Swaps the old value stored at location p with new value given by val.
ushort8 __ovld __cnfn convert_ushort8_rte(char8)
long3 __ovld __cnfn convert_long3_sat_rtz(char3)
short16 __ovld __cnfn convert_short16_sat_rte(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtn(char8)
void __ovld vstore_half_rte(float, size_t, __global half *)
void __ovld vstorea_half3_rtp(float3, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3_sat(char3)
int8 __ovld __cnfn convert_int8_sat(char8)
float3 __ovld __cnfn convert_float3_rtp(char3)
int16 __ovld __cnfn convert_int16_rtp(char16)
ulong4 __ovld __cnfn convert_ulong4_sat_rtn(char4)
float __ovld __cnfn half_recip(float)
Compute reciprocal.
uchar2 __ovld __cnfn convert_uchar2_sat_rtp(char2)
ulong2 __ovld __cnfn convert_ulong2_sat_rtz(char2)
int4 __ovld __cnfn convert_int4_sat_rtz(char4)
void __ovld vstore_half2(float2, size_t, __global half *)
The floatn value given by data is converted to a halfn value using the appropriate rounding mode.
ushort8 __ovld __cnfn convert_ushort8_sat(char8)
void __ovld vstore_half16_rtz(float16, size_t, __global half *)
uint3 __ovld __cnfn convert_uint3_sat(char3)
void __ovld vstore_half2_rtn(float2, size_t, __global half *)
ulong4 __ovld __cnfn convert_ulong4_sat(char4)
int16 __ovld __cnfn convert_int16_sat_rtp(char16)
char16 __ovld __cnfn convert_char16_sat_rtz(char16)
uint __ovld __cnfn convert_uint_sat(char)
ushort4 __ovld __cnfn convert_ushort4_sat_rtn(char4)
float3 __ovld __cnfn convert_float3_rtn(char3)
long16 __ovld __cnfn convert_long16(char16)
short16 __ovld __cnfn convert_short16_rtn(char16)
float4 __ovld __purefn vload_half4(size_t, const __constant half *)
short2 __ovld __cnfn convert_short2_rtp(char2)
uchar8 __ovld __cnfn convert_uchar8_rtz(char8)
float __ovld __cnfn half_powr(float, float)
Compute x to the power y, where x is >= 0.
int __ovld __cnfn convert_int_rtz(char)
char16 __ovld __cnfn convert_char16_rtz(char16)
ushort16 __ovld __cnfn convert_ushort16_rte(char16)
int2 __ovld __cnfn convert_int2_sat_rtp(char2)
float __ovld __cnfn atanpi(float)
Compute atan (x) / PI.
char __ovld __cnfn convert_char_sat_rtn(char)
short2 __ovld __cnfn convert_short2(char2)
short2 __ovld __cnfn convert_short2_sat_rtp(char2)
int __ovld __cnfn convert_int_rtn(char)
ushort __ovld __cnfn convert_ushort_sat_rtz(char)
long4 __ovld __cnfn convert_long4(char4)
short16 __ovld __cnfn convert_short16_sat(char16)
uchar3 __ovld __cnfn convert_uchar3_rtn(char3)
short8 __ovld __cnfn convert_short8(char8)
ulong2 __ovld __cnfn convert_ulong2_sat(char2)
ulong3 __ovld __cnfn convert_ulong3_sat_rte(char3)
short4 __ovld __cnfn convert_short4_sat_rte(char4)
ulong8 __ovld __cnfn convert_ulong8_sat(char8)
void __ovld vstorea_half4_rtz(float4, size_t, __global half *)
char2 __ovld __cnfn convert_char2_sat_rtp(char2)
uint __ovld __cnfn convert_uint_sat_rte(char)
uint8 __ovld __cnfn convert_uint8_sat_rte(char8)
int16 __ovld __cnfn convert_int16_rte(char16)
char __ovld __cnfn ctz(char)
Returns the count of trailing 0-bits in x.
char16 __ovld __cnfn convert_char16_sat_rtn(char16)
ulong __ovld __cnfn convert_ulong_sat_rte(char)
char __ovld __cnfn hadd(char, char)
Returns (x + y) >> 1.
float __ovld __cnfn convert_float_rtp(char)
ulong2 __ovld __cnfn convert_ulong2_sat_rtp(char2)
uint3 __ovld __cnfn convert_uint3_rtp(char3)
float16 __ovld __cnfn convert_float16_rtp(char16)
float2 __ovld __purefn vload_half2(size_t, const __constant half *)
Read sizeof (halfn) bytes of data from address (p + (offset * n)).
short4 __ovld __cnfn convert_short4_sat_rtz(char4)
int3 __ovld __cnfn convert_int3_sat_rtz(char3)
ushort3 __ovld __cnfn convert_ushort3_sat_rte(char3)
ulong __ovld __cnfn convert_ulong_sat(char)
long3 __ovld __cnfn convert_long3_sat(char3)
ulong4 __ovld __cnfn convert_ulong4_sat_rtz(char4)
long8 __ovld __cnfn convert_long8_sat_rte(char8)
int4 __ovld __cnfn convert_int4(char4)
ushort8 __ovld __cnfn convert_ushort8_rtz(char8)
short __ovld __cnfn convert_short_sat_rtp(char)
ulong4 __ovld __cnfn convert_ulong4_rtn(char4)
long16 __ovld __cnfn convert_long16_rtn(char16)
uint __ovld __cnfn convert_uint_rtn(char)
uchar __ovld __cnfn abs_diff(char, char)
Returns | x - y | without modulo overflow.
float __ovld __cnfn mix(float, float, float)
Returns the linear blend of x & y implemented as: x + (y - x) * a a must be a value in the range 0....
float __ovld sincos(float, __global float *)
Compute sine and cosine of x.
void __ovld vstorea_half4_rtp(float4, size_t, __global half *)
void __ovld vstore_half(float, size_t, __global half *)
The float value given by data is first converted to a half value using the appropriate rounding mode.
float __ovld __cnfn half_exp2(float)
Compute the base- 2 exponential of x.
short2 __ovld __cnfn convert_short2_rte(char2)
ulong3 __ovld __cnfn convert_ulong3_rtp(char3)
ulong16 __ovld __cnfn convert_ulong16_rtz(char16)
int2 __ovld __cnfn convert_int2_rte(char2)
float __ovld __cnfn step(float, float)
Returns 0.0 if x < edge, otherwise it returns 1.0.
float8 __ovld __cnfn convert_float8_rte(char8)
uchar3 __ovld __cnfn convert_uchar3(char3)
float __ovld __cnfn convert_float_rtz(char)
char4 __ovld __cnfn convert_char4_sat_rte(char4)
float __ovld __cnfn exp10(float)
Exponential base 10 function.
char __ovld __cnfn convert_char(char)
float __ovld __cnfn half_exp(float)
Compute the base- e exponential of x.
ushort16 __ovld __cnfn convert_ushort16_sat_rte(char16)
int __ovld __cnfn isinf(float)
Test for infinity value (+ve or -ve) .
ushort3 __ovld __cnfn convert_ushort3_sat_rtz(char3)
int __ovld __cnfn get_image_height(read_only image2d_t)
Return the image height in pixels.
short __ovld __cnfn convert_short_rtp(char)
int2 __ovld __cnfn get_image_dim(read_only image2d_t)
Return the 2D image width and height as an int2 type.
uchar __ovld __cnfn convert_uchar_rte(char)
int __ovld atomic_sub(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float3 __ovld __cnfn convert_float3_rtz(char3)
long __ovld __cnfn convert_long_rte(char)
float __ovld __cnfn native_exp2(float)
Compute the base- 2 exponential of x over an implementation-defined range.
short8 __ovld __cnfn convert_short8_rtz(char8)
float __ovld __cnfn sign(float)
Returns 1.0 if x > 0, -0.0 if x = -0.0, +0.0 if x = +0.0, or -1.0 if x < 0.
float __ovld __cnfn radians(float)
Converts degrees to radians, i.e.
char __ovld __cnfn mul_hi(char, char)
Computes x * y and returns the high half of the product of x and y.
size_t __ovld get_global_linear_id(void)
char __ovld __cnfn convert_char_sat_rtz(char)
void __ovld vstorea_half2(float2, size_t, __global half *)
The floatn value given by data is converted to a halfn value using the appropriate rounding mode.
int __ovld __cnfn convert_int_rtp(char)
long3 __ovld __cnfn convert_long3_sat_rtp(char3)
void __ovld vstorea_half8_rtz(float8, size_t, __global half *)
uchar __ovld __cnfn convert_uchar_rtp(char)
char __ovld __cnfn max(char, char)
Returns y if x < y, otherwise it returns x.
size_t __ovld __cnfn get_num_groups(uint)
Returns the number of work-groups that will execute a kernel for dimension identified by dimindx.
ulong4 __ovld __cnfn convert_ulong4(char4)
uint4 __ovld __cnfn convert_uint4_sat(char4)
ulong2 __ovld __cnfn convert_ulong2(char2)
long2 __ovld __cnfn convert_long2_rtn(char2)
long16 __ovld __cnfn convert_long16_rtp(char16)
void __ovld vstorea_half8_rtn(float8, size_t, __global half *)
int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
ushort16 __ovld __cnfn convert_ushort16_sat_rtn(char16)
long3 __ovld __cnfn convert_long3_sat_rtn(char3)
float __ovld __cnfn degrees(float)
Converts radians to degrees, i.e.
uint2 __ovld __cnfn convert_uint2_rtp(char2)
uint3 __ovld __cnfn convert_uint3(char3)
void __ovld vstorea_half4_rtn(float4, size_t, __global half *)
ushort4 __ovld __cnfn convert_ushort4_sat(char4)
short __ovld __cnfn convert_short_rtz(char)
uint8 __ovld __cnfn convert_uint8_sat_rtn(char8)
uchar __ovld __cnfn convert_uchar_sat(char)
float8 __ovld __cnfn convert_float8_rtn(char8)
short4 __ovld __cnfn convert_short4_sat(char4)
float4 __ovld __cnfn convert_float4_rte(char4)
uchar4 __ovld __cnfn convert_uchar4_rtz(char4)
char4 __ovld __cnfn convert_char4_rtp(char4)
uchar16 __ovld __cnfn convert_uchar16_sat(char16)
long8 __ovld __cnfn convert_long8_sat_rtp(char8)
float __ovld __cnfn native_exp(float)
Compute the base- e exponential of x over an implementation-defined range.
short3 __ovld __cnfn convert_short3_rte(char3)
uint3 __ovld __cnfn convert_uint3_sat_rtz(char3)
char3 __ovld __cnfn convert_char3_sat_rtp(char3)
int __ovld __cnfn all(char)
Returns 1 if the most significant bit in all components of x is set; otherwise returns 0.
ushort16 __ovld __cnfn convert_ushort16(char16)
void __ovld vstore_half_rtp(float, size_t, __global half *)
long4 __ovld __cnfn convert_long4_sat_rtp(char4)
uint8 __ovld __cnfn convert_uint8_rtn(char8)
float8 __ovld __cnfn convert_float8(char8)
uchar __ovld __cnfn abs(char)
Returns | x |.
float __ovld __cnfn half_log2(float)
Compute a base 2 logarithm.
float16 __ovld __cnfn convert_float16(char16)
char8 __ovld __cnfn convert_char8_rtp(char8)
short3 __ovld __cnfn convert_short3_rtz(char3)
char16 __ovld __cnfn convert_char16_sat_rte(char16)
void __ovld vstore_half16(float16, size_t, __global half *)
long16 __ovld __cnfn convert_long16_rte(char16)
int __ovld atomic_dec(volatile __global int *)
Read the 32-bit value (referred to as old) stored at location pointed by p.
uchar3 __ovld __cnfn convert_uchar3_sat(char3)
uchar16 __ovld __cnfn convert_uchar16_sat_rte(char16)
char __ovld __cnfn rhadd(char, char)
Returns (x + y + 1) >> 1.
void __ovld vstorea_half16_rtn(float16, size_t, __global half *)
long8 __ovld __cnfn convert_long8_rtz(char8)
ushort16 __ovld __cnfn convert_ushort16_rtn(char16)
ulong2 __ovld __cnfn convert_ulong2_sat_rtn(char2)
int __ovld __cnfn isless(float, float)
Returns the component-wise compare of x < y.
float __ovld __cnfn length(float)
Return the length of vector p, i.e., sqrt(p.x2 + p.y 2 + ...)
char4 __ovld __cnfn convert_char4(char4)
int2 __ovld __cnfn convert_int2_rtz(char2)
short16 __ovld __cnfn convert_short16_sat_rtn(char16)
ulong __ovld __cnfn convert_ulong_rtn(char)
ulong16 __ovld __cnfn convert_ulong16_rtp(char16)
char3 __ovld __cnfn convert_char3_sat_rtn(char3)
short __ovld __cnfn convert_short_rte(char)
short3 __ovld __cnfn convert_short3_sat(char3)
long8 __ovld __cnfn convert_long8_sat(char8)
uint __ovld __cnfn convert_uint_sat_rtp(char)
char2 __ovld __cnfn convert_char2_sat_rte(char2)
float __ovld __cnfn half_log(float)
Compute natural logarithm.
char4 __ovld __cnfn convert_char4_sat_rtp(char4)
long8 __ovld __cnfn convert_long8_rtp(char8)
uint __ovld __cnfn convert_uint_rtp(char)
ulong __ovld __cnfn convert_ulong(char)
short4 __ovld __cnfn convert_short4_rtz(char4)
uchar3 __ovld __cnfn convert_uchar3_sat_rtn(char3)
ulong8 __ovld __cnfn convert_ulong8_rtn(char8)
char __ovld __cnfn mad_sat(char, char, char)
Returns a * b + c and saturates the result.
void __ovld vstorea_half2_rtp(float2, size_t, __global half *)
size_t __ovld get_local_linear_id(void)
short2 __ovld __cnfn convert_short2_sat(char2)
char3 __ovld __cnfn convert_char3_rtz(char3)
uint2 __ovld __cnfn convert_uint2_sat_rtz(char2)
uchar4 __ovld __cnfn convert_uchar4_sat_rte(char4)
float __ovld __cnfn minmag(float, float)
Returns x if | x | < | y |, y if | y | < | x |, otherwise fmin(x, y).
int8 __ovld __cnfn convert_int8(char8)
ulong16 __ovld __cnfn convert_ulong16_rte(char16)
char16 __ovld __cnfn convert_char16_rtp(char16)
float __ovld __cnfn native_powr(float, float)
Compute x to the power y, where x is >= 0.
int16 __ovld __cnfn convert_int16_sat_rte(char16)
long16 __ovld __cnfn convert_long16_sat(char16)
uchar __ovld __cnfn convert_uchar_rtz(char)
char3 __ovld __cnfn convert_char3_rtp(char3)
void __ovld vstorea_half16_rte(float16, size_t, __global half *)
int8 __ovld __cnfn convert_int8_sat_rtp(char8)
ulong2 __ovld __cnfn convert_ulong2_rte(char2)
char __ovld __cnfn convert_char_rtz(char)
short16 __ovld __cnfn convert_short16_sat_rtp(char16)
size_t __ovld __cnfn get_image_array_size(read_only image1d_array_t)
Return the image array size.
float4 __ovld __cnfn convert_float4_rtz(char4)
void __ovld vstorea_half3_rte(float3, size_t, __global half *)
uint4 __ovld __cnfn convert_uint4_rtn(char4)
float __ovld __cnfn convert_float_rtn(char)
int __ovld atomic_and(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn rsqrt(float)
Compute inverse square root.
float2 __ovld __cnfn convert_float2_rte(char2)
float __ovld __cnfn smoothstep(float, float, float)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
void __ovld vstore_half4_rte(float4, size_t, __global half *)
ushort4 __ovld __cnfn convert_ushort4_rtp(char4)
char3 __ovld __cnfn convert_char3_rtn(char3)
char3 __ovld __cnfn convert_char3_sat_rte(char3)
void __ovld wait_group_events(int, event_t *)
Wait for events that identify the async_work_group_copy operations to complete.
int __ovld __cnfn convert_int_sat_rte(char)
short8 __ovld __cnfn convert_short8_sat_rtz(char8)
uchar8 __ovld __cnfn convert_uchar8_sat_rtp(char8)
uchar2 __ovld __cnfn convert_uchar2(char2)
uint4 __ovld __cnfn convert_uint4_rtp(char4)
ushort4 __ovld __cnfn convert_ushort4_rtz(char4)
char __ovld __cnfn select(char, char, char)
For each component of a vector type, result[i] = if MSB of c[i] is set ? b[i] : a[i].
void __ovld vstore_half8_rtp(float8, size_t, __global half *)
size_t __ovld __cnfn get_global_id(uint)
Returns the unique global work-item ID value for dimension identified by dimindx.
ushort __ovld __cnfn convert_ushort_sat(char)
int3 __ovld __cnfn convert_int3_sat_rtp(char3)
uint8 __ovld __cnfn convert_uint8_sat_rtp(char8)
ulong8 __ovld __cnfn convert_ulong8_rtz(char8)
char4 __ovld __cnfn convert_char4_sat_rtn(char4)
int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, int2)
float __ovld __cnfn half_exp10(float)
Compute the base- 10 exponential of x.
void __ovld vstore_half16_rte(float16, size_t, __global half *)
short __ovld __cnfn convert_short_sat_rtz(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtp(char3)
uchar3 __ovld __cnfn convert_uchar3_sat_rte(char3)
ulong16 __ovld __cnfn convert_ulong16_rtn(char16)
char2 __ovld __cnfn convert_char2_rte(char2)
uchar4 __ovld __cnfn convert_uchar4_sat_rtn(char4)
char2 __ovld __cnfn shuffle(char2, uchar2)
The shuffle and shuffle2 built-in functions construct a permutation of elements from one or two input...
char4 __ovld __cnfn convert_char4_sat_rtz(char4)
float __ovld __cnfn native_cos(float)
Compute cosine over an implementation-defined range.
short3 __ovld __cnfn convert_short3_sat_rtp(char3)
ushort2 __ovld __cnfn convert_ushort2_sat(char2)
float8 __ovld __cnfn convert_float8_rtz(char8)
short3 __ovld __cnfn convert_short3_sat_rte(char3)
char8 __ovld __cnfn convert_char8_sat_rtz(char8)
float8 __ovld __purefn vloada_half8(size_t, const __constant half *)
int __ovld atomic_inc(volatile __global int *)
Read the 32-bit value (referred to as old) stored at location pointed by p.
char __ovld __cnfn popcount(char)
uchar2 __ovld __cnfn convert_uchar2_rtp(char2)
size_t __ovld get_enqueued_local_size(uint)
float __ovld __cnfn maxmag(float, float)
Returns x if | x | > | y |, y if | y | > | x |, otherwise fmax(x, y).
ushort16 __ovld __cnfn convert_ushort16_sat_rtz(char16)
uint4 __ovld __cnfn convert_uint4_sat_rte(char4)
short16 __ovld __cnfn convert_short16_sat_rtz(char16)
float16 __ovld __purefn vload_half16(size_t, const __constant half *)
uchar3 __ovld __cnfn convert_uchar3_rtp(char3)
ushort4 __ovld __cnfn convert_ushort4_sat_rtz(char4)
uint3 __ovld __cnfn convert_uint3_rtz(char3)
uint8 __ovld __cnfn convert_uint8_sat(char8)
uchar2 __ovld __cnfn convert_uchar2_sat_rtn(char2)
int __ovld __cnfn isgreaterequal(float, float)
Returns the component-wise compare of x >= y.
void __ovld vstore_half8(float8, size_t, __global half *)
float3 __ovld __purefn vloada_half3(size_t, const __constant half *)
ushort2 __ovld __cnfn convert_ushort2_rtz(char2)
int __ovld __cnfn isfinite(float)
Test for finite value.
char __ovld __cnfn rotate(char, char)
For each element in v, the bits are shifted left by the number of bits given by the corresponding ele...
void __ovld vstore_half3_rtn(float3, size_t, __global half *)
float __ovld __cnfn native_rsqrt(float)
Compute inverse square root over an implementationdefined range.
float3 __ovld __cnfn convert_float3(char3)
int4 __ovld __cnfn convert_int4_sat_rte(char4)
char8 __ovld __cnfn convert_char8_rtz(char8)
void __ovld vstore_half8_rte(float8, size_t, __global half *)
short4 __ovld __cnfn convert_short4_sat_rtp(char4)
int2 __ovld __cnfn convert_int2_rtp(char2)
long4 __ovld __cnfn convert_long4_sat_rtn(char4)
int16 __ovld __cnfn convert_int16_sat_rtz(char16)
int __ovld atomic_add(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
uchar4 __ovld __cnfn convert_uchar4_sat(char4)
ushort __ovld __cnfn convert_ushort_rtz(char)
short8 __ovld __cnfn convert_short8_rtp(char8)
long4 __ovld __cnfn convert_long4_rtn(char4)
int4 __ovld __cnfn convert_int4_sat_rtn(char4)
char __ovld __cnfn clamp(char, char, char)
Returns min(max(x, minval), maxval).
long __ovld __cnfn convert_long(char)
short8 __ovld __cnfn convert_short8_rte(char8)
char16 __ovld __cnfn convert_char16_rte(char16)
int __ovld __cnfn mad24(int, int, int)
Multiply two 24-bit integer values x and y and add the 32-bit integer result to the 32-bit integer z.
int3 __ovld __cnfn convert_int3_sat_rte(char3)
void __ovld vstorea_half8(float8, size_t, __global half *)
float __ovld __cnfn cospi(float)
Compute cos (PI * x).
float __ovld __cnfn fast_normalize(float)
Returns a vector in the same direction as p but with a length of 1.
ushort2 __ovld __cnfn convert_ushort2_sat_rtz(char2)
short4 __ovld __cnfn convert_short4_rtn(char4)
float2 __ovld __cnfn convert_float2(char2)
void __ovld write_imagef(write_only image2d_t, int2, float4)
Write color value to location specified by coordinate (coord.x, coord.y) in the 2D image object speci...
long2 __ovld __cnfn convert_long2_rtz(char2)
char __ovld __cnfn convert_char_sat_rtp(char)
uint16 __ovld __cnfn convert_uint16_rtz(char16)
short3 __ovld __cnfn convert_short3_sat_rtn(char3)
uchar16 __ovld __cnfn convert_uchar16(char16)
uint3 __ovld __cnfn convert_uint3_rte(char3)
uint16 __ovld __cnfn convert_uint16_sat_rte(char16)
long3 __ovld __cnfn convert_long3_rtp(char3)
int __ovld __cnfn isnormal(float)
Test for a normal value.
ushort2 __ovld __cnfn convert_ushort2_rtn(char2)
char8 __ovld __cnfn convert_char8_sat(char8)
uint16 __ovld __cnfn convert_uint16_rtn(char16)
long8 __ovld __cnfn convert_long8_sat_rtn(char8)
void __ovld vstore_half3(float3, size_t, __global half *)
uchar8 __ovld __cnfn convert_uchar8_sat_rtn(char8)
uchar8 __ovld __cnfn convert_uchar8_rte(char8)
uint4 __ovld __cnfn convert_uint4_sat_rtz(char4)
int16 __ovld __cnfn convert_int16_rtn(char16)
void __ovld vstorea_half3(float3, size_t, __global half *)
int4 __ovld __cnfn convert_int4_rtz(char4)
float __ovld __cnfn distance(float, float)
Returns the distance between p0 and p1.
uint2 __ovld __cnfn convert_uint2_rte(char2)
int __ovld __cnfn isordered(float, float)
Test if arguments are ordered.
void __ovld vstorea_half8_rte(float8, size_t, __global half *)
ulong16 __ovld __cnfn convert_ulong16(char16)
float __ovld __purefn vload_half(size_t, const __constant half *)
Read sizeof (half) bytes of data from address (p + offset).
char __ovld __cnfn convert_char_rtp(char)
uchar8 __ovld __cnfn convert_uchar8_sat_rtz(char8)
ulong3 __ovld __cnfn convert_ulong3(char3)
char3 __ovld __cnfn convert_char3(char3)
long __ovld __cnfn convert_long_sat_rtz(char)
long2 __ovld __cnfn convert_long2_sat_rtz(char2)
ulong4 __ovld __cnfn convert_ulong4_sat_rte(char4)
char2 __ovld __cnfn convert_char2_rtn(char2)
short2 __ovld __cnfn convert_short2_sat_rtz(char2)
short8 __ovld __cnfn convert_short8_sat_rtn(char8)
uint2 __ovld __cnfn convert_uint2_sat_rtn(char2)
void __ovld write_imageui(write_only image2d_t, int2, uint4)
char __ovld __cnfn min(char, char)
Returns y if y < x, otherwise it returns x.
uchar3 __ovld __cnfn convert_uchar3_rtz(char3)
uint3 __ovld __cnfn convert_uint3_sat_rtn(char3)
char __ovld __cnfn bitselect(char, char, char)
Each bit of the result is the corresponding bit of a if the corresponding bit of c is 0.
uchar4 __ovld __cnfn convert_uchar4_rtn(char4)
float3 __ovld __purefn vload_half3(size_t, const __constant half *)
uint4 __ovld __cnfn convert_uint4_sat_rtn(char4)
int8 __ovld __cnfn convert_int8_sat_rte(char8)
ulong3 __ovld __cnfn convert_ulong3_sat(char3)
float __ovld __cnfn normalize(float)
Returns a vector in the same direction as p but with a length of 1.
ushort3 __ovld __cnfn convert_ushort3_rtp(char3)
float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, int2)
Use the coordinate (coord.xy) to do an element lookup in the 2D image object specified by image.
float3 __ovld __cnfn convert_float3_rte(char3)
uchar __ovld __cnfn convert_uchar_rtn(char)
void __ovld vstore8(char8, size_t, __global char *)
long4 __ovld __cnfn convert_long4_sat_rte(char4)
int3 __ovld __cnfn convert_int3_sat_rtn(char3)
long __ovld __cnfn convert_long_rtn(char)
uchar8 __ovld __cnfn convert_uchar8_sat_rte(char8)
long2 __ovld __cnfn convert_long2(char2)
ulong16 __ovld __cnfn convert_ulong16_sat_rte(char16)
long __ovld __cnfn convert_long_sat(char)
short __ovld __cnfn convert_short_sat_rte(char)
float __ovld __cnfn native_log10(float)
Compute a base 10 logarithm over an implementationdefined range.
ulong16 __ovld __cnfn convert_ulong16_sat_rtz(char16)
ushort __ovld __cnfn convert_ushort_sat_rte(char)
short2 __ovld __cnfn convert_short2_sat_rte(char2)
void __ovld vstore_half16_rtp(float16, size_t, __global half *)
uint8 __ovld __cnfn convert_uint8(char8)
float __ovld __cnfn half_divide(float, float)
Compute x / y.
float __ovld modf(float, __global float *)
Decompose a floating-point number.
void __ovld vstore3(char3, size_t, __global char *)
uint __ovld __cnfn get_work_dim(void)
Returns the number of dimensions in use.
long2 __ovld __cnfn convert_long2_sat_rtn(char2)
int2 __ovld __cnfn convert_int2_rtn(char2)
long8 __ovld __cnfn convert_long8_rte(char8)
char16 __ovld __cnfn convert_char16_sat_rtp(char16)
uchar __ovld __cnfn convert_uchar_sat_rte(char)
uchar4 __ovld __cnfn convert_uchar4(char4)
uchar8 __ovld __cnfn convert_uchar8_rtn(char8)
void __ovld vstore_half4_rtz(float4, size_t, __global half *)
ushort8 __ovld __cnfn convert_ushort8_rtp(char8)
float4 __ovld __cnfn convert_float4_rtp(char4)
uint2 __ovld __cnfn convert_uint2_sat_rtp(char2)
long8 __ovld __cnfn convert_long8_rtn(char8)
char2 __ovld __cnfn convert_char2_rtz(char2)
ulong4 __ovld __cnfn convert_ulong4_rtz(char4)
void __ovld vstorea_half3_rtz(float3, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3_sat_rtp(char3)
long16 __ovld __cnfn convert_long16_sat_rtp(char16)
uchar __ovld __cnfn convert_uchar_sat_rtn(char)
ushort4 __ovld __cnfn convert_ushort4_sat_rtp(char4)
uchar __ovld __cnfn convert_uchar_sat_rtz(char)
void __ovld vstore_half4_rtp(float4, size_t, __global half *)
long4 __ovld __cnfn convert_long4_rtp(char4)
int __ovld atomic_min(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
void __ovld vstore_half8_rtn(float8, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3(char3)
int __ovld atomic_xor(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
long2 __ovld __cnfn convert_long2_rtp(char2)
size_t __ovld __cnfn get_group_id(uint)
get_group_id returns the work-group ID which is a number from 0 .
char4 __ovld __cnfn convert_char4_rtz(char4)
void __ovld vstore_half_rtz(float, size_t, __global half *)
uchar4 __ovld __cnfn convert_uchar4_rtp(char4)
int __ovld __cnfn convert_int_sat_rtn(char)
uchar16 __ovld __cnfn convert_uchar16_rtz(char16)
char2 __ovld __cnfn convert_char2(char2)
void __ovld vstore_half2_rtz(float2, size_t, __global half *)
char2 __ovld __purefn vload2(size_t, const __constant char *)
Use generic type gentype to indicate the built-in data types char, uchar, short, ushort,...
long4 __ovld __cnfn convert_long4_rtz(char4)
float __ovld __cnfn powr(float, float)
Compute x to the power y, where x is >= 0.
char __ovld __cnfn convert_char_rte(char)
int __ovld __cnfn islessgreater(float, float)
Returns the component-wise compare of (x < y) || (x > y) .
ushort __ovld __cnfn convert_ushort(char)
uint8 __ovld __cnfn convert_uint8_rtp(char8)
long16 __ovld __cnfn convert_long16_rtz(char16)
ushort8 __ovld __cnfn convert_ushort8_sat_rte(char8)
short16 __ovld __cnfn convert_short16_rtp(char16)
long4 __ovld __cnfn convert_long4_sat(char4)
long4 __ovld __cnfn convert_long4_rte(char4)
short __ovld __cnfn upsample(char, uchar)
result[i] = ((short)hi[i] << 8) | lo[i] result[i] = ((ushort)hi[i] << 8) | lo[i]
int __ovld __cnfn get_image_depth(read_only image3d_t)
Return the image depth in pixels.
float __ovld __cnfn half_sqrt(float)
Compute square root.
void __ovld vstore_half16_rtn(float16, size_t, __global half *)
char8 __ovld __cnfn convert_char8_rtn(char8)
short3 __ovld __cnfn convert_short3(char3)
int8 __ovld __cnfn convert_int8_sat_rtn(char8)
char3 __ovld __cnfn convert_char3_sat_rtz(char3)
ulong8 __ovld __cnfn convert_ulong8(char8)
float __ovld __cnfn native_divide(float, float)
Compute x / y over an implementation-defined range.
uchar3 __ovld __cnfn convert_uchar3_sat_rtz(char3)
long3 __ovld __cnfn convert_long3_rte(char3)
char8 __ovld __cnfn convert_char8_sat_rtp(char8)
char __ovld __cnfn convert_char_rtn(char)
long3 __ovld __cnfn convert_long3_sat_rte(char3)
char __ovld __cnfn convert_char_sat_rte(char)
ulong16 __ovld __cnfn convert_ulong16_sat_rtn(char16)
uint2 __ovld __cnfn convert_uint2_rtz(char2)
long __ovld __cnfn convert_long_sat_rte(char)
int2 __ovld __cnfn convert_int2(char2)
int __ovld __cnfn isnan(float)
Test for a NaN.
#define __ovld
Definition: opencl-c.h:35
int __ovld __cnfn any(char)
Returns 1 if the most significant bit in any component of x is set; otherwise returns 0.
short3 __ovld __cnfn convert_short3_rtn(char3)
int2 __ovld __cnfn convert_int2_sat_rtn(char2)
void __ovld write_mem_fence(cl_mem_fence_flags)
Write memory barrier that orders only stores.
short __ovld __cnfn convert_short_rtn(char)
ulong2 __ovld __cnfn convert_ulong2_rtz(char2)
uint2 __ovld __cnfn convert_uint2_sat(char2)
int4 __ovld __cnfn convert_int4_sat_rtp(char4)
uchar16 __ovld __cnfn convert_uchar16_sat_rtp(char16)
short3 __ovld __cnfn convert_short3_sat_rtz(char3)
uint2 __ovld __cnfn convert_uint2_rtn(char2)
int __ovld __cnfn convert_int_rte(char)
void __ovld atomic_work_item_fence(cl_mem_fence_flags, memory_order, memory_scope)
int8 __ovld __cnfn convert_int8_rte(char8)
uchar __ovld __cnfn convert_uchar_sat_rtp(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtz(char3)
float __ovld __cnfn tanpi(float)
Compute tan (PI * x).
ushort2 __ovld __cnfn convert_ushort2_sat_rtp(char2)
uchar2 __ovld __cnfn convert_uchar2_rtz(char2)
int __ovld __cnfn convert_int(char)
ushort16 __ovld __cnfn convert_ushort16_rtp(char16)
int __ovld __cnfn isgreater(float, float)
Returns the component-wise compare of x > y.
ulong4 __ovld __cnfn convert_ulong4_sat_rtp(char4)
int4 __ovld __cnfn convert_int4_rtp(char4)
float __ovld __cnfn native_sqrt(float)
Compute square root over an implementation-defined range.
void __ovld vstore_half3_rtz(float3, size_t, __global half *)
float __ovld __cnfn acospi(float)
Compute acos (x) / PI.
ulong __ovld __cnfn convert_ulong_sat_rtp(char)
void __ovld prefetch(const __global char *, size_t)
Prefetch num_elements * sizeof(gentype) bytes into the global cache.
short2 __ovld __cnfn convert_short2_rtn(char2)
size_t __ovld __cnfn get_global_size(uint)
Returns the number of global work-items specified for dimension identified by dimindx.
event_t __ovld async_work_group_copy(__local char *, const __global char *, size_t, event_t)
event_t async_work_group_copy ( __global gentype *dst, const __local gentype *src,...
int16 __ovld __cnfn convert_int16_rtz(char16)
ulong __ovld __cnfn convert_ulong_sat_rtz(char)
int __ovld __cnfn islessequal(float, float)
Returns the component-wise compare of x <= y.
long8 __ovld __cnfn convert_long8(char8)
uchar3 __ovld __cnfn convert_uchar3_rte(char3)
long __ovld __cnfn convert_long_sat_rtn(char)
uchar2 __ovld __cnfn convert_uchar2_sat_rte(char2)
ushort16 __ovld __cnfn convert_ushort16_sat_rtp(char16)
ushort16 __ovld __cnfn convert_ushort16_rtz(char16)
ushort2 __ovld __cnfn convert_ushort2_sat_rtn(char2)
char2 __ovld __cnfn shuffle2(char2, char2, uchar2)
int8 __ovld __cnfn convert_int8_sat_rtz(char8)
float4 __ovld __purefn vloada_half4(size_t, const __constant half *)
event_t __ovld async_work_group_strided_copy(__local char *, const __global char *, size_t, size_t, event_t)
Perform an async gather of num_elements gentype elements from src to dst.
long16 __ovld __cnfn convert_long16_sat_rte(char16)
uchar16 __ovld __cnfn convert_uchar16_rtp(char16)
float2 __ovld __purefn vloada_half2(size_t, const __constant half *)
For n = 1, 2, 4, 8 and 16 read sizeof (halfn) bytes of data from address (p + (offset * n)).
uchar2 __ovld __cnfn convert_uchar2_rtn(char2)
int __ovld __cnfn signbit(float)
Test for sign bit.
short16 __ovld __cnfn convert_short16_rte(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtp(char8)
long8 __ovld __cnfn convert_long8_sat_rtz(char8)
char16 __ovld __purefn vload16(size_t, const __constant char *)
short8 __ovld __cnfn convert_short8_sat(char8)
float __ovld __cnfn half_log10(float)
Compute a base 10 logarithm.
float2 __ovld __cnfn convert_float2_rtn(char2)
void __ovld vstorea_half2_rtn(float2, size_t, __global half *)
char8 __ovld __purefn vload8(size_t, const __constant char *)
ulong3 __ovld __cnfn convert_ulong3_rtn(char3)
#define __cnfn
Definition: opencl-c.h:40
char4 __ovld __cnfn convert_char4_rtn(char4)
int __ovld atomic_cmpxchg(volatile __global int *, int, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn native_exp10(float)
Compute the base- 10 exponential of x over an implementation-defined range.
int3 __ovld __cnfn convert_int3_rte(char3)
int2 __ovld __cnfn convert_int2_sat_rte(char2)
long4 __ovld __cnfn convert_long4_sat_rtz(char4)
float __ovld __cnfn fast_distance(float, float)
Returns fast_length(p0 - p1).
ulong __ovld __cnfn convert_ulong_rte(char)
float16 __ovld __cnfn convert_float16_rtz(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtz(char8)
uint __ovld __cnfn convert_uint_rte(char)
size_t __ovld __cnfn get_local_size(uint)
Returns the number of local work-items specified in dimension identified by dimindx.
uchar4 __ovld __cnfn convert_uchar4_sat_rtz(char4)
long3 __ovld __cnfn convert_long3(char3)
short8 __ovld __cnfn convert_short8_sat_rtp(char8)
uint16 __ovld __cnfn convert_uint16(char16)
short16 __ovld __cnfn convert_short16(char16)
long __ovld __cnfn convert_long_sat_rtp(char)
long3 __ovld __cnfn convert_long3_rtz(char3)
void __ovld vstore_half4_rtn(float4, size_t, __global half *)
char16 __ovld __cnfn convert_char16_sat(char16)
short4 __ovld __cnfn convert_short4_rte(char4)
void __ovld __conv barrier(cl_mem_fence_flags)
All work-items in a work-group executing the kernel on a processor must execute this function before ...
void __ovld vstore_half3_rtp(float3, size_t, __global half *)
float __ovld __cnfn convert_float(char)
int4 __ovld __cnfn convert_int4_sat(char4)
long16 __ovld __cnfn convert_long16_sat_rtz(char16)
uchar16 __ovld __cnfn convert_uchar16_rte(char16)
int8 __ovld __cnfn convert_int8_rtp(char8)
uint16 __ovld __cnfn convert_uint16_rtp(char16)
int __ovld __cnfn isunordered(float, float)
Test if arguments are unordered.
float __ovld __cnfn half_sin(float)
Compute sine.
ushort __ovld __cnfn convert_ushort_rte(char)
long2 __ovld __cnfn convert_long2_sat_rte(char2)
long16 __ovld __cnfn convert_long16_sat_rtn(char16)
ulong2 __ovld __cnfn convert_ulong2_sat_rte(char2)
uchar16 __ovld __cnfn convert_uchar16_sat_rtz(char16)
uchar4 __ovld __cnfn convert_uchar4_sat_rtp(char4)
ulong4 __ovld __cnfn convert_ulong4_rte(char4)
int __ovld __cnfn convert_int_sat_rtp(char)
ulong __ovld __cnfn convert_ulong_rtp(char)
ushort2 __ovld __cnfn convert_ushort2_rtp(char2)
uint16 __ovld __cnfn convert_uint16_sat(char16)
void __ovld vstorea_half16(float16, size_t, __global half *)
int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
void __ovld vstorea_half4_rte(float4, size_t, __global half *)
float __ovld __cnfn sinpi(float)
Compute sin (PI * x).
uchar8 __ovld __cnfn convert_uchar8_sat(char8)
ushort2 __ovld __cnfn convert_ushort2_rte(char2)
uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, int2)
char16 __ovld __cnfn convert_char16(char16)
#define __conv
Definition: opencl-c.h:36
float16 __ovld __cnfn convert_float16_rte(char16)
char2 __ovld __cnfn convert_char2_sat_rtz(char2)
uint __ovld __cnfn convert_uint(char)
int8 __ovld __cnfn convert_int8_rtn(char8)
int4 __ovld __cnfn convert_int4_rtn(char4)
float8 __ovld __cnfn convert_float8_rtp(char8)
float4 __ovld __cnfn cross(float4, float4)
Returns the cross product of p0.xyz and p1.xyz.
float4 __ovld __cnfn convert_float4_rtn(char4)
ushort4 __ovld __cnfn convert_ushort4_rte(char4)
int __ovld __cnfn get_image_channel_data_type(read_only image1d_t)
Return the channel data type.
uint3 __ovld __cnfn convert_uint3_sat_rtp(char3)
uint4 __ovld __cnfn convert_uint4(char4)
ushort2 __ovld __cnfn convert_ushort2_sat_rte(char2)
float __ovld __cnfn atan2pi(float, float)
Compute atan2 (y, x) / PI.
short __ovld __cnfn convert_short_sat(char)
uint2 __ovld __cnfn convert_uint2_sat_rte(char2)
ushort __ovld __cnfn convert_ushort_sat_rtn(char)
void __ovld vstore_half_rtn(float, size_t, __global half *)
void __ovld mem_fence(cl_mem_fence_flags)
Orders loads and stores of a work-item executing a kernel.
uint16 __ovld __cnfn convert_uint16_sat_rtz(char16)
ushort4 __ovld __cnfn convert_ushort4_rtn(char4)
uint4 __ovld __cnfn convert_uint4_sat_rtp(char4)
int __ovld __cnfn get_image_channel_order(read_only image1d_t)
Return the image channel order.
void __ovld vstore4(char4, size_t, __global char *)
uchar4 __ovld __cnfn convert_uchar4_rte(char4)
ushort2 __ovld __cnfn convert_ushort2(char2)
int __ovld __cnfn mul24(int, int)
Multiply two 24-bit integer values x and y.
float __ovld __cnfn native_log2(float)
Compute a base 2 logarithm over an implementationdefined range.
uint __ovld __cnfn convert_uint_sat_rtz(char)
void __ovld vstorea_half16_rtp(float16, size_t, __global half *)
uchar2 __ovld __cnfn convert_uchar2_sat_rtz(char2)
uint8 __ovld __cnfn convert_uint8_rtz(char8)
ushort4 __ovld __cnfn convert_ushort4(char4)
float __ovld lgamma_r(float, __global int *)
char16 __ovld __cnfn convert_char16_rtn(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rte(char8)
uint3 __ovld __cnfn convert_uint3_sat_rte(char3)
uint2 __ovld __cnfn convert_uint2(char2)
uint8 __ovld __cnfn convert_uint8_sat_rtz(char8)
uint16 __ovld __cnfn convert_uint16_rte(char16)
short2 __ovld __cnfn convert_short2_sat_rtn(char2)
char8 __ovld __cnfn convert_char8_rte(char8)
float2 __ovld __cnfn convert_float2_rtz(char2)
float __ovld __cnfn half_cos(float)
Compute cosine.
char3 __ovld __cnfn convert_char3_rte(char3)
int __ovld __cnfn convert_int_sat(char)
char2 __ovld __cnfn convert_char2_sat_rtn(char2)
ushort __ovld __cnfn convert_ushort_rtp(char)
ulong3 __ovld __cnfn convert_ulong3_rte(char3)
ulong2 __ovld __cnfn convert_ulong2_rtp(char2)
ushort16 __ovld __cnfn convert_ushort16_sat(char16)
short __ovld __cnfn convert_short(char)
short8 __ovld __cnfn convert_short8_rtn(char8)
char4 __ovld __purefn vload4(size_t, const __constant char *)
long3 __ovld __cnfn convert_long3_rtn(char3)
float __ovld __cnfn rootn(float, int)
Compute x to the power 1/y.
void __ovld vstorea_half8_rtp(float8, size_t, __global half *)
char2 __ovld __cnfn convert_char2_sat(char2)
void __ovld read_mem_fence(cl_mem_fence_flags)
Read memory barrier that orders only loads.
ushort4 __ovld __cnfn convert_ushort4_sat_rte(char4)
uchar3 __ovld __cnfn convert_uchar3_sat_rtp(char3)
short4 __ovld __cnfn convert_short4(char4)
ulong3 __ovld __cnfn convert_ulong3_rtz(char3)
float __ovld __cnfn half_rsqrt(float)
Compute inverse square root.
uchar16 __ovld __cnfn convert_uchar16_rtn(char16)
char3 __ovld __purefn vload3(size_t, const __constant char *)
ulong __ovld __cnfn convert_ulong_sat_rtn(char)
short16 __ovld __cnfn convert_short16_rtz(char16)
long2 __ovld __cnfn convert_long2_rte(char2)
void __ovld vstore_half2_rtp(float2, size_t, __global half *)
float __ovld __cnfn mad(float, float, float)
mad approximates a * b + c.
uint4 __ovld __cnfn convert_uint4_rte(char4)
ushort8 __ovld __cnfn convert_ushort8(char8)
int8 __ovld __cnfn convert_int8_rtz(char8)
#define __purefn
Definition: opencl-c.h:39
ushort __ovld __cnfn convert_ushort_sat_rtp(char)
int3 __ovld __cnfn convert_int3_sat(char3)
void __ovld __conv work_group_barrier(cl_mem_fence_flags, memory_scope)
float16 __ovld __purefn vloada_half16(size_t, const __constant half *)
void __ovld vstore_half3_rte(float3, size_t, __global half *)
#define atomic_fetch_xor(object, operand)
Definition: stdatomic.h:159
#define atomic_store(object, desired)
Definition: stdatomic.h:135
#define atomic_compare_exchange_weak(object, expected, desired)
Definition: stdatomic.h:147
#define atomic_compare_exchange_weak_explicit
Definition: stdatomic.h:148
#define atomic_compare_exchange_strong(object, expected, desired)
Definition: stdatomic.h:144
#define atomic_exchange(object, desired)
Definition: stdatomic.h:141
#define atomic_fetch_or(object, operand)
Definition: stdatomic.h:156
#define atomic_flag_clear(object)
Definition: stdatomic.h:185
#define atomic_fetch_and_explicit
Definition: stdatomic.h:163
#define atomic_fetch_sub(object, operand)
Definition: stdatomic.h:153
#define atomic_init
Definition: stdatomic.h:61
#define atomic_fetch_sub_explicit
Definition: stdatomic.h:154
#define atomic_flag_test_and_set_explicit(object, order)
Definition: stdatomic.h:183
#define atomic_fetch_xor_explicit
Definition: stdatomic.h:160
#define atomic_store_explicit
Definition: stdatomic.h:136
#define atomic_flag_test_and_set(object)
Definition: stdatomic.h:182
#define atomic_fetch_or_explicit
Definition: stdatomic.h:157
#define atomic_load_explicit
Definition: stdatomic.h:139
#define atomic_flag_clear_explicit(object, order)
Definition: stdatomic.h:186
#define atomic_exchange_explicit
Definition: stdatomic.h:142
#define atomic_load(object)
Definition: stdatomic.h:138
#define atomic_fetch_and(object, operand)
Definition: stdatomic.h:162
#define atomic_compare_exchange_strong_explicit
Definition: stdatomic.h:145
#define atomic_fetch_add_explicit
Definition: stdatomic.h:151
#define atomic_fetch_add(object, operand)
Definition: stdatomic.h:150
#define sinh(__x)
Definition: tgmath.h:373
#define asin(__x)
Definition: tgmath.h:112
#define sqrt(__x)
Definition: tgmath.h:520
#define acos(__x)
Definition: tgmath.h:83
#define fmin(__x, __y)
Definition: tgmath.h:780
#define exp(__x)
Definition: tgmath.h:431
#define ilogb(__x)
Definition: tgmath.h:851
#define copysign(__x, __y)
Definition: tgmath.h:618
#define erf(__x)
Definition: tgmath.h:636
#define atanh(__x)
Definition: tgmath.h:228
#define remquo(__x, __y, __z)
Definition: tgmath.h:1111
#define nextafter(__x, __y)
Definition: tgmath.h:1055
#define frexp(__x, __y)
Definition: tgmath.h:816
#define asinh(__x)
Definition: tgmath.h:199
#define erfc(__x)
Definition: tgmath.h:653
#define atan2(__x, __y)
Definition: tgmath.h:566
#define hypot(__x, __y)
Definition: tgmath.h:833
#define exp2(__x)
Definition: tgmath.h:670
#define sin(__x)
Definition: tgmath.h:286
#define cbrt(__x)
Definition: tgmath.h:584
#define log2(__x)
Definition: tgmath.h:970
#define cosh(__x)
Definition: tgmath.h:344
#define trunc(__x)
Definition: tgmath.h:1216
#define fmax(__x, __y)
Definition: tgmath.h:762
#define ldexp(__x, __y)
Definition: tgmath.h:868
#define acosh(__x)
Definition: tgmath.h:170
#define tgamma(__x)
Definition: tgmath.h:1199
#define round(__x)
Definition: tgmath.h:1148
#define fmod(__x, __y)
Definition: tgmath.h:798
#define tan(__x)
Definition: tgmath.h:315
#define cos(__x)
Definition: tgmath.h:257
#define log10(__x)
Definition: tgmath.h:936
#define fabs(__x)
Definition: tgmath.h:549
#define pow(__x, __y)
Definition: tgmath.h:490
#define log1p(__x)
Definition: tgmath.h:953
#define rint(__x)
Definition: tgmath.h:1131
#define expm1(__x)
Definition: tgmath.h:687
#define remainder(__x, __y)
Definition: tgmath.h:1090
#define fdim(__x, __y)
Definition: tgmath.h:704
#define lgamma(__x)
Definition: tgmath.h:885
#define tanh(__x)
Definition: tgmath.h:402
#define atan(__x)
Definition: tgmath.h:141
#define floor(__x)
Definition: tgmath.h:722
#define ceil(__x)
Definition: tgmath.h:601
#define log(__x)
Definition: tgmath.h:460
#define logb(__x)
Definition: tgmath.h:987
#define fma(__x, __y, __z)
Definition: tgmath.h:742