13#ifndef LLVM_TEXTAPI_ARCHITECTURESET_H 
   14#define LLVM_TEXTAPI_ARCHITECTURESET_H 
   34  const static ArchSetType EndIndexVal =
 
   35      std::numeric_limits<ArchSetType>::max();
 
   36  ArchSetType ArchSet{0};
 
   49    ArchSet |= 1U << 
static_cast<int>(Arch);
 
 
   53    ArchSet &= ~(1U << 
static_cast<int>(Arch));
 
 
   58    return ArchSet & (1U << 
static_cast<int>(Arch));
 
 
   62    return (ArchSet & Archs.ArchSet) == Archs.ArchSet;
 
 
   67  bool empty()
 const { 
return ArchSet == 0; }
 
   69  ArchSetType 
rawValue()
 const { 
return ArchSet; }
 
   72    return has(AK_i386) || 
has(AK_x86_64) || 
has(AK_x86_64h);
 
 
   87    void findNextSetBit() {
 
   88      if (Index == EndIndexVal)
 
   90      while (++Index < 
sizeof(Ty) * 8) {
 
   91        if (*ArchSet & (1UL << Index))
 
  100        : Index(Index), ArchSet(ArchSet) {
 
  101      if (Index != EndIndexVal && !(*ArchSet & (1UL << Index)))
 
 
  119      return std::tie(Index, ArchSet) == std::tie(o.Index, o.ArchSet);
 
 
 
  126    return {ArchSet & o.ArchSet};
 
 
  130    return {ArchSet | o.ArchSet};
 
 
  134    ArchSet |= o.ArchSet;
 
 
  144    return ArchSet == o.ArchSet;
 
 
  148    return ArchSet != o.ArchSet;
 
 
  162  LLVM_ABI operator std::string() 
const;
 
  163  LLVM_ABI operator std::vector<Architecture>() 
const;
 
 
arch_iterator(Ty *ArchSet, ArchSetType Index=0)
bool operator!=(const arch_iterator &o) const
std::forward_iterator_tag iterator_category
arch_iterator & operator++()
bool operator==(const arch_iterator &o) const
std::size_t difference_type
Architecture operator*() const
arch_iterator operator++(int)
constexpr ArchitectureSet(ArchSetType Raw)
static ArchitectureSet All()
arch_iterator< ArchSetType > iterator
ArchSetType rawValue() const
const_iterator end() const
ArchitectureSet clear(Architecture Arch)
constexpr ArchitectureSet()=default
bool operator==(const ArchitectureSet &o) const
bool has(Architecture Arch) const
void set(Architecture Arch)
const_iterator begin() const
bool contains(ArchitectureSet Archs) const
bool operator!=(const ArchitectureSet &o) const
ArchitectureSet operator&(const ArchitectureSet &o)
ArchitectureSet & operator|=(const Architecture &Arch)
ArchitectureSet(Architecture Arch)
LLVM_ABI size_t count() const
ArchitectureSet & operator|=(const ArchitectureSet &o)
arch_iterator< const ArchSetType > const_iterator
ArchitectureSet operator|(const ArchitectureSet &o)
bool operator<(const ArchitectureSet &o) const
LLVM_ABI void print(raw_ostream &OS) const
This class implements an extremely fast bulk output stream that can only output to a stream.
ArchitectureSet operator|(const Architecture &lhs, const Architecture &rhs)
Architecture
Defines the architecture slices that are supported by Text-based Stub files.
LLVM_ABI raw_ostream & operator<<(raw_ostream &OS, Architecture Arch)
This is an optimization pass for GlobalISel generic memory operations.