diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2023-03-30 11:09:12 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-03-30 11:09:12 +0100 |
commit | cbd11b8818335007cf960e0cecc4dec445f80327 (patch) | |
tree | 0c93cdb222610d90df1b5d74fd31c55b3c6db96f /gas/testsuite | |
parent | 99e01a66b4c619fb8c7d6f978038eb7a3661c160 (diff) | |
download | gdb-cbd11b8818335007cf960e0cecc4dec445f80327.zip gdb-cbd11b8818335007cf960e0cecc4dec445f80327.tar.gz gdb-cbd11b8818335007cf960e0cecc4dec445f80327.tar.bz2 |
aarch64: Add the SME2 ZT0 instructions
SME2 adds lookup table instructions for quantisation. They use
a new lookup table register called ZT0.
LUTI2 takes an unsuffixed SVE vector index of the form Zn[<imm>],
which is the first time that this syntax has been used.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/aarch64/sme-4-illegal.l | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8-invalid.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8-invalid.l | 208 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8-invalid.s | 116 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8-noarch.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8-noarch.l | 104 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8.d | 112 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sme2-8.s | 124 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sve-invalid.l | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/sve-invalid.s | 1 |
10 files changed, 682 insertions, 3 deletions
diff --git a/gas/testsuite/gas/aarch64/sme-4-illegal.l b/gas/testsuite/gas/aarch64/sme-4-illegal.l index 86e3154..a9e9852 100644 --- a/gas/testsuite/gas/aarch64/sme-4-illegal.l +++ b/gas/testsuite/gas/aarch64/sme-4-illegal.l @@ -22,11 +22,11 @@ [^:]*:[0-9]+: Error: syntax error in register list at operand 1 -- `zero {za,}' [^:]*:[0-9]+: Error: unexpected character `}' in element size at operand 1 -- `zero {za.}' [^:]*:[0-9]+: Error: expected '}' at operand 1 -- `zero {za-}' -[^:]*:[0-9]+: Error: expected 'za' or a ZA tile at operand 1 -- `zero {za_}' +[^:]*:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {za_}' [^:]*:[0-9]+: Error: expected '}' at operand 1 -- `zero {za#}' -[^:]*:[0-9]+: Error: expected 'za' or a ZA tile at operand 1 -- `zero {zaX}' +[^:]*:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {zaX}' [^:]*:[0-9]+: Error: missing ZA tile size at operand 1 -- `zero {za0}' -[^:]*:[0-9]+: Error: expected 'za' or a ZA tile at operand 1 -- `zero {zax}' +[^:]*:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {zax}' [^:]*:[0-9]+: Error: expected '}' at operand 1 -- `zero {za{}' [^:]*:[0-9]+: Error: unexpected characters following instruction at operand 1 -- `zero {za}}' [^:]*:[0-9]+: Error: ZA tile masks do not operate at .Q granularity at operand 1 -- `zero {za0\.q}' diff --git a/gas/testsuite/gas/aarch64/sme2-8-invalid.d b/gas/testsuite/gas/aarch64/sme2-8-invalid.d new file mode 100644 index 0000000..d9f587d --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8-invalid.d @@ -0,0 +1,3 @@ +#as: -march=armv8-a +#source: sme2-8-invalid.s +#error_output: sme2-8-invalid.l diff --git a/gas/testsuite/gas/aarch64/sme2-8-invalid.l b/gas/testsuite/gas/aarch64/sme2-8-invalid.l new file mode 100644 index 0000000..afea8bb --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8-invalid.l @@ -0,0 +1,208 @@ +[^ :]+: Assembler messages: +[^ :]+:[0-9]+: Error: expected '{' at operand 1 -- `zero 0' +[^ :]+:[0-9]+: Error: expected '{' at operand 1 -- `zero zt0' +[^ :]+:[0-9]+: Error: syntax error in register list at operand 1 -- `zero {' +[^ :]+:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {foo}' +[^ :]+:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {zt}' +[^ :]+:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {x0}' +[^ :]+:[0-9]+: Error: expected ZT0 or a ZA mask at operand 1 -- `zero {z0}' +[^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0' +[^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0\.b}' +[^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0,zt0}' +[^ :]+:[0-9]+: Error: expected a register at operand 1 -- `movt 0,zt0\[0\]' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `movt x0,0' +[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0,x0' +[^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt za\[0\],x0' +[^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt za0\[0\],x0' +[^ :]+:[0-9]+: Error: bad expression at operand 1 -- `movt zt0\[#0\],x0' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[-1\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[1\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[2\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[4\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[7\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[49\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[50\],x0' +[^ :]+:[0-9]+: Error: byte index must be a multiple of 8 at operand 1 -- `movt zt0\[52\],x0' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[57\],x0' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[64\],x0' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[1<<32\],x0' +[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0\.b\[0\],x0' +[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0/z\[0\],x0' +[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],sp' +[^ :]+:[0-9]+: Error: operand mismatch -- `movt zt0\[0\],w0' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: movt zt0\[0\], x0 +[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],wsp' +[^ :]+:[0-9]+: Error: operand mismatch -- `movt zt0\[0\],wzr' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: movt zt0\[0\], xzr +[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],0' +[^ :]+:[0-9]+: Error: expected a register at operand 1 -- `ldr 0,\[x0\]' +[^ :]+:[0-9]+: Error: invalid addressing mode at operand 2 -- `ldr zt0,0' +[^ :]+:[0-9]+: Error: operand 2 must be an address with base register \(no offset\) -- `ldr zt0,\[x0,#0\]' +[^ :]+:[0-9]+: Error: expected a register at operand 1 -- `ldr Zt0,\[x0\]' +[^ :]+:[0-9]+: Error: expected a register at operand 1 -- `ldr zT0,\[x0\]' +[^ :]+:[0-9]+: Error: '\]' expected at operand 2 -- `ldr zt0,\[x0,#0,mul vl\]' +[^ :]+:[0-9]+: Error: expected a 64-bit base register at operand 2 -- `ldr zt0,\[w0\]' +[^ :]+:[0-9]+: Error: missing offset in the pre-indexed address at operand 2 -- `ldr zt0,\[x0\]!' +[^ :]+:[0-9]+: Error: invalid base register at operand 2 -- `ldr zt0,\[xzr\]' +[^ :]+:[0-9]+: Error: expected a 64-bit base register at operand 2 -- `ldr zt0,\[wsp\]' +[^ :]+:[0-9]+: Error: invalid addressing mode at operand 2 -- `ldr zt0,\[x0,xzr\]' +[^ :]+:[0-9]+: Error: invalid addressing mode at operand 2 -- `ldr zt0,\[x1,x2\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 15 at operand 3 -- `luti2 z0\.b,zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 15 at operand 3 -- `luti2 z0\.b,zt0,z0\[16\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 z0\.b,zt0,z0\.b\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 z0,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 z0\.d,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 z0\.q,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `luti2 z0\.b,zt0,zt0' +[^ :]+:[0-9]+: Error: expected a register or register list at operand 1 -- `luti2 0,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti2 z0\.b,0,z0\[0\]' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `luti2 z0\.b,zt0,0' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti2 {z1\.b-z2\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti2 {z0\.b-z1\.b},z0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti2 {z0\.b-z1\.b},za,z0\[0\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.h-z1\.h},zt0,z0\.h\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: register element index out of range 0 to 7 at operand 3 -- `luti2 {z0\.h-z1\.h},zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 7 at operand 3 -- `luti2 {z0\.h-z1\.h},zt0,z0\[8\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.d-z1\.d},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.q-z1\.q},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti2 {z1\.s-z4\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti2 {z2\.s-z5\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti2 {z3\.s-z6\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti2 {z0\.s-z3\.s},z0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti2 {z0\.b-z3\.b},za,z0\[0\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.b-z3\.b},zt0,z0\.b\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z3\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `luti2 {z0\.b-z3\.b},zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `luti2 {z0\.b-z3\.b},zt0,z0\[4\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.d-z3\.d},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z3\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti2 {z0\.q-z3\.q},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti2 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti2 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti2 {z0\.s-z3\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: expected a register or register list at operand 1 -- `luti4 0,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti4 z0\.b,0,z0\[0\]' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `luti4 z0\.b,zt0,0' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 7 at operand 3 -- `luti4 z0\.h,zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 7 at operand 3 -- `luti4 z0\.h,zt0,z0\[8\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 z0\.h,zt0,z0\.h\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 z0,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 z0\.d,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 z0\.q,zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 z0\.b, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 z0\.h, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 z0\.s, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `luti4 z0\.h,zt0,zt0' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti4 {z1\.h-z2\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 {z0\.h-z1\.h},z0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 {z0\.h-z1\.h},za,z0\[0\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.h-z1\.h},zt0,z0\.h\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `luti4 {z0\.h-z1\.h},zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `luti4 {z0\.h-z1\.h},zt0,z0\[4\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.d-z1\.d},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.q-z1\.q},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z1\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z1\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z1\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti4 {z1\.s-z4\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti4 {z2\.s-z5\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti4 {z3\.s-z6\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 {z0\.s-z3\.s},z0,z0\[0\]' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 {z0\.s-z3\.s},za,z0\[0\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.s-z3\.s},zt0,z0\.s\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z3\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: register element index out of range 0 to 1 at operand 3 -- `luti4 {z0\.s-z3\.s},zt0,z0\[-1\]' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 1 at operand 3 -- `luti4 {z0\.s-z3\.s},zt0,z0\[2\]' +[^ :]+:[0-9]+: Error: expected a list of 2 registers at operand 1 -- `luti4 {z0\.b-z3\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.d-z3\.d},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z3\.s}, zt0, z0\[0\] +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z0\.q-z3\.q},zt0,z0\[0\]' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z0\.b-z3\.b}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: luti4 {z0\.h-z3\.h}, zt0, z0\[0\] +[^ :]+:[0-9]+: Info: luti4 {z0\.s-z3\.s}, zt0, z0\[0\] diff --git a/gas/testsuite/gas/aarch64/sme2-8-invalid.s b/gas/testsuite/gas/aarch64/sme2-8-invalid.s new file mode 100644 index 0000000..a9712c7 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8-invalid.s @@ -0,0 +1,116 @@ + zero 0 + + zero zt0 + zero { + zero { foo } + zero { zt } + zero { x0 } + zero { z0 } + zero { zt0 + zero { zt0.b } + zero { zt0, zt0 } + + movt 0, zt0[0] + movt x0, 0 + + movt zt0, x0 + movt za[0], x0 + movt za0[0], x0 + movt zt0[#0], x0 + movt zt0[-1], x0 + movt zt0[1],x0 + movt zt0[2],x0 + movt zt0[4],x0 + movt zt0[7],x0 + movt zt0[49],x0 + movt zt0[50],x0 + movt zt0[52],x0 + movt zt0[57],x0 + movt zt0[64], x0 + movt zt0[1<<32], x0 + movt zt0.b[0], x0 + movt zt0/z[0], x0 + movt zt0[0], sp + movt zt0[0], w0 + movt zt0[0], wsp + movt zt0[0], wzr + movt zt0[0], 0 + + ldr 0, [x0] + ldr zt0, 0 + + ldr zt0, [x0, #0] + ldr Zt0, [x0] + ldr zT0, [x0] + ldr zt0, [x0, #0, mul vl] + ldr zt0, [w0] + ldr zt0, [x0]! + ldr zt0, [xzr] + ldr zt0, [wsp] + ldr zt0, [x0, xzr] + ldr zt0, [x1, x2] + + luti2 z0.b, zt0, z0[-1] + luti2 z0.b, zt0, z0[16] + luti2 z0.b, zt0, z0.b[0] + luti2 z0, zt0, z0[0] + luti2 z0.d, zt0, z0[0] + luti2 z0.q, zt0, z0[0] + luti2 z0.b, zt0, zt0 + + luti2 0, zt0, z0[0] + luti2 z0.b, 0, z0[0] + luti2 z0.b, zt0, 0 + + luti2 { z1.b - z2.b }, zt0, z0[0] + luti2 { z0.b - z1.b }, z0, z0[0] + luti2 { z0.b - z1.b }, za, z0[0] + luti2 { z0.h - z1.h }, zt0, z0.h[0] + luti2 { z0.h - z1.h }, zt0, z0[-1] + luti2 { z0.h - z1.h }, zt0, z0[8] + luti2 { z0.d - z1.d }, zt0, z0[0] + luti2 { z0.q - z1.q }, zt0, z0[0] + + luti2 { z1.s - z4.s }, zt0, z0[0] + luti2 { z2.s - z5.s }, zt0, z0[0] + luti2 { z3.s - z6.s }, zt0, z0[0] + luti2 { z0.s - z3.s }, z0, z0[0] + luti2 { z0.b - z3.b }, za, z0[0] + luti2 { z0.b - z3.b }, zt0, z0.b[0] + luti2 { z0.b - z3.b }, zt0, z0[-1] + luti2 { z0.b - z3.b }, zt0, z0[4] + luti2 { z0.d - z3.d }, zt0, z0[0] + luti2 { z0.q - z3.q }, zt0, z0[0] + + luti4 0, zt0, z0[0] + luti4 z0.b, 0, z0[0] + luti4 z0.b, zt0, 0 + + luti4 z0.h, zt0, z0[-1] + luti4 z0.h, zt0, z0[8] + luti4 z0.h, zt0, z0.h[0] + luti4 z0, zt0, z0[0] + luti4 z0.d, zt0, z0[0] + luti4 z0.q, zt0, z0[0] + luti4 z0.h, zt0, zt0 + + luti4 { z1.h - z2.h }, zt0, z0[0] + luti4 { z0.h - z1.h }, z0, z0[0] + luti4 { z0.h - z1.h }, za, z0[0] + luti4 { z0.h - z1.h }, zt0, z0.h[0] + luti4 { z0.h - z1.h }, zt0, z0[-1] + luti4 { z0.h - z1.h }, zt0, z0[4] + luti4 { z0.d - z1.d }, zt0, z0[0] + luti4 { z0.q - z1.q }, zt0, z0[0] + + luti4 { z1.s - z4.s }, zt0, z0[0] + luti4 { z2.s - z5.s }, zt0, z0[0] + luti4 { z3.s - z6.s }, zt0, z0[0] + luti4 { z0.s - z3.s }, z0, z0[0] + luti4 { z0.s - z3.s }, za, z0[0] + luti4 { z0.s - z3.s }, zt0, z0.s[0] + luti4 { z0.s - z3.s }, zt0, z0[-1] + luti4 { z0.s - z3.s }, zt0, z0[2] + luti4 { z0.b - z3.b }, zt0, z0[0] + luti4 { z0.d - z3.d }, zt0, z0[0] + luti4 { z0.q - z3.q }, zt0, z0[0] diff --git a/gas/testsuite/gas/aarch64/sme2-8-noarch.d b/gas/testsuite/gas/aarch64/sme2-8-noarch.d new file mode 100644 index 0000000..116e9d6 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8-noarch.d @@ -0,0 +1,3 @@ +#as: -march=armv8-a+sme +#source: sme2-8.s +#error_output: sme2-8-noarch.l diff --git a/gas/testsuite/gas/aarch64/sme2-8-noarch.l b/gas/testsuite/gas/aarch64/sme2-8-noarch.l new file mode 100644 index 0000000..994b359 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8-noarch.l @@ -0,0 +1,104 @@ +[^ :]+: Assembler messages: +[^ :]+:[0-9]+: Error: selected processor does not support `zero {zt0}' +[^ :]+:[0-9]+: Error: selected processor does not support `zero {ZT0}' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x0,zt0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt X0,ZT0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x30,zt0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt xzr,zt0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x0,zt0\[56\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x9,zt0\[24\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x15,zt0\[40\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt x22,zt0\[48\]' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[0\],x0' +[^ :]+:[0-9]+: Error: selected processor does not support `movt ZT0\[0\],X0' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[56\],x0' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[0\],x30' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[0\],xzr' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[8\],x20' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[16\],x25' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[32\],x27' +[^ :]+:[0-9]+: Error: selected processor does not support `movt zt0\[24\],x29' +[^ :]+:[0-9]+: Error: selected processor does not support `ldr zt0,\[x0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `ldr ZT0,\[X0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `ldr zt0,\[x30\]' +[^ :]+:[0-9]+: Error: selected processor does not support `ldr zt0,\[sp\]' +[^ :]+:[0-9]+: Error: selected processor does not support `str zt0,\[x0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `str ZT0,\[X0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `str zt0,\[x30\]' +[^ :]+:[0-9]+: Error: selected processor does not support `str zt0,\[sp\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.b,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 Z0\.B,ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z31\.b,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.b,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.b,zt0,z0\[15\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.h,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z31\.h,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.h,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.h,zt0,z0\[15\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.s,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z31\.s,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.s,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 z0\.s,zt0,z0\[15\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z1\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {Z0\.B-Z1\.B},ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z30\.b-z31\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z1\.b},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z1\.b},zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z1\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z30\.h-z31\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z1\.h},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z1\.h},zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z1\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z30\.s-z31\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z1\.s},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z1\.s},zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z3\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {Z0\.B-Z3\.B},ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z28\.b-z31\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z3\.b},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.b-z3\.b},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z3\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z28\.h-z31\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z3\.h},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.h-z3\.h},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z3\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z28\.s-z31\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z3\.s},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti2 {z0\.s-z3\.s},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.b,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 Z0\.b,ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z31\.b,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.b,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.b,zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.h,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 Z0\.H,ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z31\.h,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.h,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.h,zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.s,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z31\.s,zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.s,zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 z0\.s,zt0,z0\[7\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.b-z1\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {Z0\.b-Z1\.b},ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z30\.b-z31\.b},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.b-z1\.b},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.b-z1\.b},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z1\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {Z0\.H-Z1\.H},ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z30\.h-z31\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z1\.h},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z1\.h},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z1\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z30\.s-z31\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z1\.s},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z1\.s},zt0,z0\[3\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z3\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {Z0\.H-Z3\.H},ZT0,Z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z28\.h-z31\.h},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z3\.h},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.h-z3\.h},zt0,z0\[1\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z3\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z28\.s-z31\.s},zt0,z0\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z3\.s},zt0,z31\[0\]' +[^ :]+:[0-9]+: Error: selected processor does not support `luti4 {z0\.s-z3\.s},zt0,z0\[1\]' diff --git a/gas/testsuite/gas/aarch64/sme2-8.d b/gas/testsuite/gas/aarch64/sme2-8.d new file mode 100644 index 0000000..a129dff --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8.d @@ -0,0 +1,112 @@ +#as: -march=armv8-a+sme2 +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +[^:]+: c0480001 zero {zt0} +[^:]+: c0480001 zero {zt0} +[^:]+: c04c03e0 movt x0, zt0\[0\] +[^:]+: c04c03e0 movt x0, zt0\[0\] +[^:]+: c04c03fe movt x30, zt0\[0\] +[^:]+: c04c03ff movt xzr, zt0\[0\] +[^:]+: c04c73e0 movt x0, zt0\[56\] +[^:]+: c04c33e9 movt x9, zt0\[24\] +[^:]+: c04c53ef movt x15, zt0\[40\] +[^:]+: c04c63f6 movt x22, zt0\[48\] +[^:]+: c04e03e0 movt zt0\[0\], x0 +[^:]+: c04e03e0 movt zt0\[0\], x0 +[^:]+: c04e73e0 movt zt0\[56\], x0 +[^:]+: c04e03fe movt zt0\[0\], x30 +[^:]+: c04e03ff movt zt0\[0\], xzr +[^:]+: c04e13f4 movt zt0\[8\], x20 +[^:]+: c04e23f9 movt zt0\[16\], x25 +[^:]+: c04e43fb movt zt0\[32\], x27 +[^:]+: c04e33fd movt zt0\[24\], x29 +[^:]+: e11f8000 ldr zt0, \[x0\] +[^:]+: e11f8000 ldr zt0, \[x0\] +[^:]+: e11f83c0 ldr zt0, \[x30\] +[^:]+: e11f83e0 ldr zt0, \[sp\] +[^:]+: e13f8000 str zt0, \[x0\] +[^:]+: e13f8000 str zt0, \[x0\] +[^:]+: e13f83c0 str zt0, \[x30\] +[^:]+: e13f83e0 str zt0, \[sp\] +[^:]+: c0cc0000 luti2 z0\.b, zt0, z0\[0\] +[^:]+: c0cc0000 luti2 z0\.b, zt0, z0\[0\] +[^:]+: c0cc001f luti2 z31\.b, zt0, z0\[0\] +[^:]+: c0cc03e0 luti2 z0\.b, zt0, z31\[0\] +[^:]+: c0cfc000 luti2 z0\.b, zt0, z0\[15\] +[^:]+: c0cc1000 luti2 z0\.h, zt0, z0\[0\] +[^:]+: c0cc101f luti2 z31\.h, zt0, z0\[0\] +[^:]+: c0cc13e0 luti2 z0\.h, zt0, z31\[0\] +[^:]+: c0cfd000 luti2 z0\.h, zt0, z0\[15\] +[^:]+: c0cc2000 luti2 z0\.s, zt0, z0\[0\] +[^:]+: c0cc201f luti2 z31\.s, zt0, z0\[0\] +[^:]+: c0cc23e0 luti2 z0\.s, zt0, z31\[0\] +[^:]+: c0cfe000 luti2 z0\.s, zt0, z0\[15\] +[^:]+: c08c4000 luti2 {z0\.b-z1\.b}, zt0, z0\[0\] +[^:]+: c08c4000 luti2 {z0\.b-z1\.b}, zt0, z0\[0\] +[^:]+: c08c401e luti2 {z30\.b-z31\.b}, zt0, z0\[0\] +[^:]+: c08c43e0 luti2 {z0\.b-z1\.b}, zt0, z31\[0\] +[^:]+: c08fc000 luti2 {z0\.b-z1\.b}, zt0, z0\[7\] +[^:]+: c08c5000 luti2 {z0\.h-z1\.h}, zt0, z0\[0\] +[^:]+: c08c501e luti2 {z30\.h-z31\.h}, zt0, z0\[0\] +[^:]+: c08c53e0 luti2 {z0\.h-z1\.h}, zt0, z31\[0\] +[^:]+: c08fd000 luti2 {z0\.h-z1\.h}, zt0, z0\[7\] +[^:]+: c08c6000 luti2 {z0\.s-z1\.s}, zt0, z0\[0\] +[^:]+: c08c601e luti2 {z30\.s-z31\.s}, zt0, z0\[0\] +[^:]+: c08c63e0 luti2 {z0\.s-z1\.s}, zt0, z31\[0\] +[^:]+: c08fe000 luti2 {z0\.s-z1\.s}, zt0, z0\[7\] +[^:]+: c08c8000 luti2 {z0\.b-z3\.b}, zt0, z0\[0\] +[^:]+: c08c8000 luti2 {z0\.b-z3\.b}, zt0, z0\[0\] +[^:]+: c08c801c luti2 {z28\.b-z31\.b}, zt0, z0\[0\] +[^:]+: c08c83e0 luti2 {z0\.b-z3\.b}, zt0, z31\[0\] +[^:]+: c08f8000 luti2 {z0\.b-z3\.b}, zt0, z0\[3\] +[^:]+: c08c9000 luti2 {z0\.h-z3\.h}, zt0, z0\[0\] +[^:]+: c08c901c luti2 {z28\.h-z31\.h}, zt0, z0\[0\] +[^:]+: c08c93e0 luti2 {z0\.h-z3\.h}, zt0, z31\[0\] +[^:]+: c08f9000 luti2 {z0\.h-z3\.h}, zt0, z0\[3\] +[^:]+: c08ca000 luti2 {z0\.s-z3\.s}, zt0, z0\[0\] +[^:]+: c08ca01c luti2 {z28\.s-z31\.s}, zt0, z0\[0\] +[^:]+: c08ca3e0 luti2 {z0\.s-z3\.s}, zt0, z31\[0\] +[^:]+: c08fa000 luti2 {z0\.s-z3\.s}, zt0, z0\[3\] +[^:]+: c0ca0000 luti4 z0\.b, zt0, z0\[0\] +[^:]+: c0ca0000 luti4 z0\.b, zt0, z0\[0\] +[^:]+: c0ca001f luti4 z31\.b, zt0, z0\[0\] +[^:]+: c0ca03e0 luti4 z0\.b, zt0, z31\[0\] +[^:]+: c0cbc000 luti4 z0\.b, zt0, z0\[7\] +[^:]+: c0ca1000 luti4 z0\.h, zt0, z0\[0\] +[^:]+: c0ca1000 luti4 z0\.h, zt0, z0\[0\] +[^:]+: c0ca101f luti4 z31\.h, zt0, z0\[0\] +[^:]+: c0ca13e0 luti4 z0\.h, zt0, z31\[0\] +[^:]+: c0cbd000 luti4 z0\.h, zt0, z0\[7\] +[^:]+: c0ca2000 luti4 z0\.s, zt0, z0\[0\] +[^:]+: c0ca201f luti4 z31\.s, zt0, z0\[0\] +[^:]+: c0ca23e0 luti4 z0\.s, zt0, z31\[0\] +[^:]+: c0cbe000 luti4 z0\.s, zt0, z0\[7\] +[^:]+: c08a4000 luti4 {z0\.b-z1\.b}, zt0, z0\[0\] +[^:]+: c08a4000 luti4 {z0\.b-z1\.b}, zt0, z0\[0\] +[^:]+: c08a401e luti4 {z30\.b-z31\.b}, zt0, z0\[0\] +[^:]+: c08a43e0 luti4 {z0\.b-z1\.b}, zt0, z31\[0\] +[^:]+: c08bc000 luti4 {z0\.b-z1\.b}, zt0, z0\[3\] +[^:]+: c08a5000 luti4 {z0\.h-z1\.h}, zt0, z0\[0\] +[^:]+: c08a5000 luti4 {z0\.h-z1\.h}, zt0, z0\[0\] +[^:]+: c08a501e luti4 {z30\.h-z31\.h}, zt0, z0\[0\] +[^:]+: c08a53e0 luti4 {z0\.h-z1\.h}, zt0, z31\[0\] +[^:]+: c08bd000 luti4 {z0\.h-z1\.h}, zt0, z0\[3\] +[^:]+: c08a6000 luti4 {z0\.s-z1\.s}, zt0, z0\[0\] +[^:]+: c08a601e luti4 {z30\.s-z31\.s}, zt0, z0\[0\] +[^:]+: c08a63e0 luti4 {z0\.s-z1\.s}, zt0, z31\[0\] +[^:]+: c08be000 luti4 {z0\.s-z1\.s}, zt0, z0\[3\] +[^:]+: c08a9000 luti4 {z0\.h-z3\.h}, zt0, z0\[0\] +[^:]+: c08a9000 luti4 {z0\.h-z3\.h}, zt0, z0\[0\] +[^:]+: c08a901c luti4 {z28\.h-z31\.h}, zt0, z0\[0\] +[^:]+: c08a93e0 luti4 {z0\.h-z3\.h}, zt0, z31\[0\] +[^:]+: c08b9000 luti4 {z0\.h-z3\.h}, zt0, z0\[1\] +[^:]+: c08aa000 luti4 {z0\.s-z3\.s}, zt0, z0\[0\] +[^:]+: c08aa01c luti4 {z28\.s-z31\.s}, zt0, z0\[0\] +[^:]+: c08aa3e0 luti4 {z0\.s-z3\.s}, zt0, z31\[0\] +[^:]+: c08ba000 luti4 {z0\.s-z3\.s}, zt0, z0\[1\] diff --git a/gas/testsuite/gas/aarch64/sme2-8.s b/gas/testsuite/gas/aarch64/sme2-8.s new file mode 100644 index 0000000..2bd5449 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-8.s @@ -0,0 +1,124 @@ + zero { zt0 } + ZERO { ZT0 } + + movt x0, zt0[0] + MOVT X0, ZT0[0] + movt x30, zt0[0] + movt xzr, zt0[0] + movt x0, zt0[56] + movt x9, zt0[24] + movt x15, zt0[40] + movt x22, zt0[48] + + movt zt0[0], x0 + MOVT ZT0[0], X0 + movt zt0[56], x0 + movt zt0[0], x30 + movt zt0[0], xzr + movt zt0[8], x20 + movt zt0[16], x25 + movt zt0[32], x27 + movt zt0[24], x29 + + ldr zt0, [x0] + LDR ZT0, [X0] + ldr zt0, [x30] + ldr zt0, [sp] + + str zt0, [x0] + STR ZT0, [X0] + str zt0, [x30] + str zt0, [sp] + + luti2 z0.b, zt0, z0[0] + LUTI2 Z0.B, ZT0, Z0[0] + luti2 z31.b, zt0, z0[0] + luti2 z0.b, zt0, z31[0] + luti2 z0.b, zt0, z0[15] + + luti2 z0.h, zt0, z0[0] + luti2 z31.h, zt0, z0[0] + luti2 z0.h, zt0, z31[0] + luti2 z0.h, zt0, z0[15] + + luti2 z0.s, zt0, z0[0] + luti2 z31.s, zt0, z0[0] + luti2 z0.s, zt0, z31[0] + luti2 z0.s, zt0, z0[15] + + luti2 { z0.b - z1.b }, zt0, z0[0] + LUTI2 { Z0.B - Z1.B }, ZT0, Z0[0] + luti2 { z30.b - z31.b }, zt0, z0[0] + luti2 { z0.b - z1.b }, zt0, z31[0] + luti2 { z0.b - z1.b }, zt0, z0[7] + + luti2 { z0.h - z1.h }, zt0, z0[0] + luti2 { z30.h - z31.h }, zt0, z0[0] + luti2 { z0.h - z1.h }, zt0, z31[0] + luti2 { z0.h - z1.h }, zt0, z0[7] + + luti2 { z0.s - z1.s }, zt0, z0[0] + luti2 { z30.s - z31.s }, zt0, z0[0] + luti2 { z0.s - z1.s }, zt0, z31[0] + luti2 { z0.s - z1.s }, zt0, z0[7] + + luti2 { z0.b - z3.b }, zt0, z0[0] + LUTI2 { Z0.B - Z3.B }, ZT0, Z0[0] + luti2 { z28.b - z31.b }, zt0, z0[0] + luti2 { z0.b - z3.b }, zt0, z31[0] + luti2 { z0.b - z3.b }, zt0, z0[3] + + luti2 { z0.h - z3.h }, zt0, z0[0] + luti2 { z28.h - z31.h }, zt0, z0[0] + luti2 { z0.h - z3.h }, zt0, z31[0] + luti2 { z0.h - z3.h }, zt0, z0[3] + + luti2 { z0.s - z3.s }, zt0, z0[0] + luti2 { z28.s - z31.s }, zt0, z0[0] + luti2 { z0.s - z3.s }, zt0, z31[0] + luti2 { z0.s - z3.s }, zt0, z0[3] + + luti4 z0.b, zt0, z0[0] + LUTI4 Z0.b, ZT0, Z0[0] + luti4 z31.b, zt0, z0[0] + luti4 z0.b, zt0, z31[0] + luti4 z0.b, zt0, z0[7] + + luti4 z0.h, zt0, z0[0] + LUTI4 Z0.H, ZT0, Z0[0] + luti4 z31.h, zt0, z0[0] + luti4 z0.h, zt0, z31[0] + luti4 z0.h, zt0, z0[7] + + luti4 z0.s, zt0, z0[0] + luti4 z31.s, zt0, z0[0] + luti4 z0.s, zt0, z31[0] + luti4 z0.s, zt0, z0[7] + + luti4 { z0.b - z1.b }, zt0, z0[0] + LUTI4 { Z0.b - Z1.b }, ZT0, Z0[0] + luti4 { z30.b - z31.b }, zt0, z0[0] + luti4 { z0.b - z1.b }, zt0, z31[0] + luti4 { z0.b - z1.b }, zt0, z0[3] + + luti4 { z0.h - z1.h }, zt0, z0[0] + LUTI4 { Z0.H - Z1.H }, ZT0, Z0[0] + luti4 { z30.h - z31.h }, zt0, z0[0] + luti4 { z0.h - z1.h }, zt0, z31[0] + luti4 { z0.h - z1.h }, zt0, z0[3] + + luti4 { z0.s - z1.s }, zt0, z0[0] + luti4 { z30.s - z31.s }, zt0, z0[0] + luti4 { z0.s - z1.s }, zt0, z31[0] + luti4 { z0.s - z1.s }, zt0, z0[3] + + luti4 { z0.h - z3.h }, zt0, z0[0] + LUTI4 { Z0.H - Z3.H }, ZT0, Z0[0] + luti4 { z28.h - z31.h }, zt0, z0[0] + luti4 { z0.h - z3.h }, zt0, z31[0] + luti4 { z0.h - z3.h }, zt0, z0[1] + + luti4 { z0.s - z3.s }, zt0, z0[0] + luti4 { z28.s - z31.s }, zt0, z0[0] + luti4 { z0.s - z3.s }, zt0, z31[0] + luti4 { z0.s - z3.s }, zt0, z0[1] diff --git a/gas/testsuite/gas/aarch64/sve-invalid.l b/gas/testsuite/gas/aarch64/sve-invalid.l index 00352f8..a02fbfe 100644 --- a/gas/testsuite/gas/aarch64/sve-invalid.l +++ b/gas/testsuite/gas/aarch64/sve-invalid.l @@ -932,6 +932,14 @@ .*: Error: register element index out of range 0 to 63 at operand 2 -- `dup z0\.b,z1\.b\[-1\]' .*: Error: register element index out of range 0 to 63 at operand 2 -- `dup z0\.b,z1\.b\[64\]' .*: Error: constant expression required at operand 2 -- `dup z0\.b,z1\.b\[x0\]' +.*: Error: operand mismatch -- `dup z0\.b,z1\[0\]' +.*: Info: did you mean this\? +.*: Info: dup z0\.b, z1\.b\[0\] +.*: Info: other valid variant\(s\): +.*: Info: dup z0\.h, z1\.h\[0\] +.*: Info: dup z0\.s, z1\.s\[0\] +.*: Info: dup z0\.d, z1\.d\[0\] +.*: Info: dup z0\.q, z1\.q\[0\] .*: Error: register element index out of range 0 to 31 at operand 2 -- `dup z0\.h,z1\.h\[-1\]' .*: Error: register element index out of range 0 to 31 at operand 2 -- `dup z0\.h,z1\.h\[32\]' .*: Error: constant expression required at operand 2 -- `dup z0\.h,z1\.h\[x0\]' diff --git a/gas/testsuite/gas/aarch64/sve-invalid.s b/gas/testsuite/gas/aarch64/sve-invalid.s index b56a08d..c374396 100644 --- a/gas/testsuite/gas/aarch64/sve-invalid.s +++ b/gas/testsuite/gas/aarch64/sve-invalid.s @@ -1143,6 +1143,7 @@ dup z0.b, z1.b[63] // OK dup z0.b, z1.b[64] dup z0.b, z1.b[x0] + dup z0.b, z1[0] dup z0.h, z1.h[-1] dup z0.h, z1.h[0] // OK |