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: ...@@ -98,7 +98,9 @@ public:
} }
inline static InaVecMaskALTIVEC NotAnd(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){ 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){ inline static InaVecMaskALTIVEC Or(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
...@@ -540,7 +542,7 @@ public: ...@@ -540,7 +542,7 @@ public:
} }
inline static InaVecALTIVEC IfFalse(const InaVecMaskALTIVEC<double>& inMask, const InaVecALTIVEC& inIfFalse) { 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 // Inner operators
......
...@@ -95,7 +95,7 @@ public: ...@@ -95,7 +95,7 @@ public:
} }
inline static InaVecMaskALTIVEC NotAnd(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){ 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){ inline static InaVecMaskALTIVEC Or(const InaVecMaskALTIVEC& inMask1, const InaVecMaskALTIVEC& inMask2){
...@@ -521,7 +521,7 @@ public: ...@@ -521,7 +521,7 @@ public:
} }
inline static InaVecALTIVEC IfFalse(const InaVecMaskALTIVEC<float>& inMask, const InaVecALTIVEC& inIfFalse) { 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 // 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