summaryrefslogtreecommitdiff
path: root/include/llvm/MC/LaneBitmask.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/MC/LaneBitmask.h')
-rw-r--r--include/llvm/MC/LaneBitmask.h15
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());
});