initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
//===-- cpu_model_common.c - Utilities for cpu model detection ----*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements common utilities for runtime cpu model detection.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef COMPILER_RT_LIB_BUILTINS_CPU_MODEL_COMMON_H
|
||||
#define COMPILER_RT_LIB_BUILTINS_CPU_MODEL_COMMON_H
|
||||
|
||||
#define bool int
|
||||
#define true 1
|
||||
#define false 0
|
||||
|
||||
#ifndef __has_attribute
|
||||
#define __has_attribute(attr) 0
|
||||
#endif
|
||||
|
||||
#if __has_attribute(constructor)
|
||||
#if __GNUC__ >= 9
|
||||
// Ordinarily init priorities below 101 are disallowed as they are reserved for
|
||||
// the implementation. However, we are the implementation, so silence the
|
||||
// diagnostic, since it doesn't apply to us.
|
||||
#pragma GCC diagnostic ignored "-Wprio-ctor-dtor"
|
||||
#endif
|
||||
// We're choosing init priority 90 to force our constructors to run before any
|
||||
// constructors in the end user application (starting at priority 101). This
|
||||
// value matches the libgcc choice for the same functions.
|
||||
#ifdef _WIN32
|
||||
// Contructor that replaces the ifunc runs currently with prio 10, see
|
||||
// the LowerIFuncPass. The resolver of FMV depends on the cpu features so set
|
||||
// the priority to 9.
|
||||
#define CONSTRUCTOR_PRIORITY 9
|
||||
#else
|
||||
#define CONSTRUCTOR_PRIORITY 90
|
||||
#endif
|
||||
#define CONSTRUCTOR_ATTRIBUTE __attribute__((constructor(CONSTRUCTOR_PRIORITY)))
|
||||
#else
|
||||
#define CONSTRUCTOR_ATTRIBUTE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user