blob: b58fb8d3233f862054807443eba2882cfdaa6e9f [file] [log] [blame] [edit]
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include <clc/internal/clc.h>
#define __CLC_BODY <clc_bitselect.inc>
#include <clc/integer/gentype.inc>
#define __CLC_FLOAT_BITSELECT(f_type, i_type, width) \
_CLC_OVERLOAD _CLC_DEF f_type##width __clc_bitselect( \
f_type##width x, f_type##width y, f_type##width z) { \
return __clc_as_##f_type##width(__clc_bitselect( \
__clc_as_##i_type##width(x), __clc_as_##i_type##width(y), \
__clc_as_##i_type##width(z))); \
}
__CLC_FLOAT_BITSELECT(float, uint, )
__CLC_FLOAT_BITSELECT(float, uint, 2)
__CLC_FLOAT_BITSELECT(float, uint, 3)
__CLC_FLOAT_BITSELECT(float, uint, 4)
__CLC_FLOAT_BITSELECT(float, uint, 8)
__CLC_FLOAT_BITSELECT(float, uint, 16)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
__CLC_FLOAT_BITSELECT(double, ulong, )
__CLC_FLOAT_BITSELECT(double, ulong, 2)
__CLC_FLOAT_BITSELECT(double, ulong, 3)
__CLC_FLOAT_BITSELECT(double, ulong, 4)
__CLC_FLOAT_BITSELECT(double, ulong, 8)
__CLC_FLOAT_BITSELECT(double, ulong, 16)
#endif
#ifdef cl_khr_fp16
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
__CLC_FLOAT_BITSELECT(half, ushort, )
__CLC_FLOAT_BITSELECT(half, ushort, 2)
__CLC_FLOAT_BITSELECT(half, ushort, 3)
__CLC_FLOAT_BITSELECT(half, ushort, 4)
__CLC_FLOAT_BITSELECT(half, ushort, 8)
__CLC_FLOAT_BITSELECT(half, ushort, 16)
#endif