Re: supercollider FTBFS on ppc64el

Trupti <[email protected]> Fri, 03 Jul 2026 13:47:45 +0530
Newsgroups gmane.linux.debian.ports.powerpc,gmane.linux.debian.devel.multimedia
Message-ID <[email protected]>
--=_e6fd0311caa8fe7a752cfd95c301bea4
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8;
 format=flowed

Hi JeffHi Jeff,

> This is how we handle it in Crypto++ [0].  I would not worry about
> __APPLE_ALTIVEC__.  __ALTIVEC__ picks up the use case.
> 
> In an implementation file that needs the definitions:
> 
> // could use -maltivec, -mcpu=power7, -mcpu=power8, etc
> #if defined(__ALTIVEC__) || defined(_ARCH_PWR7)
> # include "ppc_simd.h"
> #endif
> 
> And then at the head of ppc_simd.h: [1]
> 
> #if defined(__ALTIVEC__)
> # include <altivec.h>
> # undef vector
> # undef pixel
> # undef bool
> #endif
> 
> And then in the same ppc_simd.h file:
> 
> #if defined(__ALTIVEC__) || defined(CRYPTOPP_DOXYGEN_PROCESSING)
> 
> /// \brief Vector of 8-bit elements
> typedef __vector unsigned char   uint8x16_p;
> 
> /// \brief Vector of 16-bit elements
> typedef __vector unsigned short  uint16x8_p;
> 
> /// \brief Vector of 32-bit elements
> typedef __vector unsigned int    uint32x4_p;
> 
> #if defined(__VSX__) || defined(_ARCH_PWR8) ||
> defined(CRYPTOPP_DOXYGEN_PROCESSING)
> /// \brief Vector of 64-bit elements
> typedef __vector unsigned long long uint64x2_p;
> #endif  // VSX or ARCH_PWR8
> 
> #endif  // __ALTIVEC__ or Doxygen
> 
> Now use the typedefs like uint8x16_p, uint16x8_p, uint32x4_p, and
> uint64x2_p.
> 
> 
> [0] https://cryptopp.com/
> [1] https://github.com/weidai11/cryptopp/blob/master/ppc_simd.h
> 
> JeffHi Jeff,


Thank you for taking the time to review and for the pointer to 
ppc_simd.h — really helpful reference.

One thing I confirmed: vec_altivec.hpp only ever gets included when 
__ALTIVEC__ is already true (that check happens earlier, in vec.hpp).
So adding the same guard inside vec_altivec.hpp doesn't change anything 
right now — it's already guaranteed true.
But as you suggested, and I think that's the correct way to go, I've 
kept the guard anyway so the header stays safe on its own,
in case someone includes it directly in the future without going through 
vec.hpp first. Thanks for pointing that out.

I have updated my patch to gate the #include <altivec.h> and #undef 
vector/pixel/bool behind #if defined(__ALTIVEC__), instead of relying on 
__APPLE_ALTIVEC__ reasoning.

Rebuilt and tested on my ppc64el machine.

Updated patches attached. Will go ahead and create the Salsa Merge 
Request with this version.

Thanks again,
Trupti
--=_e6fd0311caa8fe7a752cfd95c301bea4
Content-Transfer-Encoding: base64
Content-Type: text/x-diff;
 name=fix-altivec-vector-keyword.patch
Content-Disposition: attachment;
 filename=fix-altivec-vector-keyword.patch;
 size=4749

