summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-stress/llvm-stress.cpp
diff options
context:
space:
mode:
authorNadav Rotem <nadav.rotem@intel.com>2012-02-26 13:56:18 +0000
committerNadav Rotem <nadav.rotem@intel.com>2012-02-26 13:56:18 +0000
commite4972ddea40f191400df87daa257b89ebbe1f182 (patch)
treeb8a88eb5e5478ee105fb53bfabd211b9f6bc2f36 /llvm/tools/llvm-stress/llvm-stress.cpp
parent115ec82ec7d33daac5a04fe69cc4839566ca9258 (diff)
downloadbcm5719-llvm-e4972ddea40f191400df87daa257b89ebbe1f182.tar.gz
bcm5719-llvm-e4972ddea40f191400df87daa257b89ebbe1f182.zip
Add support for random constant vectors.
Patch by Joey Gouly. llvm-svn: 151489
Diffstat (limited to 'llvm/tools/llvm-stress/llvm-stress.cpp')
-rw-r--r--llvm/tools/llvm-stress/llvm-stress.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/llvm/tools/llvm-stress/llvm-stress.cpp b/llvm/tools/llvm-stress/llvm-stress.cpp
index f9bf18faa5e..f2d65456b64 100644
--- a/llvm/tools/llvm-stress/llvm-stress.cpp
+++ b/llvm/tools/llvm-stress/llvm-stress.cpp
@@ -110,6 +110,19 @@ protected:
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 @@ protected:
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);
}
OpenPOWER on IntegriCloud