aboutsummaryrefslogtreecommitdiff
path: root/malloc
diff options
context:
space:
mode:
authorJoe Ramsay <Joe.Ramsay@arm.com>2024-05-02 16:43:13 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2024-05-14 13:10:33 +0100
commit90a6ca8b28bf34e361e577e526e1b0f4c39a32a5 (patch)
tree69830b0b2204a585bcca976208ae412543c19dc1 /malloc
parentec6ed525f1aa24fd38ea5153e88d14d92d0d2f82 (diff)
downloadglibc-90a6ca8b28bf34e361e577e526e1b0f4c39a32a5.zip
glibc-90a6ca8b28bf34e361e577e526e1b0f4c39a32a5.tar.gz
glibc-90a6ca8b28bf34e361e577e526e1b0f4c39a32a5.tar.bz2
aarch64: Fix AdvSIMD libmvec routines for big-endian
Previously many routines used * to load from vector types stored in the data table. This is emitted as ldr, which byte-swaps the entire vector register, and causes bugs for big-endian when not all lanes contain the same value. When a vector is to be used this way, it has been replaced with an array and the load with an explicit ld1 intrinsic, which byte-swaps only within lanes. As well, many routines previously used non-standard GCC syntax for vector operations such as indexing into vectors types with [] and assembling vectors using {}. This syntax should not be mixed with ACLE, as the former does not respect endianness whereas the latter does. Such examples have been replaced with, for instance, vcombine_* and vgetq_lane* intrinsics. Helpers which only use the GCC syntax, such as the v_call helpers, do not need changing as they do not use intrinsics. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
Diffstat (limited to 'malloc')
0 files changed, 0 insertions, 0 deletions