https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108810
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-02-17 Status|UNCONFIRMED |NEW Component|target |testsuite CC| |linkw at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Kewen Lin <linkw at gcc dot gnu.org> --- This is an test case issue: double testd_cst (vector double vd2) { return vec_extract (vd2, 1); } got xxlor on LE but xxpermdi on BE. The scan insn xxlor is for the high order element, the index is 0 on BE and 1 on LE. The below diff can fix it: diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c index 6c515035d1a..100f680fd02 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c @@ -18,9 +18,15 @@ testd_var (vector double vd2, signed int si) return vec_extract (vd2, si); } +#ifdef __BIG_ENDIAN__ +#define HIGH_ORDER_ELEMENT_INDEX 0 +#else +#define HIGH_ORDER_ELEMENT_INDEX 1 +#endif + double testd_cst (vector double vd2) { - return vec_extract (vd2, 1); + return vec_extract (vd2, HIGH_ORDER_ELEMENT_INDEX); }