forked from OSchip/llvm-project
DAG: Add helper for testing constant values
There are helpers for testing for constant or constant build_vector, and for splat ConstantFP vectors, but not for a constantfp or non-splat ConstantFP vector. llvm-svn: 290317
This commit is contained in:
parent
3de76b9dc8
commit
485dacd90c
|
@ -1370,6 +1370,16 @@ public:
|
|||
/// Test whether the given value is a constant int or similar node.
|
||||
SDNode *isConstantIntBuildVectorOrConstantInt(SDValue N);
|
||||
|
||||
/// Test whether the given value is a constant FP or similar node.
|
||||
SDNode *isConstantFPBuildVectorOrConstantFP(SDValue N);
|
||||
|
||||
/// \returns true if \p N is any kind of constant or build_vector of
|
||||
/// constants, int or float. If a vector, it may not necessarily be a splat.
|
||||
inline bool isConstantValueOfAnyType(SDValue N) {
|
||||
return isConstantIntBuildVectorOrConstantInt(N) ||
|
||||
isConstantFPBuildVectorOrConstantFP(N);
|
||||
}
|
||||
|
||||
private:
|
||||
void InsertNode(SDNode *N);
|
||||
bool RemoveNodeFromCSEMaps(SDNode *N);
|
||||
|
|
|
@ -7517,6 +7517,16 @@ SDNode *SelectionDAG::isConstantIntBuildVectorOrConstantInt(SDValue N) {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *SelectionDAG::isConstantFPBuildVectorOrConstantFP(SDValue N) {
|
||||
if (isa<ConstantFPSDNode>(N))
|
||||
return N.getNode();
|
||||
|
||||
if (ISD::isBuildVectorOfConstantFPSDNodes(N.getNode()))
|
||||
return N.getNode();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
static void checkForCyclesHelper(const SDNode *N,
|
||||
SmallPtrSetImpl<const SDNode*> &Visited,
|
||||
|
|
Loading…
Reference in New Issue