Go to file
Stam Markianos-Wright 656412a7a4 gas: arm: Fix a further IT-predicated vcvt issue in the presense of MVE vcvtn
Previously we had experienced issues with assembling a "VCVTNE" instruction
in the presence of the MVE architecture extension, because it could be
interpreted both as:

* The base instruction VCVT + NE for IT predication when inside an IT block.
* The MVE instruction VCVTN + E in the Else of a VPT block.

Given a C reproducer of:
```
int test_function(float value)
{
  int ret_val = 10;
  if (value != 0.0)
  {
    ret_val = (int) value;
  }
  return ret_val;
}
```
GCC generates a VCVTNE instruction based on the `truncsisf2_vfp`
pattern, which will look like:
`vcvtne.s32.f32 s-reg, s-reg`
This still triggers an error due to being misidentified as "vcvtn+e"
Similar errors were found with other type combinations and instruction
patterns (these have all been added to the testing of this patch).

This class of errors was previously worked around by:
https://sourceware.org/pipermail/binutils/2020-August/112728.html
which addressed this by looking at the operand types, however,
that isn't adequate to cover all the extra cases that have been
found.  Instead, we add some special-casing logic earlier when
the instructions are parsed that is conditional on whether we are
in a VPT block or not, when the instruction is parsed.

gas/ChangeLog:

	* config/tc-arm.c (opcode_lookup): Add special vcvtn handling.
	* testsuite/gas/arm/mve-vcvtne-it-bad.l: Add further testing.
	* testsuite/gas/arm/mve-vcvtne-it-bad.s: Likewise.
	* testsuite/gas/arm/mve-vcvtne-it.d: Likewise.
	* testsuite/gas/arm/mve-vcvtne-it.s: Likewise.
2023-01-17 13:38:47 +00:00
bfd Fix snafu in previous delta for elf32-csky.c 2023-01-17 12:55:33 +00:00
binutils Update release making howto 2023-01-16 11:31:39 +00:00
config
contrib
cpu
elfcpp
etc
gas gas: arm: Fix a further IT-predicated vcvt issue in the presense of MVE vcvtn 2023-01-17 13:38:47 +00:00
gdb Pass internal gdb flags to --configuration invocations 2023-01-14 12:47:17 -07:00
gdbserver gdbserver: add comments to read_inferior_memory function 2023-01-13 16:41:05 +00:00
gdbsupport Set _WIN32_WINNT in common.m4 configure check 2023-01-11 11:00:42 -07:00
gnulib
gold Use __func__ rather than __FUNCTION__ 2023-01-12 17:20:21 +10:30
gprof
gprofng gprofng: PR29987 bfd/archive.c:1447: undefined reference to `filename_ncmp' 2023-01-13 11:54:08 -08:00
include ctf: fix various dreadful typos in the ctf_archive format comments 2023-01-12 14:40:47 +00:00
intl
ld Correct ld-pe/aarch64.d test output 2023-01-16 23:25:32 +10:30
libbacktrace Ensure that libbacktrace/allocfail.sh is not deleted when creating release tarballs. 2023-01-12 13:39:03 +00:00
libctf libctf: update regexp to allow makeinfo to build document 2023-01-16 23:18:38 +08:00
libdecnumber
libiberty
libsframe libsframe: replace an strncat with strcat 2023-01-13 11:15:43 -08:00
opcodes
readline
sim sim: assume sys/stat.h always exists (via gnulib) 2023-01-16 04:42:47 -05:00
texinfo
zlib
.cvsignore
.editorconfig
.gitattributes
.gitignore
ar-lib
ChangeLog
compile
config-ml.in
config.guess
config.rpath
config.sub
configure
configure.ac
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.