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