llvm/clang/include/clang/Basic/TargetBuiltins.h

//===--- TargetBuiltins.h - Target specific builtin IDs ---------*- 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
/// Enumerates target-specific builtins in their own namespaces within
/// namespace ::clang.
///
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
#define LLVM_CLANG_BASIC_TARGETBUILTINS_H

#include <algorithm>
#include <stdint.h>
#include "clang/Basic/Builtins.h"
#include "llvm/Support/MathExtras.h"
#undef PPC

namespace clang {

  namespace NEON {
  enum {};
  }

  /// ARM builtins
  namespace ARM {
    enum {};
  }

  namespace SVE {
  enum {};
  }

  namespace SME {
  enum {};
  }

  /// AArch64 builtins
  namespace AArch64 {
  enum {};
  }

  /// BPF builtins
  namespace BPF {
  enum {};
  }

  /// PPC builtins
  namespace PPC {
    enum {};
  }

  /// NVPTX builtins
  namespace NVPTX {
    enum {};
  }

  /// AMDGPU builtins
  namespace AMDGPU {
  enum {};
  }

  /// X86 builtins
  namespace X86 {
  enum {};
  }

  /// VE builtins
  namespace VE {
  enum {};
  }

  namespace RISCVVector {
  enum {};
  }

  /// RISCV builtins
  namespace RISCV {
  enum {};
  } // namespace RISCV

  /// LoongArch builtins
  namespace LoongArch {
  enum {};
  } // 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.
  class NeonTypeFlags {};

  // Shared between SVE/SME and NEON
  enum ImmCheckType {};

  /// Flags to identify the types for overloaded SVE builtins.
  class SVETypeFlags {};

  /// Hexagon builtins
  namespace Hexagon {
    enum {};
  }

  /// MIPS builtins
  namespace Mips {
    enum {};
  }

  /// XCore builtins
  namespace XCore {
    enum {};
  }

  /// SystemZ builtins
  namespace SystemZ {
    enum {};
  }

  /// WebAssembly builtins
  namespace WebAssembly {
    enum {};
  }

  static constexpr uint64_t LargestBuiltinID =;

} // end namespace clang.

#endif