1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00

Define a helper function ConstantVector::getSplatValue for testing for

and working with broadcasted constants.

llvm-svn: 43076
This commit is contained in:
Dan Gohman 2007-10-17 17:51:30 +00:00
parent ed12f66488
commit 231159e8a3
2 changed files with 15 additions and 0 deletions

View File

@ -438,6 +438,10 @@ public:
/// @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.
Constant *getSplatValue();
virtual void destroyConstant();
virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);

View File

@ -1286,6 +1286,17 @@ bool ConstantVector::isAllOnesValue() const {
return true;
}
/// 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() {
// Check out first element.
Constant *Elt = getOperand(0);
// 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 0;
return Elt;
}
//---- ConstantPointerNull::get() implementation...
//