LLVM  10.0.0svn
ScalableSize.h
Go to the documentation of this file.
1 //===- ScalableSize.h - Scalable vector size info ---------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file provides a struct that can be used to query the size of IR types
10 // which may be scalable vectors. It provides convenience operators so that
11 // it can be used in much the same way as a single scalar value.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_SUPPORT_SCALABLESIZE_H
16 #define LLVM_SUPPORT_SCALABLESIZE_H
17 
18 namespace llvm {
19 
20 class ElementCount {
21 public:
22  unsigned Min; // Minimum number of vector elements.
23  bool Scalable; // If true, NumElements is a multiple of 'Min' determined
24  // at runtime rather than compile time.
25 
26  ElementCount(unsigned Min, bool Scalable)
27  : Min(Min), Scalable(Scalable) {}
28 
29  ElementCount operator*(unsigned RHS) {
30  return { Min * RHS, Scalable };
31  }
32  ElementCount operator/(unsigned RHS) {
33  return { Min / RHS, Scalable };
34  }
35 
36  bool operator==(const ElementCount& RHS) const {
37  return Min == RHS.Min && Scalable == RHS.Scalable;
38  }
39  bool operator!=(const ElementCount& RHS) const {
40  return !(*this == RHS);
41  }
42 };
43 
44 } // end namespace llvm
45 
46 #endif // LLVM_SUPPORT_SCALABLESIZE_H
This class represents lattice values for constants.
Definition: AllocatorList.h:23
bool operator!=(const ElementCount &RHS) const
Definition: ScalableSize.h:39
ElementCount operator*(unsigned RHS)
Definition: ScalableSize.h:29
ElementCount(unsigned Min, bool Scalable)
Definition: ScalableSize.h:26
bool operator==(const ElementCount &RHS) const
Definition: ScalableSize.h:36
ElementCount operator/(unsigned RHS)
Definition: ScalableSize.h:32