8sa1-gcc/gcc/config/arm
Alex Coplan 67d56b2720 arm: Various MVE vec_duplicate fixes [PR99647]
This patch fixes various issues with vec_duplicate in the MVE patterns.
Currently there are two patterns named *mve_mov<mode>. The second of
these is really a vector duplicate rather than a move, so I've renamed
it accordingly.

As it stands, there are several issues with this pattern:
1. The MVE_types iterator has an entry for TImode, but
   vec_duplicate:TI is invalid.
2. The mode of the operand to vec_duplicate is SImode, but it should
   vary according to the vector mode iterator.
3. The second alternative of this pattern is bogus: it allows matching
   symbol_refs (the cause of the PR) and const_ints (which means that it
   matches (vec_duplicate (const_int ...)) which is non-canonical: such
   rtxes should be const_vectors instead and handled by the main vector
   move pattern).

This patch fixes all of these issues, and removes the redundant
*mve_vec_duplicate<mode> pattern.

gcc/ChangeLog:

	PR target/99647
	* config/arm/iterators.md (MVE_vecs): New.
	(V_elem): Also handle V2DF.
	* config/arm/mve.md (*mve_mov<mode>): Rename to ...
	(*mve_vdup<mode>): ... this. Remove second alternative since
	vec_duplicate of const_int is not canonical RTL, and we don't
	want to match symbol_refs.
	(*mve_vec_duplicate<mode>): Delete (pattern is redundant).

gcc/testsuite/ChangeLog:

	PR target/99647
	* gcc.c-torture/compile/pr99647.c: New test.
2021-04-08 09:36:57 +01:00
..
aarch-common-protos.h
aarch-common.c
aarch-cost-tables.h
aout.h
arm926ejs.md
arm1020e.md
arm1026ejs.md
arm1136jfs.md
arm_acle_builtins.def
arm_acle.h
arm_bf16.h
arm_cde_builtins.def
arm_cde.h
arm_cmse.h
arm_fp16.h
arm_mve_builtins.def
arm_mve_types.h
arm_mve.h
arm_neon_builtins.def
arm_neon.h
arm_vfp_builtins.def
arm-builtins.c
arm-builtins.h
arm-c.c
arm-cpus.in
arm-d.c d: Define IN_TARGET_CODE in all machine-specific D language files. 2021-03-26 16:14:18 +01:00
arm-fixed.md
arm-flags.h
arm-generic.md
arm-ldmstm.ml
arm-modes.def
arm-opts.h
arm-protos.h
arm-simd-builtin-types.def
arm-tables.opt
arm-tune.md
arm.c arm: Fix PCS for SFmode -> SImode libcalls [PR99748] 2021-04-06 09:06:27 +01:00
arm.h
arm.md
arm.opt
bpabi.h
common.md
constraints.md
cortex-a5.md
cortex-a7.md
cortex-a8-neon.md
cortex-a8.md
cortex-a9-neon.md
cortex-a9.md
cortex-a15-neon.md
cortex-a15.md
cortex-a17-neon.md
cortex-a17.md
cortex-a53.md
cortex-a57.md
cortex-m4-fpu.md
cortex-m4.md
cortex-m7.md
cortex-r4.md
cortex-r4f.md
crypto.def
crypto.md
driver-arm.c
elf.h
exynos-m1.md
fa526.md
fa606te.md
fa626te.md
fa726te.md
fmp626.md
freebsd.h
fuchsia-elf.h
iterators.md arm: Various MVE vec_duplicate fixes [PR99647] 2021-04-08 09:36:57 +01:00
iwmmxt2.md
iwmmxt.md
ldmstm.md
ldrdstrd.md
linux-eabi.h
linux-elf.h
linux-gas.h
marvell-f-iwmmxt.md
marvell-pj4.md
mmintrin.h
mve.md arm: Various MVE vec_duplicate fixes [PR99647] 2021-04-08 09:36:57 +01:00
neon.md
netbsd-eabi.h
netbsd-elf.h
parsecpu.awk
predicates.md
README-interworking
rtems.h
semi.h
symbian.h
sync.md
t-aprofile
t-arm
t-arm-elf
t-bpabi
t-fuchsia
t-linux-androideabi
t-linux-eabi
t-multilib
t-phoenix
t-rmprofile
t-rtems
t-symbian
t-vxworks
thumb1.md
thumb2.md
types.md
uclinux-eabi.h
uclinux-elf.h
uclinuxfdpiceabi.h
unknown-elf.h
unspecs.md
vec-common.md arm: Fix mult autovectorization patterm for iwmmxt (PR target/99786) 2021-03-31 13:50:22 +00:00
vfp11.md
vfp.md
vxworks.h
vxworks.opt
x-arm
xgene1.md