]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Allow moves after tied-register intrinsics
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 9 May 2023 06:43:33 +0000 (07:43 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Tue, 9 May 2023 06:43:33 +0000 (07:43 +0100)
commit4ff89f10ca0d41f9cfa767d30647b968624ecdf2
tree3bbf425c1b987d8360160f13497b7657c50b2e5e
parentaebd8471a172706fe645c4fc931b085d4f040b49
aarch64: Allow moves after tied-register intrinsics

Some ACLE intrinsics map to instructions that tie the output
operand to an input operand.  If all the operands are allocated
to different registers, and if MOVPRFX can't be used, we will need
a move either before the instruction or after it.  Many tests only
matched the "before" case; this patch makes them accept the "after"
case too.

gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c: Allow
moves to occur after the intrinsic instruction, rather than requiring
them to happen before.
* gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c: Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/adda_f16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/adda_f32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/adda_f64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/brka_b.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/brkb_b.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/brkn_b.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clasta_bf16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clasta_f16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clasta_f32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clasta_f64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clastb_bf16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clastb_f16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clastb_f32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/clastb_f64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/pfirst_b.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/pnext_b16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/pnext_b32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/pnext_b64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/pnext_b8.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_s16.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_s32.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_s64.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_s8.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_u16.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_u32.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_u64.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sli_u8.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_s16.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_s32.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_s64.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_s8.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_u16.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_u32.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_u64.c: Likewise.
* gcc.target/aarch64/sve2/acle/asm/sri_u8.c: Likewise.
38 files changed:
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/adda_f16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/adda_f32.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/adda_f64.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/brka_b.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/brkb_b.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/brkn_b.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clasta_bf16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clasta_f16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clasta_f32.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clasta_f64.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clastb_bf16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clastb_f16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clastb_f32.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/clastb_f64.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pfirst_b.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b16.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b32.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b64.c
gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b8.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_s16.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_s32.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_s64.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_s8.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_u16.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_u32.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_u64.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sli_u8.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_s16.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_s32.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_s64.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_s8.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_u16.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_u32.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_u64.c
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sri_u8.c