Hi all, Similar to the previous patch, this one converts the high-half versions of the patterns. With this patch we can remove the UNSPEC_* codes involved entirely. Bootstrapped and tested on aarch64-none-linux-gnu. Also tested on aarch64_be-none-elf. Pushing to trunk. Thanks, Kyrill gcc/ChangeLog: * config/aarch64/aarch64-simd.md (aarch64_hn2_insn_le): Rename and reimplement with RTL codes to... (aarch64_hn2_insn_le): .. This. (aarch64_rhn2_insn_le): New pattern. (aarch64_hn2_insn_be): Rename and reimplement with RTL codes to... (aarch64_hn2_insn_be): ... This. (aarch64_rhn2_insn_be): New pattern. (aarch64_hn2): Rename and adjust expander to... (aarch64_hn2): ... This. (aarch64_rhn2): New expander. * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN, UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs. (ADDSUBHN): Delete. (sur): Remove handling of the above. (addsub): Likewise.