summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/Hexagon')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonBlockRanges.cpp4
-rw-r--r--llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp2
-rw-r--r--llvm/lib/Target/Hexagon/RDFGraph.cpp16
-rw-r--r--llvm/lib/Target/Hexagon/RDFGraph.h18
-rw-r--r--llvm/lib/Target/Hexagon/RDFLiveness.cpp8
5 files changed, 24 insertions, 24 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonBlockRanges.cpp b/llvm/lib/Target/Hexagon/HexagonBlockRanges.cpp
index 938bdca054f..44637615b04 100644
--- a/llvm/lib/Target/Hexagon/HexagonBlockRanges.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonBlockRanges.cpp
@@ -234,13 +234,13 @@ HexagonBlockRanges::RegisterSet HexagonBlockRanges::getLiveIns(
RegisterSet LiveIns;
RegisterSet Tmp;
for (auto I : B.liveins()) {
- if (I.LaneMask == ~LaneBitmask(0)) {
+ if (I.LaneMask.all()) {
Tmp.insert({I.PhysReg,0});
continue;
}
for (MCSubRegIndexIterator S(I.PhysReg, &TRI); S.isValid(); ++S) {
LaneBitmask M = TRI.getSubRegIndexLaneMask(S.getSubRegIndex());
- if (M & I.LaneMask)
+ if (!(M & I.LaneMask).none())
Tmp.insert({S.getSubReg(), 0});
}
}
diff --git a/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp b/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
index f0e9c594dbf..55978a63b92 100644
--- a/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
@@ -369,7 +369,7 @@ void HexagonExpandCondsets::updateDeadsInRange(unsigned Reg, LaneBitmask LM,
if (!TargetRegisterInfo::isVirtualRegister(DR) || DR != Reg)
return false;
LaneBitmask SLM = getLaneMask(DR, DSR);
- return (SLM & LM) != 0;
+ return !(SLM & LM).none();
};
// The splitting step will create pairs of predicated definitions without
diff --git a/llvm/lib/Target/Hexagon/RDFGraph.cpp b/llvm/lib/Target/Hexagon/RDFGraph.cpp
index 963b04b2f94..04052b74a04 100644
--- a/llvm/lib/Target/Hexagon/RDFGraph.cpp
+++ b/llvm/lib/Target/Hexagon/RDFGraph.cpp
@@ -30,7 +30,7 @@ namespace llvm {
namespace rdf {
raw_ostream &operator<< (raw_ostream &OS, const PrintLaneMaskOpt &P) {
- if (P.Mask != ~LaneBitmask(0))
+ if (!P.Mask.all())
OS << ':' << PrintLaneMask(P.Mask);
return OS;
}
@@ -662,7 +662,7 @@ bool RegisterAggr::hasAliasOf(RegisterRef RR) const {
RegisterRef NR = normalize(RR);
auto F = Masks.find(NR.Reg);
if (F != Masks.end()) {
- if (F->second & NR.Mask)
+ if (!(F->second & NR.Mask).none())
return true;
}
if (CheckUnits) {
@@ -676,7 +676,7 @@ bool RegisterAggr::hasAliasOf(RegisterRef RR) const {
bool RegisterAggr::hasCoverOf(RegisterRef RR) const {
// Always have a cover for empty lane mask.
RegisterRef NR = normalize(RR);
- if (!NR.Mask)
+ if (NR.Mask.none())
return true;
auto F = Masks.find(NR.Reg);
if (F == Masks.end())
@@ -717,7 +717,7 @@ RegisterAggr &RegisterAggr::clear(RegisterRef RR) {
if (F == Masks.end())
return *this;
LaneBitmask NewM = F->second & ~NR.Mask;
- if (NewM == LaneBitmask(0))
+ if (NewM.none())
Masks.erase(F);
else
F->second = NewM;
@@ -1089,7 +1089,7 @@ RegisterRef DataFlowGraph::normalizeRef(RegisterRef RR) const {
RegisterRef DataFlowGraph::restrictRef(RegisterRef AR, RegisterRef BR) const {
if (AR.Reg == BR.Reg) {
LaneBitmask M = AR.Mask & BR.Mask;
- return M ? RegisterRef(AR.Reg, M) : RegisterRef();
+ return !M.none() ? RegisterRef(AR.Reg, M) : RegisterRef();
}
#ifndef NDEBUG
RegisterRef NAR = normalizeRef(AR);
@@ -1211,7 +1211,7 @@ bool DataFlowGraph::alias(RegisterRef RA, RegisterRef RB) const {
// This can happen when the register has only one unit, or when the
// unit corresponds to explicit aliasing. In such cases, the lane mask
// from RegisterRef should be ignored.
- if (!PA.second || !PB.second)
+ if (PA.second.none() || PB.second.none())
return true;
// At this point the common unit corresponds to a subregister. The lane
@@ -1221,7 +1221,7 @@ bool DataFlowGraph::alias(RegisterRef RA, RegisterRef RB) const {
// while the lane mask of r2 in d1 may be 0b0001.
LaneBitmask LA = PA.second & RA.Mask;
LaneBitmask LB = PB.second & RB.Mask;
- if (LA != 0 && LB != 0) {
+ if (!LA.none() && !LB.none()) {
unsigned Root = *MCRegUnitRootIterator(PA.first, &TRI);
// If register units were guaranteed to only have 1 bit in any lane
// mask, the code below would not be necessary. This is because LA
@@ -1232,7 +1232,7 @@ bool DataFlowGraph::alias(RegisterRef RA, RegisterRef RB) const {
const TargetRegisterClass &RC = *TRI.getMinimalPhysRegClass(Root);
LaneBitmask MaskA = TRI.reverseComposeSubRegIndexLaneMask(SubA, LA);
LaneBitmask MaskB = TRI.reverseComposeSubRegIndexLaneMask(SubB, LB);
- if (MaskA & MaskB & RC.LaneMask)
+ if (!(MaskA & MaskB & RC.LaneMask).none())
return true;
}
diff --git a/llvm/lib/Target/Hexagon/RDFGraph.h b/llvm/lib/Target/Hexagon/RDFGraph.h
index 2e9a6cc6720..b279752a21f 100644
--- a/llvm/lib/Target/Hexagon/RDFGraph.h
+++ b/llvm/lib/Target/Hexagon/RDFGraph.h
@@ -403,9 +403,9 @@ namespace rdf {
LaneBitmask Mask;
RegisterRef() : RegisterRef(0) {}
- explicit RegisterRef(RegisterId R, LaneBitmask M = ~LaneBitmask(0))
- : Reg(R), Mask(R != 0 ? M : 0) {}
- operator bool() const { return Reg != 0 && Mask != LaneBitmask(0); }
+ explicit RegisterRef(RegisterId R, LaneBitmask M = LaneBitmask::getAll())
+ : Reg(R), Mask(R != 0 ? M : LaneBitmask::getNone()) {}
+ operator bool() const { return Reg != 0 && !Mask.none(); }
bool operator== (const RegisterRef &RR) const {
return Reg == RR.Reg && Mask == RR.Mask;
}
@@ -458,7 +458,7 @@ namespace rdf {
uint32_t find(T Val) const {
auto F = llvm::find(Map, Val);
assert(F != Map.end());
- return *F;
+ return F - Map.begin();
}
private:
std::vector<T> Map;
@@ -468,15 +468,15 @@ namespace rdf {
LaneMaskIndex() = default;
LaneBitmask getLaneMaskForIndex(uint32_t K) const {
- return K == 0 ? ~LaneBitmask(0) : get(K);
+ return K == 0 ? LaneBitmask::getAll() : get(K);
}
uint32_t getIndexForLaneMask(LaneBitmask LM) {
- assert(LM != LaneBitmask(0));
- return LM == ~LaneBitmask(0) ? 0 : insert(LM);
+ assert(!LM.none());
+ return LM.all() ? 0 : insert(LM);
}
uint32_t getIndexForLaneMask(LaneBitmask LM) const {
- assert(LM != LaneBitmask(0));
- return LM == ~LaneBitmask(0) ? 0 : find(LM);
+ assert(!LM.none());
+ return LM.all() ? 0 : find(LM);
}
PackedRegisterRef pack(RegisterRef RR) {
return { RR.Reg, getIndexForLaneMask(RR.Mask) };
diff --git a/llvm/lib/Target/Hexagon/RDFLiveness.cpp b/llvm/lib/Target/Hexagon/RDFLiveness.cpp
index 55b1de02155..3563d056692 100644
--- a/llvm/lib/Target/Hexagon/RDFLiveness.cpp
+++ b/llvm/lib/Target/Hexagon/RDFLiveness.cpp
@@ -659,7 +659,7 @@ void Liveness::computeLiveIns() {
RegisterRef UR = DFG.normalizeRef(getRestrictedRegRef(PUA));
for (const std::pair<RegisterId,NodeRefSet> &T : RUs) {
// Check if T.first aliases UR?
- LaneBitmask M = 0;
+ LaneBitmask M;
for (std::pair<NodeId,LaneBitmask> P : T.second)
M |= P.second;
@@ -710,7 +710,7 @@ void Liveness::computeLiveIns() {
}
do {
LaneBitmask M = TRI.getSubRegIndexLaneMask(S.getSubRegIndex());
- if (M & P.second)
+ if (!(M & P.second).none())
LV.push_back(RegisterRef(S.getSubReg()));
++S;
} while (S.isValid());
@@ -759,7 +759,7 @@ void Liveness::resetKills(MachineBasicBlock *B) {
}
do {
LaneBitmask M = TRI.getSubRegIndexLaneMask(S.getSubRegIndex());
- if (M & I.LaneMask)
+ if (!(M & I.LaneMask).none())
LV.set(S.getSubReg());
++S;
} while (S.isValid());
@@ -1001,7 +1001,7 @@ void Liveness::traverse(MachineBasicBlock *B, RefMap &LiveIn) {
RegisterAggr &Local = LiveMap[B];
RefMap &LON = PhiLON[B];
for (auto &R : LON) {
- LaneBitmask M = 0;
+ LaneBitmask M;
for (auto P : R.second)
M |= P.second;
Local.insert(RegisterRef(R.first,M));
OpenPOWER on IntegriCloud