Merge branch 'master' of github.com:ispc/ispc
This commit is contained in:
14
docs/ReleaseNotes.txt
Normal file
14
docs/ReleaseNotes.txt
Normal 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
|
||||||
@@ -54,8 +54,6 @@ extern void binomial_put_serial(float Sa[], float Xa[], float Ta[],
|
|||||||
float result[], int count);
|
float result[], int count);
|
||||||
|
|
||||||
int main() {
|
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 *S = new float[N_OPTIONS];
|
||||||
float *X = new float[N_OPTIONS];
|
float *X = new float[N_OPTIONS];
|
||||||
float *T = new float[N_OPTIONS];
|
float *T = new float[N_OPTIONS];
|
||||||
|
|||||||
2
expr.cpp
2
expr.cpp
@@ -380,7 +380,7 @@ lLLVMConstantValue(const Type *type, llvm::LLVMContext *ctx, double value) {
|
|||||||
std::vector<llvm::Constant *> vals;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (unsigned int i = 0; i < lvt->getNumElements(); ++i)
|
for (unsigned int i = 0; i < lvt->getNumElements(); ++i)
|
||||||
vals.push_back(constElement);
|
vals.push_back(constElement);
|
||||||
return llvm::ConstantVector::get(lvt, vals);
|
return llvm::ConstantVector::get(vals);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const llvm::ArrayType *lat =
|
const llvm::ArrayType *lat =
|
||||||
|
|||||||
32
llvmutil.cpp
32
llvmutil.cpp
@@ -116,7 +116,7 @@ InitLLVMUtil(llvm::LLVMContext *ctx, Target target) {
|
|||||||
|
|
||||||
for (int i = 0; i < target.vectorWidth; ++i)
|
for (int i = 0; i < target.vectorWidth; ++i)
|
||||||
maskOnes.push_back(onMask);
|
maskOnes.push_back(onMask);
|
||||||
LLVMMaskAllOn = llvm::ConstantVector::get(LLVMTypes::MaskType, maskOnes);
|
LLVMMaskAllOn = llvm::ConstantVector::get(maskOnes);
|
||||||
|
|
||||||
std::vector<llvm::Constant *> maskZeros;
|
std::vector<llvm::Constant *> maskZeros;
|
||||||
llvm::Constant *offMask = NULL;
|
llvm::Constant *offMask = NULL;
|
||||||
@@ -125,7 +125,7 @@ InitLLVMUtil(llvm::LLVMContext *ctx, Target target) {
|
|||||||
|
|
||||||
for (int i = 0; i < target.vectorWidth; ++i)
|
for (int i = 0; i < target.vectorWidth; ++i)
|
||||||
maskZeros.push_back(offMask);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMInt32(ivec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMUInt32(ivec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMFloat(fvec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMDouble(dvec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMInt64(ivec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(LLVMUInt64(ivec[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;
|
std::vector<llvm::Constant *> vals;
|
||||||
for (int i = 0; i < g->target.vectorWidth; ++i)
|
for (int i = 0; i < g->target.vectorWidth; ++i)
|
||||||
vals.push_back(v);
|
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);
|
vals.push_back(v);
|
||||||
}
|
}
|
||||||
return llvm::ConstantVector::get(LLVMTypes::BoolVectorType, vals);
|
return llvm::ConstantVector::get(vals);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user