30 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#include <clc/internal/clc.h>10 11#define _CLC_ANY(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1)12 13#define _CLC_ANY_VEC(TYPE) \14 _CLC_OVERLOAD _CLC_DEF int __clc_any(TYPE v) { \15 return _CLC_ANY(__builtin_reduce_or(v)); \16 }17 18#define _CLC_DEFINE_ANY(TYPE) \19 _CLC_OVERLOAD _CLC_DEF int __clc_any(TYPE v) { return _CLC_ANY(v); } \20 _CLC_ANY_VEC(TYPE##2) \21 _CLC_ANY_VEC(TYPE##3) \22 _CLC_ANY_VEC(TYPE##4) \23 _CLC_ANY_VEC(TYPE##8) \24 _CLC_ANY_VEC(TYPE##16)25 26_CLC_DEFINE_ANY(char)27_CLC_DEFINE_ANY(short)28_CLC_DEFINE_ANY(int)29_CLC_DEFINE_ANY(long)30