diff options
Diffstat (limited to 'include/llvm/MC/LaneBitmask.h')
-rw-r--r-- | include/llvm/MC/LaneBitmask.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/include/llvm/MC/LaneBitmask.h b/include/llvm/MC/LaneBitmask.h index 73b987b074dba..8c0b4ecb8fd40 100644 --- a/include/llvm/MC/LaneBitmask.h +++ b/include/llvm/MC/LaneBitmask.h @@ -73,9 +73,16 @@ namespace llvm { constexpr Type getAsInteger() const { return Mask; } - static LaneBitmask getNone() { return LaneBitmask(0); } - static LaneBitmask getAll() { return ~LaneBitmask(0); } - static LaneBitmask getLane(unsigned Lane) { + unsigned getNumLanes() const { + return countPopulation(Mask); + } + unsigned getHighestLane() const { + return Log2_32(Mask); + } + + static constexpr LaneBitmask getNone() { return LaneBitmask(0); } + static constexpr LaneBitmask getAll() { return ~LaneBitmask(0); } + static constexpr LaneBitmask getLane(unsigned Lane) { return LaneBitmask(Type(1) << Lane); } @@ -84,7 +91,7 @@ namespace llvm { }; /// Create Printable object to print LaneBitmasks on a \ref raw_ostream. - static LLVM_ATTRIBUTE_UNUSED Printable PrintLaneMask(LaneBitmask LaneMask) { + inline Printable PrintLaneMask(LaneBitmask LaneMask) { return Printable([LaneMask](raw_ostream &OS) { OS << format(LaneBitmask::FormatStr, LaneMask.getAsInteger()); }); |