Following the change to make arm_neon.h's (u?)int64x1_t types into vectors,
these types are now passed in the SIMD registers rather than general purpose
registers, which often results in poor quality code in functions taking or
returning these types. Often values are moved from vector registers into GPRs,
an operation performed, and the value moved back - yet the architecture is
capable of performing the operation directly on the SIMD registers. Hence these
patches are small tweaks to the relevant patterns.
The third patch, allowing AND+OR directly on values in SIMD registers, is more
complicated, as the XOR pattern there was never matched (due to action of
simplify_rtx) - the new pattern should also start to be used in GPR registers.
Regression-tested check-gcc check-g++ on aarch64-none-elf and
aarch64_be-none-elf.