diff options
| author | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-14 09:09:29 +0000 |
|---|---|---|
| committer | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-14 09:09:29 +0000 |
| commit | 579cf1d03fb932083e6317967d1613d5c2587fb6 (patch) | |
| tree | 629f039935382a2a7391bce9253f6c9968159049 /miasm/runtime/int_lib.h | |
| parent | 51c15d3ea2e16d4fc5f0f01a3b9befc66b1f982e (diff) | |
| download | focaccia-miasm-ta/nix.tar.gz focaccia-miasm-ta/nix.zip | |
Convert to src-layout ta/nix
Diffstat (limited to 'miasm/runtime/int_lib.h')
| -rw-r--r-- | miasm/runtime/int_lib.h | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/miasm/runtime/int_lib.h b/miasm/runtime/int_lib.h deleted file mode 100644 index 873296d4..00000000 --- a/miasm/runtime/int_lib.h +++ /dev/null @@ -1,148 +0,0 @@ -//===-- int_lib.h - configuration header for compiler-rt -----------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// -// -// This file is a configuration header for compiler-rt. -// This file is not part of the interface of this library. -// -//===----------------------------------------------------------------------===// - -#ifndef INT_LIB_H -#define INT_LIB_H - -// Assumption: Signed integral is 2's complement. -// Assumption: Right shift of signed negative is arithmetic shift. -// Assumption: Endianness is little or big (not mixed). - -// ABI macro definitions - -#if __ARM_EABI__ -#ifdef COMPILER_RT_ARMHF_TARGET -#define COMPILER_RT_ABI -#else -#define COMPILER_RT_ABI __attribute__((__pcs__("aapcs"))) -#endif -#else -#define COMPILER_RT_ABI -#endif - -#define AEABI_RTABI __attribute__((__pcs__("aapcs"))) - -#if defined(_MSC_VER) && !defined(__clang__) -#define ALWAYS_INLINE __forceinline -#define NOINLINE __declspec(noinline) -#define NORETURN __declspec(noreturn) -#define UNUSED -#else -#define ALWAYS_INLINE __attribute__((always_inline)) -#define NOINLINE __attribute__((noinline)) -#define NORETURN __attribute__((noreturn)) -#define UNUSED __attribute__((unused)) -#endif - -#define STR(a) #a -#define XSTR(a) STR(a) -#define SYMBOL_NAME(name) XSTR(__USER_LABEL_PREFIX__) #name - -#if defined(__ELF__) || defined(__MINGW32__) || defined(__CYGWIN__) || defined(__wasm__) -#define COMPILER_RT_ALIAS(name, aliasname) \ - COMPILER_RT_ABI __typeof(name) aliasname __attribute__((__alias__(#name))); -#elif defined(__APPLE__) -#if defined(VISIBILITY_HIDDEN) -#define COMPILER_RT_ALIAS_VISIBILITY(name) \ - __asm__(".private_extern " SYMBOL_NAME(name)); -#else -#define COMPILER_RT_ALIAS_VISIBILITY(name) -#endif -#define COMPILER_RT_ALIAS(name, aliasname) \ - __asm__(".globl " SYMBOL_NAME(aliasname)); \ - COMPILER_RT_ALIAS_VISIBILITY(aliasname) \ - __asm__(SYMBOL_NAME(aliasname) " = " SYMBOL_NAME(name)); \ - COMPILER_RT_ABI __typeof(name) aliasname; -#elif defined(_WIN32) -#define COMPILER_RT_ALIAS(name, aliasname) -#else -#error Unsupported target -#endif - -#if defined(__NetBSD__) && (defined(_KERNEL) || defined(_STANDALONE)) -// -// Kernel and boot environment can't use normal headers, -// so use the equivalent system headers. -// -#include <machine/limits.h> -#include <sys/stdint.h> -#include <sys/types.h> -#else -// Include the standard compiler builtin headers we use functionality from. -#include <float.h> -#include <limits.h> -#include <stdbool.h> -#include <stdint.h> -#endif - -// Include the commonly used internal type definitions. -#include "int_types.h" - -// Include internal utility function declarations. -#include "int_util.h" - -COMPILER_RT_ABI si_int __paritysi2(si_int a); -COMPILER_RT_ABI si_int __paritydi2(di_int a); - -COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b); -COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b); -COMPILER_RT_ABI su_int __udivsi3(su_int n, su_int d); - -COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int *rem); -COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int *rem); -#ifdef CRT_HAS_128BIT -COMPILER_RT_ABI si_int __clzti2(ti_int a); -COMPILER_RT_ABI tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem); -#endif - -// Definitions for builtins unavailable on MSVC -#if defined(_MSC_VER) && !defined(__clang__) -#include <intrin.h> - -uint32_t __inline __builtin_ctz(uint32_t value) { - unsigned long trailing_zero = 0; - if (_BitScanForward(&trailing_zero, value)) - return trailing_zero; - return 32; -} - -uint32_t __inline __builtin_clz(uint32_t value) { - unsigned long leading_zero = 0; - if (_BitScanReverse(&leading_zero, value)) - return 31 - leading_zero; - return 32; -} - -#if defined(_M_ARM) || defined(_M_X64) -uint32_t __inline __builtin_clzll(uint64_t value) { - unsigned long leading_zero = 0; - if (_BitScanReverse64(&leading_zero, value)) - return 63 - leading_zero; - return 64; -} -#else -uint32_t __inline __builtin_clzll(uint64_t value) { - if (value == 0) - return 64; - uint32_t msh = (uint32_t)(value >> 32); - uint32_t lsh = (uint32_t)(value & 0xFFFFFFFF); - if (msh != 0) - return __builtin_clz(msh); - return 32 + __builtin_clz(lsh); -} -#endif - -#define __builtin_clzl __builtin_clzll -#endif // defined(_MSC_VER) && !defined(__clang__) - -#endif // INT_LIB_H |