diff options
author | thegeorg <[email protected]> | 2022-11-07 19:34:08 +0300 |
---|---|---|
committer | thegeorg <[email protected]> | 2022-11-07 19:34:08 +0300 |
commit | 50f76e264c70a223a34b24aa59e97bff97128f4c (patch) | |
tree | e604247a10f09df6158c172577b9bfa431f1e1b5 /contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h | |
parent | 278a58c5af63dbd7f7a6d8b8d92dc246651242da (diff) |
Switch fuzz tests to contrib/libs/libfuzzer
Diffstat (limited to 'contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h')
-rw-r--r-- | contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h b/contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h deleted file mode 100644 index c5bec9787d8..00000000000 --- a/contrib/libs/libfuzzer12/FuzzerBuiltinsMsvc.h +++ /dev/null @@ -1,72 +0,0 @@ -//===- FuzzerBuiltinsMSVC.h - Internal header for builtins ------*- C++ -* ===// -// -// 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 -// -//===----------------------------------------------------------------------===// -// Wrapper functions and marcos that use intrinsics instead of builtin functions -// which cannot be compiled by MSVC. -//===----------------------------------------------------------------------===// - -#ifndef LLVM_FUZZER_BUILTINS_MSVC_H -#define LLVM_FUZZER_BUILTINS_MSVC_H - -#include "FuzzerPlatform.h" - -#if LIBFUZZER_MSVC -#include <intrin.h> -#include <cstdint> -#include <cstdlib> - -// __builtin_return_address() cannot be compiled with MSVC. Use the equivalent -// from <intrin.h> -#define GET_CALLER_PC() _ReturnAddress() - -namespace fuzzer { - -inline uint8_t Bswap(uint8_t x) { return x; } -// Use alternatives to __builtin functions from <stdlib.h> and <intrin.h> on -// Windows since the builtins are not supported by MSVC. -inline uint16_t Bswap(uint16_t x) { return _byteswap_ushort(x); } -inline uint32_t Bswap(uint32_t x) { return _byteswap_ulong(x); } -inline uint64_t Bswap(uint64_t x) { return _byteswap_uint64(x); } - -// The functions below were mostly copied from -// compiler-rt/lib/builtins/int_lib.h which defines the __builtin functions used -// outside of Windows. -inline uint32_t Clzll(uint64_t X) { - unsigned long LeadZeroIdx = 0; - -#if !defined(_M_ARM) && !defined(_M_X64) - // Scan the high 32 bits. - if (_BitScanReverse(&LeadZeroIdx, static_cast<unsigned long>(X >> 32))) - return static_cast<int>(63 - (LeadZeroIdx + 32)); // Create a bit offset from the MSB. - // Scan the low 32 bits. - if (_BitScanReverse(&LeadZeroIdx, static_cast<unsigned long>(X))) - return static_cast<int>(63 - LeadZeroIdx); - -#else - if (_BitScanReverse64(&LeadZeroIdx, X)) return 63 - LeadZeroIdx; -#endif - return 64; -} - -inline uint32_t Clz(uint32_t X) { - unsigned long LeadZeroIdx = 0; - if (_BitScanReverse(&LeadZeroIdx, X)) return 31 - LeadZeroIdx; - return 32; -} - -inline int Popcountll(unsigned long long X) { -#if !defined(_M_ARM) && !defined(_M_X64) - return __popcnt(X) + __popcnt(X >> 32); -#else - return __popcnt64(X); -#endif -} - -} // namespace fuzzer - -#endif // LIBFUZER_MSVC -#endif // LLVM_FUZZER_BUILTINS_MSVC_H |