Commit 52a8861e authored by Berenger Bramas's avatar Berenger Bramas

Update ALTIVEC -- make the if/else statement working

parent 12ec2037
......@@ -98,7 +98,9 @@ public:
}
inline static InaVecMaskALTIVEC NotAnd(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
return InaVecMaskALTIVEC(vec_nand(inMask1.mask, inMask2.mask));
return InaVecMaskALTIVEC(reinterpret_cast<__vector __bool long long>(
vec_and(reinterpret_cast<__vector unsigned char>(vec_nand(inMask1.mask, inMask1.mask)),
reinterpret_cast<__vector unsigned char>(inMask2.mask))));
}
inline static InaVecMaskALTIVEC Or(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
......@@ -540,7 +542,7 @@ public:
}
inline static InaVecALTIVEC IfFalse(const InaVecMaskALTIVEC<double>& inMask, const InaVecALTIVEC& inIfFalse) {
return vec_nand(reinterpret_cast<__vector double>(inMask.getMask()), inIfFalse.vec);
return vec_and(vec_nand(inMask.getMask(),inMask.getMask()), inIfFalse.vec);
}
// Inner operators
......
......@@ -95,7 +95,7 @@ public:
}
inline static InaVecMaskALTIVEC NotAnd(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
return InaVecMaskALTIVEC(vec_nand(inMask1.mask, inMask2.mask));
return InaVecMaskALTIVEC(vec_and(vec_nand(inMask1.mask,inMask1.mask), inMask2.mask));
}
inline static InaVecMaskALTIVEC Or(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
......@@ -521,7 +521,7 @@ public:
}
inline static InaVecALTIVEC IfFalse(const InaVecMaskALTIVEC<float>& inMask, const InaVecALTIVEC& inIfFalse) {
return vec_nand(reinterpret_cast<__vector float>(inMask.getMask()), inIfFalse.vec);
return vec_and(vec_nand(inMask.getMask(),inMask.getMask()), inIfFalse.vec);
}
// Inner operators
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment