diff options
author | Srinath Parvathaneni <srinath.parvathaneni@arm.com> | 2024-06-25 13:00:03 +0100 |
---|---|---|
committer | Srinath Parvathaneni <srinath.parvathaneni@arm.com> | 2024-06-25 13:38:48 +0100 |
commit | f3eefcc18bb6f1cc98831b063a58aa5a9ee0b811 (patch) | |
tree | b2453b3a2eea55d833334e5734f6e7f2d3260d89 /gas | |
parent | 4f2cb9d129f8a5eba81379b70322d013b670045c (diff) | |
download | gdb-f3eefcc18bb6f1cc98831b063a58aa5a9ee0b811.zip gdb-f3eefcc18bb6f1cc98831b063a58aa5a9ee0b811.tar.gz gdb-f3eefcc18bb6f1cc98831b063a58aa5a9ee0b811.tar.bz2 |
arch64: Fix the wrong constraint used for sve2p1 instructions.
The current implementation for the following SVE2p1 instructions add a
constraint in aarch64_opcode_table[] array, so that these instruction
might be immediately preceded in program order by a MOVPRFX instruction.
As per the spec these instruction does not immediately preceded in
program order by a MOVPRFX instruction and to fix this issue, SVE2p1_INSNC
macro is replaced with SVE2p1_INSN macro for the entries of these
instructions in aarch64_opcode_table[] array.
List of instructions updated: addqv, andqv, smaxqv, sminqv, umaxqv, uminqv,
eorqv, faddqv, fmaxnmqv, fmaxqv, fminnmqv and fminqv.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/testsuite/gas/aarch64/sve2p1-1-invalid.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sve2p1-1-invalid.l | 101 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sve2p1-1-invalid.s | 26 |
3 files changed, 131 insertions, 0 deletions
diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-invalid.d b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.d new file mode 100644 index 0000000..91066f7 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.d @@ -0,0 +1,4 @@ +#name: Illegal test of SVE2.1 min max instructions with movprfx. +#as: -march=armv9.4-a +#source: sve2p1-1-invalid.s +#warning_output: sve2p1-1-invalid.l diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-invalid.l b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.l new file mode 100644 index 0000000..ecece13 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.l @@ -0,0 +1,101 @@ +.*: Assembler messages: +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.16b,p0,z0.b' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `addqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `andqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `smaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `sminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `umaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `uminqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `eorqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `faddqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxnmqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fmaxqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminnmqv v0.2d,p0,z0.d' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.8h,p0,z0.h' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.4s,p0,z0.s' +.*: Warning: SVE `movprfx' compatible instruction expected -- `fminqv v0.2d,p0,z0.d' diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-invalid.s b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.s new file mode 100644 index 0000000..1808027 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-1-invalid.s @@ -0,0 +1,26 @@ + .irp op1 addqv, andqv, smaxqv, sminqv, umaxqv, uminqv, eorqv + movprfx z3, z5 + \op1 v0.16b, p0, z0.b + movprfx z3, z5 + \op1 v0.8h, p0, z0.h + movprfx z3, z5 + \op1 v0.4s, p0, z0.s + movprfx z3, z5 + \op1 v0.2d, p0, z0.d + .endr + .irp op1 addqv, andqv, smaxqv, sminqv, umaxqv, uminqv, eorqv, faddqv, fmaxnmqv, fmaxqv, fminnmqv, fminqv + movprfx z0.d, p0/m, z31.d + \op1 v0.8h, p0, z0.h + movprfx z0.d, p0/m, z31.d + \op1 v0.4s, p0, z0.s + movprfx z0.d, p0/m, z31.d + \op1 v0.2d, p0, z0.d + .endr + .irp op1 addqv, andqv, smaxqv, sminqv, umaxqv, uminqv, eorqv, faddqv, fmaxnmqv, fmaxqv, fminnmqv, fminqv + movprfx z0.d, p0/z, z31.d + \op1 v0.8h, p0, z0.h + movprfx z0.d, p0/z, z31.d + \op1 v0.4s, p0, z0.s + movprfx z0.d, p0/z, z31.d + \op1 v0.2d, p0, z0.d + .endr |