67d56b2720
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. |
||
---|---|---|
.. | ||
aarch64 | ||
alpha | ||
arc | ||
arm | ||
avr | ||
bfin | ||
bpf | ||
c6x | ||
cr16 | ||
cris | ||
csky | ||
epiphany | ||
fr30 | ||
frv | ||
ft32 | ||
gcn | ||
h8300 | ||
i386 | ||
ia64 | ||
iq2000 | ||
lm32 | ||
m32c | ||
m32r | ||
m68k | ||
mcore | ||
microblaze | ||
mips | ||
mmix | ||
mn10300 | ||
moxie | ||
msp430 | ||
nds32 | ||
nios2 | ||
nvptx | ||
or1k | ||
pa | ||
pdp11 | ||
pru | ||
riscv | ||
rl78 | ||
rs6000 | ||
rx | ||
s390 | ||
sh | ||
sparc | ||
stormy16 | ||
tilegx | ||
tilepro | ||
v850 | ||
vax | ||
visium | ||
vms | ||
vxworks | ||
xtensa | ||
darwin-c.c | ||
darwin-d.c | ||
darwin-driver.c | ||
darwin-f.c | ||
darwin-ppc-ldouble-patch.def | ||
darwin-protos.h | ||
darwin-sections.def | ||
darwin.c | ||
darwin.h | ||
darwin.opt | ||
dbx.h | ||
dbxcoff.h | ||
dbxelf.h | ||
default-c.c | ||
default-d.c | ||
dragonfly-d.c | ||
dragonfly-stdint.h | ||
dragonfly.h | ||
dragonfly.opt | ||
elfos.h | ||
flat.h | ||
freebsd-d.c | ||
freebsd-nthr.h | ||
freebsd-spec.h | ||
freebsd-stdint.h | ||
freebsd.h | ||
freebsd.opt | ||
fuchsia.h | ||
fused-madd.opt | ||
g.opt | ||
glibc-c.c | ||
glibc-d.c | ||
glibc-stdint.h | ||
gnu-user.h | ||
gnu-user.opt | ||
gnu.h | ||
host-darwin.c | ||
host-darwin.h | ||
host-hpux.c | ||
host-linux.c | ||
host-netbsd.c | ||
host-openbsd.c | ||
host-solaris.c | ||
hpux11.opt | ||
hpux-stdint.h | ||
initfini-array.h | ||
kfreebsd-gnu.h | ||
kopensolaris-gnu.h | ||
linux-android.h | ||
linux-android.opt | ||
linux-protos.h | ||
linux.c | ||
linux.h | ||
linux.opt | ||
lynx.h | ||
lynx.opt | ||
netbsd-d.c | ||
netbsd-elf.h | ||
netbsd-elf.opt | ||
netbsd-protos.h | ||
netbsd-stdint.h | ||
netbsd.c | ||
netbsd.h | ||
netbsd.opt | ||
newlib-stdint.h | ||
openbsd-d.c | ||
openbsd-libpthread.h | ||
openbsd-stdint.h | ||
openbsd.h | ||
openbsd.opt | ||
phoenix.h | ||
print-sysroot-suffix.sh | ||
README | ||
rpath.opt | ||
rtems.h | ||
rtems.opt | ||
sol2-c.c | ||
sol2-clearcap.map | ||
sol2-clearcapv2.map | ||
sol2-cxx.c | ||
sol2-d.c | ||
sol2-protos.h | ||
sol2-stubs.c | ||
sol2.c | ||
sol2.h | ||
sol2.opt | ||
t-darwin | ||
t-dragonfly | ||
t-freebsd | ||
t-glibc | ||
t-libunwind | ||
t-linux | ||
t-lynx | ||
t-musl | ||
t-netbsd | ||
t-openbsd | ||
t-pnt16-warn | ||
t-rtems | ||
t-slibgcc | ||
t-sol2 | ||
t-sysroot-suffix | ||
t-uclibc | ||
t-vxworks | ||
t-winnt | ||
tm-dwarf2.h | ||
usegas.h | ||
usegld.h | ||
vx-common.h | ||
vxworks-c.c | ||
vxworks-dummy.h | ||
vxworks-stdint.h | ||
vxworks.c | ||
vxworks.h | ||
vxworks.opt | ||
vxworksae.h | ||
winnt-c.c | ||
x-cflags-O1 | ||
x-darwin | ||
x-hpux | ||
x-linux | ||
x-netbsd | ||
x-openbsd | ||
x-solaris |
This directory contains machine-specific files for the GNU C compiler. It has a subdirectory for each basic CPU type. The only files in this directory itself are some .h files that pertain to particular operating systems and are used for more than one CPU type.