diff options
Diffstat (limited to 'contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h')
-rw-r--r-- | contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h b/contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h index d4ea8e98b2e3..c31834fb52a9 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h +++ b/contrib/llvm-project/clang/include/clang/Basic/TargetBuiltins.h @@ -27,6 +27,7 @@ namespace clang { enum { LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, #define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID, #include "clang/Basic/BuiltinsNEON.def" FirstTSBuiltin }; @@ -47,11 +48,22 @@ namespace clang { enum { LastNEONBuiltin = NEON::FirstTSBuiltin - 1, #define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID, #include "clang/Basic/BuiltinsSVE.def" FirstTSBuiltin, }; } + namespace SME { + enum { + LastSVEBuiltin = SVE::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID, +#include "clang/Basic/BuiltinsSME.def" + FirstTSBuiltin, + }; + } + /// AArch64 builtins namespace AArch64 { enum { @@ -59,6 +71,8 @@ namespace clang { LastNEONBuiltin = NEON::FirstTSBuiltin - 1, FirstSVEBuiltin = NEON::FirstTSBuiltin, LastSVEBuiltin = SVE::FirstTSBuiltin - 1, + FirstSMEBuiltin = SVE::FirstTSBuiltin, + LastSMEBuiltin = SME::FirstTSBuiltin - 1, #define BUILTIN(ID, TYPE, ATTRS) BI##ID, #include "clang/Basic/BuiltinsAArch64.def" LastTSBuiltin @@ -121,7 +135,12 @@ namespace clang { /// VE builtins namespace VE { - enum { LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, LastTSBuiltin }; + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsVE.def" + LastTSBuiltin + }; } namespace RISCVVector { @@ -145,6 +164,16 @@ namespace clang { }; } // namespace RISCV + /// LoongArch builtins + namespace LoongArch { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsLoongArch.def" + LastTSBuiltin + }; + } // namespace LoongArch + /// Flags to identify the types for overloaded Neon builtins. /// /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h. @@ -227,10 +256,10 @@ namespace clang { }; SVETypeFlags(uint64_t F) : Flags(F) { - EltTypeShift = llvm::countTrailingZeros(EltTypeMask); - MemEltTypeShift = llvm::countTrailingZeros(MemEltTypeMask); - MergeTypeShift = llvm::countTrailingZeros(MergeTypeMask); - SplatOperandMaskShift = llvm::countTrailingZeros(SplatOperandMask); + EltTypeShift = llvm::countr_zero(EltTypeMask); + MemEltTypeShift = llvm::countr_zero(MemEltTypeMask); + MergeTypeShift = llvm::countr_zero(MergeTypeMask); + SplatOperandMaskShift = llvm::countr_zero(SplatOperandMask); } EltType getEltType() const { @@ -262,7 +291,9 @@ namespace clang { bool isZExtReturn() const { return Flags & IsZExtReturn; } bool isByteIndexed() const { return Flags & IsByteIndexed; } bool isOverloadNone() const { return Flags & IsOverloadNone; } - bool isOverloadWhile() const { return Flags & IsOverloadWhile; } + bool isOverloadWhileOrMultiVecCvt() const { + return Flags & IsOverloadWhileOrMultiVecCvt; + } bool isOverloadDefault() const { return !(Flags & OverloadKindMask); } bool isOverloadWhileRW() const { return Flags & IsOverloadWhileRW; } bool isOverloadCvt() const { return Flags & IsOverloadCvt; } @@ -272,11 +303,15 @@ namespace clang { bool isInsertOp1SVALL() const { return Flags & IsInsertOp1SVALL; } bool isGatherPrefetch() const { return Flags & IsGatherPrefetch; } bool isReverseUSDOT() const { return Flags & ReverseUSDOT; } + bool isReverseMergeAnyBinOp() const { return Flags & ReverseMergeAnyBinOp; } + bool isReverseMergeAnyAccOp() const { return Flags & ReverseMergeAnyAccOp; } bool isUndef() const { return Flags & IsUndef; } bool isTupleCreate() const { return Flags & IsTupleCreate; } bool isTupleGet() const { return Flags & IsTupleGet; } bool isTupleSet() const { return Flags & IsTupleSet; } - + bool isReadZA() const { return Flags & IsReadZA; } + bool isWriteZA() const { return Flags & IsWriteZA; } + bool isReductionQV() const { return Flags & IsReductionQV; } uint64_t getBits() const { return Flags; } bool isFlagSet(uint64_t Flag) const { return Flags & Flag; } }; |