Commit 434cd1f
fix: enable VSX shuffle on ppc64 big-endian with proper detection
- Widen CMake detection from ppc64le-only to all PowerPC variants
(ppc64, ppc64le, powerpc, powerpc64, powerpc64le)
- Relax shuffle-altivec.c guard from __VSX__ && _ARCH_PWR8 to
__VSX__ && !__APPLE__, since the shuffle code only needs VSX
(POWER7+), not POWER8. The !__APPLE__ guard avoids GCC Bug
#121696 where __VSX__ is falsely defined on powerpc-apple-darwin.
- Keep _ARCH_PWR8 requirement in bitshuffle-altivec.c (vec_bperm
is a POWER8 ISA 2.07 instruction)
- Fix vec_bperm result element index for big-endian: the 16-bit
result is in element 0 on BE vs element 4 on LE
G4/G5 Macs are unaffected: they lack __VSX__, so they continue to
use the generic scalar path as before.
Tested: builds and passes full test suite on x86_64.
POWER8 S824 (ppc64le) and Power Mac G5 (ppc64be) available for
hardware verification.
Fixes #7021 parent 9200990 commit 434cd1f
3 files changed
+28
-13
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
371 | 371 | | |
372 | 372 | | |
373 | 373 | | |
374 | | - | |
| 374 | + | |
375 | 375 | | |
376 | 376 | | |
377 | 377 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
31 | 43 | | |
32 | 44 | | |
33 | 45 | | |
| |||
169 | 181 | | |
170 | 182 | | |
171 | 183 | | |
172 | | - | |
| 184 | + | |
173 | 185 | | |
174 | | - | |
| 186 | + | |
175 | 187 | | |
176 | 188 | | |
177 | 189 | | |
| |||
351 | 363 | | |
352 | 364 | | |
353 | 365 | | |
354 | | - | |
| 366 | + | |
355 | 367 | | |
356 | 368 | | |
357 | 369 | | |
| |||
564 | 576 | | |
565 | 577 | | |
566 | 578 | | |
567 | | - | |
| 579 | + | |
568 | 580 | | |
569 | 581 | | |
570 | 582 | | |
| |||
595 | 607 | | |
596 | 608 | | |
597 | 609 | | |
598 | | - | |
| 610 | + | |
599 | 611 | | |
600 | 612 | | |
601 | 613 | | |
| |||
611 | 623 | | |
612 | 624 | | |
613 | 625 | | |
614 | | - | |
| 626 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| |||
426 | 429 | | |
427 | 430 | | |
428 | 431 | | |
429 | | - | |
| 432 | + | |
430 | 433 | | |
431 | 434 | | |
432 | 435 | | |
| |||
440 | 443 | | |
441 | 444 | | |
442 | 445 | | |
443 | | - | |
| 446 | + | |
0 commit comments