mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 06:30:39 +00:00
Fold ConstantVector::isAllOnesValue into Constant::isAllOnesValue and simplify it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144555 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
788dc0f4e5
commit
b518cae015
@ -475,12 +475,6 @@ public:
|
||||
inline VectorType *getType() const {
|
||||
return reinterpret_cast<VectorType*>(Value::getType());
|
||||
}
|
||||
|
||||
/// This function will return true iff every element in this vector constant
|
||||
/// is set to all ones.
|
||||
/// @returns true iff this constant's emements are all set to all ones.
|
||||
/// @brief Determine if the value is all ones.
|
||||
bool isAllOnesValue() const;
|
||||
|
||||
/// getSplatValue - If this is a splat constant, meaning that all of the
|
||||
/// elements have the same value, return that value. Otherwise return NULL.
|
||||
|
@ -71,12 +71,14 @@ bool Constant::isAllOnesValue() const {
|
||||
if (const ConstantFP *CFP = dyn_cast<ConstantFP>(this))
|
||||
return CFP->getValueAPF().bitcastToAPInt().isAllOnesValue();
|
||||
|
||||
// Check for constant vectors
|
||||
// Check for constant vectors which are splats of -1 values.
|
||||
if (const ConstantVector *CV = dyn_cast<ConstantVector>(this))
|
||||
return CV->isAllOnesValue();
|
||||
if (Constant *Splat = CV->getSplatValue())
|
||||
return Splat->isAllOnesValue();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Constructor to create a '0' constant of arbitrary type...
|
||||
Constant *Constant::getNullValue(Type *Ty) {
|
||||
switch (Ty->getTypeID()) {
|
||||
@ -1071,26 +1073,6 @@ void ConstantVector::destroyConstant() {
|
||||
destroyConstantImpl();
|
||||
}
|
||||
|
||||
/// This function will return true iff every element in this vector constant
|
||||
/// is set to all ones.
|
||||
/// @returns true iff this constant's elements are all set to all ones.
|
||||
/// @brief Determine if the value is all ones.
|
||||
bool ConstantVector::isAllOnesValue() const {
|
||||
// Check out first element.
|
||||
const Constant *Elt = getOperand(0);
|
||||
const ConstantInt *CI = dyn_cast<ConstantInt>(Elt);
|
||||
const ConstantFP *CF = dyn_cast<ConstantFP>(Elt);
|
||||
|
||||
// Then make sure all remaining elements point to the same value.
|
||||
for (unsigned I = 1, E = getNumOperands(); I < E; ++I)
|
||||
if (getOperand(I) != Elt)
|
||||
return false;
|
||||
|
||||
// First value is all-ones.
|
||||
return (CI && CI->isAllOnesValue()) ||
|
||||
(CF && CF->isAllOnesValue());
|
||||
}
|
||||
|
||||
/// getSplatValue - If this is a splat constant, where all of the
|
||||
/// elements have the same value, return that value. Otherwise return null.
|
||||
Constant *ConstantVector::getSplatValue() const {
|
||||
|
Loading…
Reference in New Issue
Block a user