Files
gps/tools/local/circt/include/llvm/TargetParser/XtensaTargetParser.h
T
2026-07-12 11:01:51 +03:00

81 lines
2.2 KiB
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
//
//===----------------------------------------------------------------------===//
///
/// \file
/// This file implements a target parser to recognise Xtensa hardware features.
///
//===----------------------------------------------------------------------===//
#ifndef LLVM_TARGETPARSER_XTENSATARGETPARSER_H
#define LLVM_TARGETPARSER_XTENSATARGETPARSER_H
#include "llvm/TargetParser/Triple.h"
namespace llvm {
class StringRef;
namespace Xtensa {
enum CPUKind : unsigned {
#define XTENSA_CPU(ENUM, NAME, FEATURES) CK_##ENUM,
#include "XtensaTargetParser.def"
};
enum XtensaFeatureKind : uint64_t {
XF_INVALID = 0,
XF_NONE = 1,
XF_FP = 1 << 1,
XF_WINDOWED = 1 << 2,
XF_BOOLEAN = 1 << 3,
XF_DENSITY = 1 << 4,
XF_LOOP = 1 << 5,
XF_SEXT = 1 << 6,
XF_NSA = 1 << 7,
XF_CLAMPS = 1 << 8,
XF_MINMAX = 1 << 9,
XF_MAC16 = 1 << 10,
XF_MUL32 = 1 << 11,
XF_MUL32HIGH = 1 << 12,
XF_DIV32 = 1 << 13,
XF_MUL16 = 1 << 14,
XF_DFPACCEL = 1 << 15,
XF_S32C1I = 1 << 16,
XF_THREADPTR = 1 << 17,
XF_EXTENDEDL32R = 1 << 18,
XF_DATACACHE = 1 << 19,
XF_DEBUG = 1 << 20,
XF_EXCEPTION = 1 << 21,
XF_HIGHPRIINTERRUPTS = 1 << 22,
XF_HIGHPRIINTERRUPTSLEVEL3 = 1 << 23,
XF_HIGHPRIINTERRUPTSLEVEL4 = 1 << 24,
XF_HIGHPRIINTERRUPTSLEVEL5 = 1 << 25,
XF_HIGHPRIINTERRUPTSLEVEL6 = 1 << 26,
XF_HIGHPRIINTERRUPTSLEVEL7 = 1 << 27,
XF_COPROCESSOR = 1 << 28,
XF_INTERRUPT = 1 << 29,
XF_RVECTOR = 1 << 30,
XF_TIMERS1 = 1ULL << 31,
XF_TIMERS2 = 1ULL << 32,
XF_TIMERS3 = 1ULL << 33,
XF_PRID = 1ULL << 34,
XF_REGPROTECT = 1ULL << 35,
XF_MISCSR = 1ULL << 36,
XF_ESP32S2OPS = 1ULL << 37
};
LLVM_ABI CPUKind parseCPUKind(StringRef CPU);
LLVM_ABI StringRef getBaseName(StringRef CPU);
LLVM_ABI void getCPUFeatures(StringRef CPU,
SmallVectorImpl<StringRef> &Features);
LLVM_ABI void fillValidCPUList(SmallVectorImpl<StringRef> &Values);
} // namespace Xtensa
} // namespace llvm
#endif // LLVM_SUPPORT_XTENSATARGETPARSER_H