diff options
Diffstat (limited to 'gas')
-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 |
5 files changed, 35 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 |