brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 29f6d68 Raw
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_ALL(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1)12 13#define _CLC_ALL_VEC(TYPE)                                                     \14  _CLC_OVERLOAD _CLC_DEF int __clc_all(TYPE v) {                               \15    return _CLC_ALL(__builtin_reduce_and(v));                                  \16  }17 18#define _CLC_DEFINE_ALL(TYPE)                                                  \19  _CLC_OVERLOAD _CLC_DEF int __clc_all(TYPE v) { return _CLC_ALL(v); }         \20  _CLC_ALL_VEC(TYPE##2)                                                        \21  _CLC_ALL_VEC(TYPE##3)                                                        \22  _CLC_ALL_VEC(TYPE##4)                                                        \23  _CLC_ALL_VEC(TYPE##8)                                                        \24  _CLC_ALL_VEC(TYPE##16)25 26_CLC_DEFINE_ALL(char)27_CLC_DEFINE_ALL(short)28_CLC_DEFINE_ALL(int)29_CLC_DEFINE_ALL(long)30