mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
461e54845b
Similar to what some other targets have done. This information could be reused by other frontends so doesn't make sense to live in clang. -Rename CK_Generic to CK_None to better reflect its illegalness. -Move function for translating from string to enum into llvm. -Call checkCPUKind directly from the string to enum translation and update CPU kind to CK_None accordinly. Caller will use CK_None as sentinel for bad CPU. I'm planning to move all the CPU to feature mapping out next. As part of that I want to devise a better way to express CPUs inheriting features from an earlier CPU. Allowing this to be expressed in a less rigid way than just falling through a switch. Or using gotos as we've had to do lately. Differential Revision: https://reviews.llvm.org/D81439
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
//===-- X86TargetParser - Parser for X86 features ---------------*- 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 a target parser to recognise X86 hardware features.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_SUPPORT_X86TARGETPARSERCOMMON_H
|
|
#define LLVM_SUPPORT_X86TARGETPARSERCOMMON_H
|
|
|
|
#include "llvm/ADT/SmallVector.h"
|
|
|
|
namespace llvm {
|
|
class StringRef;
|
|
|
|
namespace X86 {
|
|
|
|
enum CPUKind {
|
|
CK_None,
|
|
#define PROC(ENUM, STRING, IS64BIT) CK_##ENUM,
|
|
#include "llvm/Support/X86TargetParser.def"
|
|
};
|
|
|
|
/// Parse \p CPU string into a CPUKind. Will only accept 64-bit capable CPUs if
|
|
/// \p Only64Bit is true.
|
|
CPUKind parseArchX86(StringRef CPU, bool Only64Bit = false);
|
|
|
|
/// Provide a list of valid CPU names. If \p Only64Bit is true, the list will
|
|
/// only contain 64-bit capable CPUs.
|
|
void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values,
|
|
bool ArchIs32Bit);
|
|
|
|
} // namespace X86
|
|
} // namespace llvm
|
|
|
|
#endif
|