Merge branch 'master' of github.com:ispc/ispc

This commit is contained in:
Matt Pharr
2011-06-24 16:21:54 -07:00
5 changed files with 32 additions and 20 deletions

14
docs/ReleaseNotes.txt Normal file
View File

@@ -0,0 +1,14 @@
=== v1.0.1 === (24 June 2011)
ispc no longer requires that pointers to memory that are passed in to ispc
have alignment equal to the targets vector width; now alignment just has to
be the regular element alignment (e.g. 4 bytes for floats, etc.) This
change also fixed a number of cases where it previously incorrectly
generated aligned load/store instructions in cases where the address wasn't
actually aligned (even if the base address passed into ispc code was).
=== v1.0 === (21 June 2011)
Initial Release

View File

@@ -136,7 +136,7 @@ Linux\* and Mac OS\* available for download. Alternatively, you can
download the source code from that page and build it yourself; see see the
`ispc wiki`_ for instructions about building ``ispc`` from source.
.. _ispc downloads web page:downloads.html
.. _ispc downloads web page: downloads.html
.. _ispc wiki: http://github.com/ispc/ispc/wiki
Once you have an executable for your system, copy it into a directory

View File

@@ -54,8 +54,6 @@ extern void binomial_put_serial(float Sa[], float Xa[], float Ta[],
float result[], int count);
int main() {
// Pointers passed to ispc code must have alignment of the target's
// vector width at minimum.
float *S = new float[N_OPTIONS];
float *X = new float[N_OPTIONS];
float *T = new float[N_OPTIONS];

View File

@@ -380,7 +380,7 @@ lLLVMConstantValue(const Type *type, llvm::LLVMContext *ctx, double value) {
std::vector<llvm::Constant *> vals;
for (unsigned int i = 0; i < lvt->getNumElements(); ++i)
vals.push_back(constElement);
return llvm::ConstantVector::get(lvt, vals);
return llvm::ConstantVector::get(vals);
}
else {
const llvm::ArrayType *lat =

View File

@@ -116,7 +116,7 @@ InitLLVMUtil(llvm::LLVMContext *ctx, Target target) {
for (int i = 0; i < target.vectorWidth; ++i)
maskOnes.push_back(onMask);
LLVMMaskAllOn = llvm::ConstantVector::get(LLVMTypes::MaskType, maskOnes);
LLVMMaskAllOn = llvm::ConstantVector::get(maskOnes);
std::vector<llvm::Constant *> maskZeros;
llvm::Constant *offMask = NULL;
@@ -125,7 +125,7 @@ InitLLVMUtil(llvm::LLVMContext *ctx, Target target) {
for (int i = 0; i < target.vectorWidth; ++i)
maskZeros.push_back(offMask);
LLVMMaskAllOff = llvm::ConstantVector::get(LLVMTypes::MaskType, maskZeros);
LLVMMaskAllOff = llvm::ConstantVector::get(maskZeros);
}
@@ -174,7 +174,7 @@ LLVMInt32Vector(int32_t ival) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::Int32VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -183,7 +183,7 @@ LLVMInt32Vector(const int32_t *ivec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMInt32(ivec[i]));
return llvm::ConstantVector::get(LLVMTypes::Int32VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -193,7 +193,7 @@ LLVMUInt32Vector(uint32_t ival) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::Int32VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -202,7 +202,7 @@ LLVMUInt32Vector(const uint32_t *ivec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMUInt32(ivec[i]));
return llvm::ConstantVector::get(LLVMTypes::Int32VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -212,7 +212,7 @@ LLVMFloatVector(float fval) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::FloatVectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -221,7 +221,7 @@ LLVMFloatVector(const float *fvec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMFloat(fvec[i]));
return llvm::ConstantVector::get(LLVMTypes::FloatVectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -231,7 +231,7 @@ LLVMDoubleVector(double dval) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::DoubleVectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -240,7 +240,7 @@ LLVMDoubleVector(const double *dvec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMDouble(dvec[i]));
return llvm::ConstantVector::get(LLVMTypes::DoubleVectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -250,7 +250,7 @@ LLVMInt64Vector(int64_t ival) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::Int64VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -259,7 +259,7 @@ LLVMInt64Vector(const int64_t *ivec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMInt64(ivec[i]));
return llvm::ConstantVector::get(LLVMTypes::Int64VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -269,7 +269,7 @@ LLVMUInt64Vector(uint64_t ival) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::Int64VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -278,7 +278,7 @@ LLVMUInt64Vector(const uint64_t *ivec) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(LLVMUInt64(ivec[i]));
return llvm::ConstantVector::get(LLVMTypes::Int64VectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -297,7 +297,7 @@ LLVMBoolVector(bool b) {
std::vector<llvm::Constant *> vals;
for (int i = 0; i < g->target.vectorWidth; ++i)
vals.push_back(v);
return llvm::ConstantVector::get(LLVMTypes::BoolVectorType, vals);
return llvm::ConstantVector::get(vals);
}
@@ -317,7 +317,7 @@ LLVMBoolVector(const bool *bvec) {
vals.push_back(v);
}
return llvm::ConstantVector::get(LLVMTypes::BoolVectorType, vals);
return llvm::ConstantVector::get(vals);
}