8sa1-binutils-gdb/include
Richard Sandiford 2442d8466e [AArch64][SVE 24/32] Add AARCH64_OPND_SVE_PATTERN_SCALED
Some SVE instructions count the number of elements in a given vector
pattern and allow a scale factor of [1, 16] to be applied to the result.
This scale factor is written ", MUL #n", where "MUL" is a new operator.
E.g.:

	UQINCD	X0, POW2, MUL #2

This patch adds support for this kind of operand.

All existing operators were shifts of some kind, so there was a natural
range of [0, 63] regardless of context.  This was then narrowered further
by later checks (e.g. to [0, 31] when used for 32-bit values).

In contrast, MUL doesn't really have a natural context-independent range.
Rather than pick one arbitrarily, it seemed better to make the "shift"
amount a full 64-bit value and leave the range test to the usual
operand-checking code.  I've rearranged the fields of aarch64_opnd_info
so that this doesn't increase the size of the structure (although I don't
think its size is critical anyway).

include/
	* opcode/aarch64.h (AARCH64_OPND_SVE_PATTERN_SCALED): New
	aarch64_opnd.
	(AARCH64_MOD_MUL): New aarch64_modifier_kind.
	(aarch64_opnd_info): Make shifter.amount an int64_t and
	rearrange the fields.

opcodes/
	* aarch64-tbl.h (AARCH64_OPERANDS): Add an entry for
	AARCH64_OPND_SVE_PATTERN_SCALED.
	* aarch64-opc.h (FLD_SVE_imm4): New aarch64_field_kind.
	* aarch64-opc.c (fields): Add a corresponding entry.
	(set_multiplier_out_of_range_error): New function.
	(aarch64_operand_modifiers): Add entry for AARCH64_MOD_MUL.
	(operand_general_constraint_met_p): Handle
	AARCH64_OPND_SVE_PATTERN_SCALED.
	(print_register_offset_address): Use PRIi64 to print the
	shift amount.
	(aarch64_print_operand): Likewise.  Handle
	AARCH64_OPND_SVE_PATTERN_SCALED.
	* aarch64-opc-2.c: Regenerate.
	* aarch64-asm.h (ins_sve_scale): New inserter.
	* aarch64-asm.c (aarch64_ins_sve_scale): New function.
	* aarch64-asm-2.c: Regenerate.
	* aarch64-dis.h (ext_sve_scale): New inserter.
	* aarch64-dis.c (aarch64_ext_sve_scale): New function.
	* aarch64-dis-2.c: Regenerate.

gas/
	* config/tc-aarch64.c (SHIFTED_MUL): New parse_shift_mode.
	(parse_shift): Handle it.  Reject AARCH64_MOD_MUL for all other
	shift modes.  Skip range tests for AARCH64_MOD_MUL.
	(process_omitted_operand): Handle AARCH64_OPND_SVE_PATTERN_SCALED.
	(parse_operands): Likewise.
2016-09-21 16:55:22 +01:00
..
aout Copyright update for binutils 2016-01-01 23:00:01 +10:30
cgen Copyright update for binutils 2016-01-01 23:00:01 +10:30
coff sparc-coff writing uninitialized memory 2016-06-11 17:25:35 +09:30
elf Fixes to legacy ARC relocations. 2016-08-26 12:09:17 +02:00
gdb Pass SIGLIBRT directly to child processes. 2016-07-15 06:35:37 -07:00
mach-o Copyright update for binutils 2016-01-01 23:00:01 +10:30
nlm Copyright update for binutils 2016-01-01 23:00:01 +10:30
opcode [AArch64][SVE 24/32] Add AARCH64_OPND_SVE_PATTERN_SCALED 2016-09-21 16:55:22 +01:00
som Copyright update for binutils 2016-01-01 23:00:01 +10:30
vms Copyright update for binutils 2016-01-01 23:00:01 +10:30
alloca-conf.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ansidecl.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfdlink.h Add support for creating ELF import libraries 2016-07-15 17:50:48 +01:00
binary-io.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
bout.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ChangeLog [AArch64][SVE 24/32] Add AARCH64_OPND_SVE_PATTERN_SCALED 2016-09-21 16:55:22 +01:00
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-9103 Add copyright notices 2012-12-10 12:48:03 +00:00
COPYING
COPYING3
demangle.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
dis-asm.h Add support to the ARC disassembler for selecting instruction classes. 2016-07-20 17:08:07 +01:00
dwarf2.def Copyright update for binutils 2016-01-01 23:00:01 +10:30
dwarf2.h Add DW_LANG_Rust 2016-05-17 11:11:20 -06:00
dyn-string.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
environ.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
fibheap.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
filenames.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
floatformat.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
fnmatch.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
fopen-bin.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
fopen-same.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
fopen-vms.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
gcc-c-fe.def Copyright update for binutils 2016-01-01 23:00:01 +10:30
gcc-c-interface.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
gcc-interface.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
getopt.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
hashtab.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
hp-symtab.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ieee.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
leb128.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
libiberty.h Synchronize libiberty sources with FSF GCC mainline version. 2016-08-02 13:26:28 +01:00
longlong.h Import changes made to files shared with the FSF GCC project. 2016-01-11 11:06:56 +00:00
lto-symtab.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
MAINTAINERS Copyright update for binutils 2016-01-01 23:00:01 +10:30
md5.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
oasys.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
objalloc.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obstack.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
os9k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
partition.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
plugin-api.h Add new plugin hooks to support querying section alignment and size. 2016-03-03 12:09:06 -08:00
progress.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
safe-ctype.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
sha1.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
simple-object.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
sort.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
splay-tree.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
symcat.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
timeval-utils.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
vtv-change-permission.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xregex2.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xregex.h merge from gcc 2011-07-25 17:11:48 +00:00
xtensa-config.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xtensa-isa-internal.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xtensa-isa.h Copyright update for binutils 2016-01-01 23:00:01 +10:30