Fix build with LLVM 3.1 TOT
This commit is contained in:
8
ctx.cpp
8
ctx.cpp
@@ -1279,7 +1279,11 @@ FunctionEmitContext::MasksAllEqual(llvm::Value *v1, llvm::Value *v2) {
|
||||
|
||||
llvm::Value *
|
||||
FunctionEmitContext::GetStringPtr(const std::string &str) {
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::Constant *lstr = llvm::ConstantDataArray::getString(*g->ctx, str);
|
||||
#else
|
||||
llvm::Constant *lstr = llvm::ConstantArray::get(*g->ctx, str);
|
||||
#endif
|
||||
llvm::GlobalValue::LinkageTypes linkage = llvm::GlobalValue::InternalLinkage;
|
||||
llvm::Value *lstrPtr = new llvm::GlobalVariable(*m->module, lstr->getType(),
|
||||
true /*isConst*/,
|
||||
@@ -1329,7 +1333,11 @@ FunctionEmitContext::I1VecToBoolVec(llvm::Value *b) {
|
||||
|
||||
static llvm::Value *
|
||||
lGetStringAsValue(llvm::BasicBlock *bblock, const char *s) {
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::Constant *sConstant = llvm::ConstantDataArray::getString(*g->ctx, s);
|
||||
#else
|
||||
llvm::Constant *sConstant = llvm::ConstantArray::get(*g->ctx, s);
|
||||
#endif
|
||||
llvm::Value *sPtr = new llvm::GlobalVariable(*m->module, sConstant->getType(),
|
||||
true /* const */,
|
||||
llvm::GlobalValue::InternalLinkage,
|
||||
|
||||
@@ -607,6 +607,12 @@ LLVMVectorValuesAllEqual(llvm::Value *v, int vectorLength,
|
||||
if (cv != NULL)
|
||||
return (cv->getSplatValue() != NULL);
|
||||
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cdv = llvm::dyn_cast<llvm::ConstantDataVector>(v);
|
||||
if (cdv != NULL)
|
||||
return (cdv->getSplatValue() != NULL);
|
||||
#endif
|
||||
|
||||
llvm::BinaryOperator *bop = llvm::dyn_cast<llvm::BinaryOperator>(v);
|
||||
if (bop != NULL)
|
||||
return (LLVMVectorValuesAllEqual(bop->getOperand(0), vectorLength,
|
||||
|
||||
48
opt.cpp
48
opt.cpp
@@ -630,13 +630,17 @@ lGetMask(llvm::Value *factor) {
|
||||
"known and all bits on". */
|
||||
Assert(g->target.vectorWidth < 32);
|
||||
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cv = llvm::dyn_cast<llvm::ConstantDataVector>(factor);
|
||||
#else
|
||||
llvm::ConstantVector *cv = llvm::dyn_cast<llvm::ConstantVector>(factor);
|
||||
#endif
|
||||
if (cv) {
|
||||
int mask = 0;
|
||||
llvm::SmallVector<llvm::Constant *, ISPC_MAX_NVEC> elements;
|
||||
#ifdef LLVM_3_1svn
|
||||
for (int i = 0; i < (int)cv->getNumOperands(); ++i)
|
||||
elements.push_back(cv->getOperand(i));
|
||||
for (int i = 0; i < (int)cv->getNumElements(); ++i)
|
||||
elements.push_back(cv->getElementAsConstant(i));
|
||||
#else
|
||||
cv->getVectorElements(elements);
|
||||
#endif
|
||||
@@ -1133,8 +1137,13 @@ lGetBasePtrAndOffsets(llvm::Value *ptrs, llvm::Value **offsets,
|
||||
// ConstantVectors..
|
||||
llvm::SmallVector<llvm::Constant *, ISPC_MAX_NVEC> elements;
|
||||
#ifdef LLVM_3_1svn
|
||||
for (int i = 0; i < (int)cv->getNumOperands(); ++i)
|
||||
elements.push_back(cv->getOperand(i));
|
||||
for (int i = 0; i < (int)cv->getNumOperands(); ++i) {
|
||||
llvm::Constant *c =
|
||||
llvm::dyn_cast<llvm::Constant>(cv->getOperand(i));
|
||||
if (c == NULL)
|
||||
return NULL;
|
||||
elements.push_back(c);
|
||||
}
|
||||
#else
|
||||
cv->getVectorElements(elements);
|
||||
#endif
|
||||
@@ -1247,6 +1256,9 @@ lExtractConstantOffset(llvm::Value *vec, llvm::Value **constOffset,
|
||||
llvm::Value **variableOffset,
|
||||
llvm::Instruction *insertBefore) {
|
||||
if (llvm::isa<llvm::ConstantVector>(vec) ||
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::isa<llvm::ConstantDataVector>(vec) ||
|
||||
#endif
|
||||
llvm::isa<llvm::ConstantAggregateZero>(vec)) {
|
||||
*constOffset = vec;
|
||||
*variableOffset = NULL;
|
||||
@@ -1365,7 +1377,12 @@ lExtractConstantOffset(llvm::Value *vec, llvm::Value **constOffset,
|
||||
in *splat, if so). */
|
||||
static bool
|
||||
lIs248Splat(llvm::Value *v, int *splat) {
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cvec =
|
||||
llvm::dyn_cast<llvm::ConstantDataVector>(v);
|
||||
#else
|
||||
llvm::ConstantVector *cvec = llvm::dyn_cast<llvm::ConstantVector>(v);
|
||||
#endif
|
||||
if (cvec == NULL)
|
||||
return false;
|
||||
|
||||
@@ -1472,6 +1489,9 @@ lExtractUniforms(llvm::Value **vec, llvm::Instruction *insertBefore) {
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
if (llvm::isa<llvm::ConstantVector>(*vec) ||
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::isa<llvm::ConstantDataVector>(*vec) ||
|
||||
#endif
|
||||
llvm::isa<llvm::ConstantAggregateZero>(*vec))
|
||||
return NULL;
|
||||
|
||||
@@ -2153,13 +2173,19 @@ char GSToLoadStorePass::ID = 0;
|
||||
elements.
|
||||
*/
|
||||
static bool
|
||||
lVectorIsLinearConstantInts(llvm::ConstantVector *cv, int vectorLength,
|
||||
lVectorIsLinearConstantInts(
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cv,
|
||||
#else
|
||||
llvm::ConstantVector *cv,
|
||||
#endif
|
||||
int vectorLength,
|
||||
int stride) {
|
||||
// Flatten the vector out into the elements array
|
||||
llvm::SmallVector<llvm::Constant *, ISPC_MAX_NVEC> elements;
|
||||
#ifdef LLVM_3_1svn
|
||||
for (int i = 0; i < (int)cv->getNumOperands(); ++i)
|
||||
elements.push_back(cv->getOperand(i));
|
||||
for (int i = 0; i < (int)cv->getNumElements(); ++i)
|
||||
elements.push_back(cv->getElementAsConstant(i));
|
||||
#else
|
||||
cv->getVectorElements(elements);
|
||||
#endif
|
||||
@@ -2201,7 +2227,11 @@ lCheckMulForLinear(llvm::Value *op0, llvm::Value *op1, int vectorLength,
|
||||
int stride, std::vector<llvm::PHINode *> &seenPhis) {
|
||||
// Is the first operand a constant integer value splatted across all of
|
||||
// the lanes?
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cv = llvm::dyn_cast<llvm::ConstantDataVector>(op0);
|
||||
#else
|
||||
llvm::ConstantVector *cv = llvm::dyn_cast<llvm::ConstantVector>(op0);
|
||||
#endif
|
||||
if (cv == NULL)
|
||||
return false;
|
||||
|
||||
@@ -2237,7 +2267,11 @@ lVectorIsLinear(llvm::Value *v, int vectorLength, int stride,
|
||||
std::vector<llvm::PHINode *> &seenPhis) {
|
||||
// First try the easy case: if the values are all just constant
|
||||
// integers and have the expected stride between them, then we're done.
|
||||
#ifdef LLVM_3_1svn
|
||||
llvm::ConstantDataVector *cv = llvm::dyn_cast<llvm::ConstantDataVector>(v);
|
||||
#else
|
||||
llvm::ConstantVector *cv = llvm::dyn_cast<llvm::ConstantVector>(v);
|
||||
#endif
|
||||
if (cv != NULL)
|
||||
return lVectorIsLinearConstantInts(cv, vectorLength, stride);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user