73 lines · plain
1//===----------------------------------------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#define __CLC_VLOAD_NAME(x) \10 __CLC_XCONCAT(__CLC_XCONCAT(x, vload), __CLC_VECSIZE)11#define __CLC_VLOAD_HALF_NAME(x) \12 __CLC_XCONCAT(__CLC_XCONCAT(x, vload_half), __CLC_VECSIZE)13#define __CLC_VLOADA_HALF_NAME(x) \14 __CLC_XCONCAT(__CLC_XCONCAT(x, vloada_half), __CLC_VECSIZE)15 16#ifndef __CLC_SCALAR17 18#define __CLC_VLOAD_TY __CLC_XCONCAT(less_aligned_, __CLC_GENTYPE)19 20#define __CLC_VLOAD_DEF(ADDRSPACE) \21 _CLC_OVERLOAD _CLC_DEF __CLC_VLOAD_TY __CLC_VLOAD_NAME()( \22 size_t offset, const ADDRSPACE __CLC_SCALAR_GENTYPE *x) { \23 return __CLC_VLOAD_NAME(__clc_)(offset, x); \24 }25 26__CLC_VLOAD_DEF(__private)27__CLC_VLOAD_DEF(__local)28__CLC_VLOAD_DEF(__constant)29__CLC_VLOAD_DEF(__global)30 31#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED32__CLC_VLOAD_DEF(__generic)33#endif34 35#undef __CLC_VLOAD_DEF36#undef __CLC_VLOAD_TY37 38#endif39 40// vload_half and vloada_half are available even if cl_khr_fp16 is unavailable.41// Declare these functions when working on float types, which we know are42// always available.43#ifdef __CLC_FPSIZE44#if __CLC_FPSIZE == 3245 46#define __CLC_VLOAD_HALF_DEF(ADDRSPACE) \47 _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_VLOAD_HALF_NAME()( \48 size_t offset, const ADDRSPACE half *mem) { \49 return __CLC_VLOAD_HALF_NAME(__clc_)(offset, mem); \50 } \51 \52 _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_VLOADA_HALF_NAME()( \53 size_t offset, const ADDRSPACE half *mem) { \54 return __CLC_VLOADA_HALF_NAME(__clc_)(offset, mem); \55 }56 57__CLC_VLOAD_HALF_DEF(__private)58__CLC_VLOAD_HALF_DEF(__local)59__CLC_VLOAD_HALF_DEF(__constant)60__CLC_VLOAD_HALF_DEF(__global)61 62#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED63__CLC_VLOAD_HALF_DEF(__generic)64#endif65 66#undef __CLC_VLOAD_HALF_DEF67#endif68#endif69 70#undef __CLC_VLOAD_NAME71#undef __CLC_VLOAD_HALF_NAME72#undef __CLC_VLOADA_HALF_NAME73