brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · dde3948 Raw
55 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#if __CLC_FPSIZE == 3210 11_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_logb(__CLC_GENTYPE x) {12  __CLC_INTN ax = __CLC_AS_INTN(x) & EXSIGNBIT_SP32;13  __CLC_GENTYPE s = __CLC_CONVERT_GENTYPE(LOG_MAGIC_NUM_SP32 - __clc_clz(ax));14  __CLC_GENTYPE r =15      __CLC_CONVERT_GENTYPE((ax >> EXPSHIFTBITS_SP32) - EXPBIAS_SP32);16  r = ax >= PINFBITPATT_SP32 ? __CLC_AS_GENTYPE(ax) : r;17  r = ax < 0x00800000 ? s : r;18  r = ax == 0 ? __CLC_AS_GENTYPE((__CLC_INTN)NINFBITPATT_SP32) : r;19  return r;20}21 22#endif23 24#if __CLC_FPSIZE == 6425 26_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_logb(__CLC_GENTYPE x) {27  __CLC_LONGN ax = __CLC_AS_LONGN(x) & EXSIGNBIT_DP64;28  __CLC_GENTYPE s = __CLC_CONVERT_GENTYPE(LOG_MAGIC_NUM_DP64 - __clc_clz(ax));29  __CLC_GENTYPE r =30      __CLC_CONVERT_GENTYPE((ax >> EXPSHIFTBITS_DP64) - EXPBIAS_DP64);31  r = ax >= PINFBITPATT_DP64 ? __CLC_AS_GENTYPE(ax) : r;32  r = ax < 0x0010000000000000L ? s : r;33  r = ax == 0L ? __CLC_AS_GENTYPE((__CLC_LONGN)NINFBITPATT_DP64) : r;34  return r;35}36 37#endif38 39#if __CLC_FPSIZE == 1640 41_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_logb(__CLC_GENTYPE x) {42  __CLC_SHORTN ax = __CLC_AS_SHORTN(x) & (__CLC_SHORTN)EXSIGNBIT_FP16;43  __CLC_GENTYPE s = __CLC_CONVERT_GENTYPE((__CLC_SHORTN)LOG_MAGIC_NUM_FP16 -44                                          (__CLC_SHORTN)__clc_clz(ax));45  __CLC_GENTYPE r = __CLC_CONVERT_GENTYPE(46      (ax >> (__CLC_SHORTN)EXPSHIFTBITS_FP16) - (__CLC_SHORTN)EXPBIAS_FP16);47  r = ax >= (__CLC_SHORTN)PINFBITPATT_FP16 ? __CLC_AS_GENTYPE(ax) : r;48  r = ax < (__CLC_SHORTN)0x0400 ? s : r;49  r = ax == (__CLC_SHORTN)0 ? __CLC_AS_GENTYPE((__CLC_SHORTN)NINFBITPATT_FP16)50                            : r;51  return r;52}53 54#endif55