mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 16:35:10 +00:00
Allow isAllOnesValue testing on packed constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33146 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9f7f49caa4
commit
fa30182eb8
@ -358,6 +358,12 @@ public:
|
||||
/// created as ConstantAggregateZero objects.
|
||||
virtual bool isNullValue() const { return false; }
|
||||
|
||||
/// This function will return true iff every element in this packed 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.
|
||||
virtual bool isAllOnesValue() const;
|
||||
|
||||
virtual void destroyConstant();
|
||||
virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
|
||||
|
||||
|
@ -1166,6 +1166,22 @@ void ConstantPacked::destroyConstant() {
|
||||
destroyConstantImpl();
|
||||
}
|
||||
|
||||
/// This function will return true iff every element in this packed 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 ConstantPacked::isAllOnesValue() const {
|
||||
// Check out first element.
|
||||
const Constant *Elt = getOperand(0);
|
||||
const ConstantInt *CI = dyn_cast<ConstantInt>(Elt);
|
||||
if (!CI || !CI->isAllOnesValue()) return false;
|
||||
// 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;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//---- ConstantPointerNull::get() implementation...
|
||||
//
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user