[llvm-commits] [llvm] r151489 - /llvm/trunk/tools/llvm-stress/llvm-stress.cpp
Nadav Rotem
nadav.rotem at intel.com
Sun Feb 26 05:56:19 PST 2012
Author: nadav
Date: Sun Feb 26 07:56:18 2012
New Revision: 151489
URL: http://llvm.org/viewvc/llvm-project?rev=151489&view=rev
Log:
Add support for random constant vectors.
Patch by Joey Gouly.
Modified:
llvm/trunk/tools/llvm-stress/llvm-stress.cpp
Modified: llvm/trunk/tools/llvm-stress/llvm-stress.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-stress/llvm-stress.cpp?rev=151489&r1=151488&r2=151489&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-stress/llvm-stress.cpp (original)
+++ llvm/trunk/tools/llvm-stress/llvm-stress.cpp Sun Feb 26 07:56:18 2012
@@ -110,6 +110,19 @@
return PT->at(Ran->Rand() % PT->size());
}
+ Constant *getRandomConstant(Type *Tp) {
+ if (Tp->isIntegerTy()) {
+ if (Ran->Rand() & 1)
+ return ConstantInt::getAllOnesValue(Tp);
+ return ConstantInt::getNullValue(Tp);
+ } else if (Tp->isFloatingPointTy()) {
+ if (Ran->Rand() & 1)
+ return ConstantFP::getAllOnesValue(Tp);
+ return ConstantFP::getNullValue(Tp);
+ }
+ return UndefValue::get(Tp);
+ }
+
/// Return a random value with a known type.
Value *getRandomValue(Type *Tp) {
unsigned index = Ran->Rand();
@@ -128,9 +141,18 @@
if (Ran->Rand() & 1)
return ConstantFP::getAllOnesValue(Tp);
return ConstantFP::getNullValue(Tp);
+ } else if (Tp->isVectorTy()) {
+ VectorType *VTp = cast<VectorType>(Tp);
+
+ std::vector<Constant*> TempValues;
+ TempValues.reserve(VTp->getNumElements());
+ for (unsigned i = 0; i < VTp->getNumElements(); ++i)
+ TempValues.push_back(getRandomConstant(VTp->getScalarType()));
+
+ ArrayRef<Constant*> VectorValue(TempValues);
+ return ConstantVector::get(VectorValue);
}
- // TODO: return values for vector types.
return UndefValue::get(Tp);
}
More information about the llvm-commits
mailing list