brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 955b77b Raw
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