https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123951
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Summary|The vcopyq_laneq_u64 |[14/15/16 Regression]
|intrinsic unexpectedly |vcopyq_laneq_u64
|modifies the value of its |miscompiled due to
|second argument(Aarch64). |incorrect conversion of
| |BFR/BI for big-endian since
| |r14-3381
Ever confirmed|0 |1
Target Milestone|--- |14.4
Component|target |tree-optimization
Last reconfirmed| |2026-02-03
Target|aarch64 |aarch64_be
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
testcase:
```
#include "arm_neon.h"
#define BUILD_TEST(TYPE1, TYPE2, Q1, Q2, SUFFIX, INDEX1, INDEX2) \
TYPE1 __attribute__((noinline,noclone)) \
test_copy##Q1##_lane##Q2##_##SUFFIX (TYPE1 a, TYPE2 b) \
{ \
return vcopy##Q1##_lane##Q2##_##SUFFIX (a, INDEX1, b, INDEX2); \
}
BUILD_TEST (float64x2_t, float64x2_t, q, q, f64, 1, 1)
BUILD_TEST (int64x2_t, int64x2_t, q, q, s64, 1, 1)
BUILD_TEST (uint64x2_t, uint64x2_t, q, q, u64, 1, 1)
/* { dg-final { scan-assembler-times "ins\\tv0.d\\\[1\\\], v1.d\\\[1\\\]" 3 } }
*/
```
r14-3381-g27de9aa152141e .
The issue is BFR indecies are "swapped".