SW5kZXg6IHN1cGVyY29sbGlkZXItc2MzLXBsdWdpbnMtMy4xNC4wK2RzL2V4dGVybmFsX2xpYnJh
cmllcy9ub3ZhLXNpbWQvdmVjL3ZlY19hbHRpdmVjLmhwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdXBlcmNv
bGxpZGVyLXNjMy1wbHVnaW5zLTMuMTQuMCtkcy5vcmlnL2V4dGVybmFsX2xpYnJhcmllcy9ub3Zh
LXNpbWQvdmVjL3ZlY19hbHRpdmVjLmhwcAorKysgc3VwZXJjb2xsaWRlci1zYzMtcGx1Z2lucy0z
LjE0LjArZHMvZXh0ZXJuYWxfbGlicmFyaWVzL25vdmEtc2ltZC92ZWMvdmVjX2FsdGl2ZWMuaHBw
CkBAIC0yMCw4ICsyMCwxMiBAQAogI2lmbmRlZiBWRUNfQUxUSVZFQ19IUFAKICNkZWZpbmUgVkVD
X0FMVElWRUNfSFBQCiAKLSNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0jdW5kZWYgYm9vbAorI2lmIGRl
ZmluZWQoX19BTFRJVkVDX18pCisjIGluY2x1ZGUgPGFsdGl2ZWMuaD4KKyMgdW5kZWYgYm9vbAor
IyB1bmRlZiB2ZWN0b3IKKyMgdW5kZWYgcGl4ZWwKKyNlbmRpZgogCiAjaW5jbHVkZSAiLi4vZGV0
YWlsL3ZlY19tYXRoLmhwcCIKICNpbmNsdWRlICJ2ZWNfaW50X2FsdGl2ZWMuaHBwIgpAQCAtMzks
MTMgKzQzLDEzIEBAIG5hbWVzcGFjZSBub3ZhCiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgdmVjPGZs
b2F0PjoKLSAgICB2ZWNfYmFzZTxmbG9hdCwgdmVjdG9yIGZsb2F0LCA0PgorICAgIHZlY19iYXNl
PGZsb2F0LCBfX3ZlY3RvciBmbG9hdCwgND4KIHsKLSAgICB0eXBlZGVmIHZlY3RvciBmbG9hdCBp
bnRlcm5hbF92ZWN0b3JfdHlwZTsKKyAgICB0eXBlZGVmIF9fdmVjdG9yIGZsb2F0IGludGVybmFs
X3ZlY3Rvcl90eXBlOwogICAgIHR5cGVkZWYgZmxvYXQgZmxvYXRfdHlwZTsKIAogcHJpdmF0ZToK
LSAgICB0eXBlZGVmIHZlY19iYXNlPGZsb2F0LCB2ZWN0b3IgZmxvYXQsIDQ+IGJhc2U7CisgICAg
dHlwZWRlZiB2ZWNfYmFzZTxmbG9hdCwgX192ZWN0b3IgZmxvYXQsIDQ+IGJhc2U7CiAKICAgICBz
dGF0aWMgaW50ZXJuYWxfdmVjdG9yX3R5cGUgc2V0X3ZlY3RvcihmbG9hdCBmMCwgZmxvYXQgZjEs
IGZsb2F0IGYyLCBmbG9hdCBmMykKICAgICB7CkBAIC0yMzEsNyArMjM1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gYWRhcHRlZCBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2hhcmR3
YXJlZHJpdmVycy92ZS9hbGdvcml0aG1zLmh0bWwKIAogICAgICAgICAvLyBHZXQgdGhlIHJlY2lw
cm9jYWwgZXN0aW1hdGUKLSAgICAgICAgdmVjdG9yIGZsb2F0IGVzdGltYXRlID0gdmVjX3JlKGFy
Zyk7CisgICAgICAgIF9fdmVjdG9yIGZsb2F0IGVzdGltYXRlID0gdmVjX3JlKGFyZyk7CiAKICAg
ICAgICAgLy8gT25lIHJvdW5kIG9mIE5ld3Rvbi1SYXBoc29uIHJlZmluZW1lbnQKICAgICAgICAg
cmV0dXJuIHZlY19tYWRkKHZlY19ubXN1Yihlc3RpbWF0ZSwgYXJnLCBnZW5fb25lKCkpLCBlc3Rp
bWF0ZSwgZXN0aW1hdGUpOwpAQCAtMjg0LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIGZyaWVu
ZCB2ZWMgZmFzdF9yZWNpcHJvY2FsKGNvbnN0IHZlYyAmIGFyZykKICAgICB7Ci0gICAgICAgIHZl
Y3RvciBmbG9hdCBlc3RpbWF0ZSA9IHZlY19yZShhcmcpOworICAgICAgICBfX3ZlY3RvciBmbG9h
dCBlc3RpbWF0ZSA9IHZlY19yZShhcmcuZGF0YV8pOwogICAgICAgICByZXR1cm4gZXN0aW1hdGU7
CiAgICAgfQogCkBAIC0zMTYsOCArMzIwLDggQEAgcHVibGljOgogICAgIHZlYyBvcGVyYXRvciBv
cCh2ZWMgY29uc3QgJiByaHMpIGNvbnN0IFwKICAgICB7IFwKICAgICAgICAgY29uc3QgaW50ZXJu
YWxfdmVjdG9yX3R5cGUgb25lID0gZ2VuX29uZSgpOyBcCi0gICAgICAgIHZlY3RvciB1bnNpZ25l
ZCBpbnQgbWFzayA9ICh2ZWN0b3IgdW5zaWduZWQgaW50KW9wY29kZShkYXRhXywgcmhzLmRhdGFf
KTsgXAotICAgICAgICByZXR1cm4gKGludGVybmFsX3ZlY3Rvcl90eXBlKXZlY19hbmQobWFzaywg
KHZlY3RvciB1bnNpZ25lZCBpbnQpb25lKTsgXAorICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBp
bnQgbWFzayA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpb3Bjb2RlKGRhdGFfLCByaHMuZGF0YV8p
OyBcCisgICAgICAgIHJldHVybiAoaW50ZXJuYWxfdmVjdG9yX3R5cGUpdmVjX2FuZChtYXNrLCAo
X192ZWN0b3IgdW5zaWduZWQgaW50KW9uZSk7IFwKICAgICB9CiAKICNkZWZpbmUgdmVjX2NtcGxl
XyhhLCBiKSB2ZWNfY21wZ2UoYiwgYSkKQEAgLTM2Nyw3ICszNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBmcmllbmQgaW5saW5lIHZlYyBzZWxlY3QodmVjIGxocywgdmVjIHJocywgdmVjIGJpdG1hc2sp
CiAgICAgewotICAgICAgICByZXR1cm4gdmVjX3NlbChsaHMuZGF0YV8sIHJocy5kYXRhXywgKHZl
Y3RvciB1bnNpZ25lZCBpbnQpYml0bWFzay5kYXRhXyk7CisgICAgICAgIHJldHVybiB2ZWNfc2Vs
KGxocy5kYXRhXywgcmhzLmRhdGFfLCAoX192ZWN0b3IgdW5zaWduZWQgaW50KWJpdG1hc2suZGF0
YV8pOwogICAgIH0KIAogICAgIC8qIEB9ICovCkBAIC0zOTUsMTQgKzM5OSwxNCBAQCBwcml2YXRl
OgogICAgICAgICAvLyBhZGFwdGVkIGZyb20gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaGFy
ZHdhcmVkcml2ZXJzL3ZlL2FsZ29yaXRobXMuaHRtbAogCiAgICAgICAgIC8vR2V0IHRoZSBzcXVh
cmUgcm9vdCByZWNpcHJvY2FsIGVzdGltYXRlCi0gICAgICAgIHZlY3RvciBmbG9hdCB6ZXJvID0g
ICAgZ2VuX3plcm8oKTsKLSAgICAgICAgdmVjdG9yIGZsb2F0IG9uZUhhbGYgPSBnZW5fMDUoKTsK
LSAgICAgICAgdmVjdG9yIGZsb2F0IG9uZSA9ICAgICBnZW5fb25lKCk7Ci0gICAgICAgIHZlY3Rv
ciBmbG9hdCBlc3RpbWF0ZSA9IHZlY19yc3FydGUoYXJnKTsKKyAgICAgICAgX192ZWN0b3IgZmxv
YXQgemVybyA9ICAgIGdlbl96ZXJvKCk7CisgICAgICAgIF9fdmVjdG9yIGZsb2F0IG9uZUhhbGYg
PSBnZW5fMDUoKTsKKyAgICAgICAgX192ZWN0b3IgZmxvYXQgb25lID0gICAgIGdlbl9vbmUoKTsK
KyAgICAgICAgX192ZWN0b3IgZmxvYXQgZXN0aW1hdGUgPSB2ZWNfcnNxcnRlKGFyZyk7CiAKICAg
ICAgICAgLy9PbmUgcm91bmQgb2YgTmV3dG9uLVJhcGhzb24gcmVmaW5lbWVudAotICAgICAgICB2
ZWN0b3IgZmxvYXQgZXN0aW1hdGVTcXVhcmVkID0gdmVjX21hZGQoZXN0aW1hdGUsIGVzdGltYXRl
LCB6ZXJvKTsKLSAgICAgICAgdmVjdG9yIGZsb2F0IGhhbGZFc3RpbWF0ZSA9IHZlY19tYWRkKGVz
dGltYXRlLCBvbmVIYWxmLCB6ZXJvKTsKKyAgICAgICAgX192ZWN0b3IgZmxvYXQgZXN0aW1hdGVT
cXVhcmVkID0gdmVjX21hZGQoZXN0aW1hdGUsIGVzdGltYXRlLCB6ZXJvKTsKKyAgICAgICAgX192
ZWN0b3IgZmxvYXQgaGFsZkVzdGltYXRlID0gdmVjX21hZGQoZXN0aW1hdGUsIG9uZUhhbGYsIHpl
cm8pOwogICAgICAgICByZXR1cm4gdmVjX21hZGQodmVjX25tc3ViKGFyZywgZXN0aW1hdGVTcXVh
cmVkLCBvbmUpLCBoYWxmRXN0aW1hdGUsIGVzdGltYXRlKTsKICAgICB9CiAKSW5kZXg6IHN1cGVy
Y29sbGlkZXItc2MzLXBsdWdpbnMtMy4xNC4wK2RzL2V4dGVybmFsX2xpYnJhcmllcy9ub3ZhLXNp
bWQvdmVjL3ZlY19pbnRfYWx0aXZlYy5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3VwZXJjb2xsaWRlci1z
YzMtcGx1Z2lucy0zLjE0LjArZHMub3JpZy9leHRlcm5hbF9saWJyYXJpZXMvbm92YS1zaW1kL3Zl
Yy92ZWNfaW50X2FsdGl2ZWMuaHBwCisrKyBzdXBlcmNvbGxpZGVyLXNjMy1wbHVnaW5zLTMuMTQu
MCtkcy9leHRlcm5hbF9saWJyYXJpZXMvbm92YS1zaW1kL3ZlYy92ZWNfaW50X2FsdGl2ZWMuaHBw
CkBAIC0yMCwyMiArMjAsMjggQEAKICNpZm5kZWYgVkVDX0lOVF9BTFRJVkVDX0hQUAogI2RlZmlu
ZSBWRUNfSU5UX0FMVElWRUNfSFBQCiAKLSNpbmNsdWRlIDxhbHRpdmVjLmg+CisjaWYgZGVmaW5l
ZChfX0FMVElWRUNfXykKKyMgaW5jbHVkZSA8YWx0aXZlYy5oPgorIyB1bmRlZiBib29sCisjIHVu
ZGVmIHZlY3RvcgorIyB1bmRlZiBwaXhlbAorI2VuZGlmCisKIAogbmFtZXNwYWNlIG5vdmEgewog
bmFtZXNwYWNlIGRldGFpbCB7CiAKIHN0cnVjdCBpbnRfdmVjX2FsdGl2ZWMKIHsKLSAgICB0eXBl
ZGVmIHZlY3RvciBmbG9hdCBmdmVjOwotICAgIHR5cGVkZWYgdmVjdG9yIHVuc2lnbmVkIGludCBp
dmVjOworICAgIHR5cGVkZWYgX192ZWN0b3IgZmxvYXQgZnZlYzsKKyAgICB0eXBlZGVmIF9fdmVj
dG9yIHVuc2lnbmVkIGludCBpdmVjOwogICAgIGl2ZWMgZGF0YV87CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGl2ZWMgc2V0X3ZlY3RvcihpbnQgaSkKICAgICB7CiAjaWZkZWYgX19HTlVDX18KLSAg
ICAgICAgcmV0dXJuIChpdmVjKXtpLCBpLCBpLCBpfTsKKyAgICAgICAgcmV0dXJuIChpdmVjKXso
dW5zaWduZWQgaW50KWksKHVuc2lnbmVkIGludClpLCAodW5zaWduZWQgaW50KWksICh1bnNpZ25l
ZCBpbnQpaX07CiAjZWxzZQogI2Vycm9yIGNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQKICNlbmRpZgpA
QCAtNTgsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGRhdGFfKGFyZy5kYXRhXykKICAgICB7
fQogCi0gICAgaW50X3ZlY19hbHRpdmVjKHZlY3RvciBzaWduZWQgaW50IGFyZyk6CisgICAgaW50
X3ZlY19hbHRpdmVjKF9fdmVjdG9yIHNpZ25lZCBpbnQgYXJnKToKICAgICAgICAgZGF0YV8oKGl2
ZWMpYXJnKQogICAgIHt9CiAK
--=_e6fd0311caa8fe7a752cfd95c301bea4--