[TableGen] Make CheckImmAllOnesVMatcher and CheckImmAllZerosVMatcher contradictory matchers.

This improves X86 factoring a little bit.

llvm-svn: 355785
This commit is contained in:
Craig Topper 2019-03-10 06:44:09 +00:00
parent 1a872f2b15
commit a2b144fc74
2 changed files with 15 additions and 0 deletions

View File

@ -412,3 +412,16 @@ bool CheckValueTypeMatcher::isContradictoryImpl(const Matcher *M) const {
return false;
}
bool CheckImmAllOnesVMatcher::isContradictoryImpl(const Matcher *M) const {
// AllZeros is contradictory.
if (const auto *CIAZVM = dyn_cast<CheckImmAllZerosVMatcher>(M))
return true;
return false;
}
bool CheckImmAllZerosVMatcher::isContradictoryImpl(const Matcher *M) const {
// AllOnes is contradictory.
if (const auto *CIAOVM = dyn_cast<CheckImmAllOnesVMatcher>(M))
return true;
return false;
}

View File

@ -770,6 +770,7 @@ public:
private:
void printImpl(raw_ostream &OS, unsigned indent) const override;
bool isEqualImpl(const Matcher *M) const override { return true; }
bool isContradictoryImpl(const Matcher *M) const override;
};
/// CheckImmAllZerosVMatcher - This check if the current node is an build vector
@ -785,6 +786,7 @@ public:
private:
void printImpl(raw_ostream &OS, unsigned indent) const override;
bool isEqualImpl(const Matcher *M) const override { return true; }
bool isContradictoryImpl(const Matcher *M) const override;
};
/// CheckFoldableChainNodeMatcher - This checks to see if the current node