diff options
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-aarch64.c | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/pr22529.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/pr22529.l | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/pr22529.s | 3 | ||||
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/opcode/aarch64.h | 1 | ||||
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/aarch64-opc.c | 1 |
9 files changed, 47 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index ed794be..608d39b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2017-12-19 Tamar Christina <tamar.christina@arm.com> + + PR 22529 + * config/tc-aarch64.c (vectype_to_qualifier): Support AARCH64_OPND_QLF_V_4B. + * gas/testsuite/gas/aarch64/pr22529.s: New. + * gas/testsuite/gas/aarch64/pr22529.d: New. + * gas/testsuite/gas/aarch64/pr22529.l: New. + 2017-12-18 Nick Clifton <nickc@redhat.com> PR 22493 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 832f4e8..6b5179e 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -4911,7 +4911,7 @@ vectype_to_qualifier (const struct vector_type_el *vectype) = {1, 2, 4, 8, 16}; const unsigned int ele_base [5] = { - AARCH64_OPND_QLF_V_8B, + AARCH64_OPND_QLF_V_4B, AARCH64_OPND_QLF_V_2H, AARCH64_OPND_QLF_V_2S, AARCH64_OPND_QLF_V_1D, @@ -4946,7 +4946,7 @@ vectype_to_qualifier (const struct vector_type_el *vectype) a vector-type dependent amount. */ shift = 0; if (vectype->type == NT_b) - shift = 4; + shift = 3; else if (vectype->type == NT_h || vectype->type == NT_s) shift = 2; else if (vectype->type >= NT_d) @@ -4955,7 +4955,7 @@ vectype_to_qualifier (const struct vector_type_el *vectype) gas_assert (0); offset = ele_base [vectype->type] + (vectype->width >> shift); - gas_assert (AARCH64_OPND_QLF_V_8B <= offset + gas_assert (AARCH64_OPND_QLF_V_4B <= offset && offset <= AARCH64_OPND_QLF_V_1Q); return offset; } diff --git a/gas/testsuite/gas/aarch64/pr22529.d b/gas/testsuite/gas/aarch64/pr22529.d new file mode 100644 index 0000000..1fd0d85 --- /dev/null +++ b/gas/testsuite/gas/aarch64/pr22529.d @@ -0,0 +1,4 @@ +#as: -march=armv8.4-a +#source: pr22529.s +#error-output: pr22529.l + diff --git a/gas/testsuite/gas/aarch64/pr22529.l b/gas/testsuite/gas/aarch64/pr22529.l new file mode 100644 index 0000000..646e00a --- /dev/null +++ b/gas/testsuite/gas/aarch64/pr22529.l @@ -0,0 +1,17 @@ +[^:]*: Assembler messages: +[^:]*:1: Error: operand mismatch -- `udot v0\.2s,v1\.8b,v2\.4b' +[^:]*:1: Info: did you mean this\? +[^:]*:1: Info: udot v0\.2s, v1\.8b, v2\.8b +[^:]*:1: Info: other valid variant\(s\): +[^:]*:1: Info: udot v0\.4s, v1\.16b, v2\.16b +[^:]*:2: Error: operand mismatch -- `udot v0\.2s,v1\.4b,v2\.8b' +[^:]*:2: Info: did you mean this\? +[^:]*:2: Info: udot v0\.2s, v1\.8b, v2\.8b +[^:]*:2: Info: other valid variant\(s\): +[^:]*:2: Info: udot v0\.4s, v1\.16b, v2\.16b +[^:]*:3: Error: operand mismatch -- `udot v0\.2s,v1\.4b,v2\.4b' +[^:]*:3: Info: did you mean this\? +[^:]*:3: Info: udot v0\.2s, v1\.8b, v2\.8b +[^:]*:3: Info: other valid variant\(s\): +[^:]*:3: Info: udot v0\.4s, v1\.16b, v2\.16b + diff --git a/gas/testsuite/gas/aarch64/pr22529.s b/gas/testsuite/gas/aarch64/pr22529.s new file mode 100644 index 0000000..f87b897 --- /dev/null +++ b/gas/testsuite/gas/aarch64/pr22529.s @@ -0,0 +1,3 @@ +udot v0.2s, v1.8b, v2.4b +udot v0.2s, v1.4b, v2.8b +udot v0.2s, v1.4b, v2.4b diff --git a/include/ChangeLog b/include/ChangeLog index 8914e26..ecfd766 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2017-12-19 Tamar Christina <tamar.christina@arm.com> + + PR gas/22529 + * opcode/aarch64.h (aarch64_opnd_qualifier): Add AARCH64_OPND_QLF_V_4B. + 2017-12-11 Stephen Crane <sjc@immunant.com> * plugin-api.h: Add new plugin hook to allow processing of input diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 73ebd80..453b177 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -403,6 +403,7 @@ enum aarch64_opnd_qualifier a use is only for the ease of operand encoding/decoding and qualifier sequence matching; such a use should not be applied widely; use the value constraint qualifiers for immediate operands wherever possible. */ + AARCH64_OPND_QLF_V_4B, AARCH64_OPND_QLF_V_8B, AARCH64_OPND_QLF_V_16B, AARCH64_OPND_QLF_V_2H, diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 1aa9af4..a8b8dba 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2017-12-19 Tamar Christina <tamar.christina@arm.com> + + PR gas/22529 + * aarch64-opc.c (aarch64_opnd_qualifiers): Add 4b variant. + 2017-12-18 Jan Beulich <jbeulich@suse.com> * i386-gen.c (operand_type_init): Delete OPERAND_TYPE_REGYMM and diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 96ca085..eac0279 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -699,6 +699,7 @@ struct operand_qualifier_data aarch64_opnd_qualifiers[] = {8, 1, 0x3, "d", OQK_OPD_VARIANT}, {16, 1, 0x4, "q", OQK_OPD_VARIANT}, + {1, 4, 0x0, "4b", OQK_OPD_VARIANT}, {1, 8, 0x0, "8b", OQK_OPD_VARIANT}, {1, 16, 0x1, "16b", OQK_OPD_VARIANT}, {2, 2, 0x0, "2h", OQK_OPD_VARIANT}, |