diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-aarch64.c | 8 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/alias.d | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/alias.s | 11 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/diagnostic.l | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/diagnostic.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/illegal.l | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/illegal.s | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/no-aliases.d | 10 |
10 files changed, 83 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 7078b22..371326a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com> + + * config/tc-aarch64.c (parse_operands): Handle AARCH64_OPND_COND1. + 2013-11-05 Will Newton <will.newton@linaro.org> PR gas/16103 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 02fe4de..4febbdc 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -4969,6 +4969,7 @@ parse_operands (char *str, const aarch64_opcode *opcode) break; case AARCH64_OPND_COND: + case AARCH64_OPND_COND1: info->cond = hash_find_n (aarch64_cond_hsh, str, 2); str += 2; if (info->cond == NULL) @@ -4976,6 +4977,13 @@ parse_operands (char *str, const aarch64_opcode *opcode) set_syntax_error (_("invalid condition")); goto failure; } + else if (operands[i] == AARCH64_OPND_COND1 + && (info->cond->value & 0xe) == 0xe) + { + /* Not allow AL or NV. */ + set_default_error (); + goto failure; + } break; case AARCH64_OPND_ADDR_ADRP: diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 8e8cdc5..8a44216 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,15 @@ 2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com> + * gas/aarch64/alias.s: Add tests. + * gas/aarch64/alias.d: Update. + * gas/aarch64/no-aliases.d: Update. + * gas/aarch64/diagnostic.s: Add tests. + * gas/aarch64/diagnostic.l: Update. + * gas/aarch64/illegal.s: Add tests. + * gas/aarch64/illegal.l: Update. + +2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com> + * gas/aarch64/diagnostic.s: Add tests of ldp/stp. * gas/aarch64/diagnostic.l: Update. diff --git a/gas/testsuite/gas/aarch64/alias.d b/gas/testsuite/gas/aarch64/alias.d index 53cf5e9..5911b21 100644 --- a/gas/testsuite/gas/aarch64/alias.d +++ b/gas/testsuite/gas/aarch64/alias.d @@ -96,3 +96,13 @@ Disassembly of section \.text: 160: 2f20a448 uxtl v8.2d, v2.2s 164: 6f20a448 uxtl2 v8.2d, v2.4s 168: 6f20a448 uxtl2 v8.2d, v2.4s + 16c: 1a81f420 csinc w0, w1, w1, nv + 170: 1a81e420 csinc w0, w1, w1, al + 174: 1a9ff7e0 csinc w0, wzr, wzr, nv + 178: 1a9fe7e0 csinc w0, wzr, wzr, al + 17c: 5a81f020 csinv w0, w1, w1, nv + 180: 5a81e020 csinv w0, w1, w1, al + 184: 5a9ff3e0 csinv w0, wzr, wzr, nv + 188: 5a9fe3e0 csinv w0, wzr, wzr, al + 18c: 5a81f420 csneg w0, w1, w1, nv + 190: 5a81e420 csneg w0, w1, w1, al diff --git a/gas/testsuite/gas/aarch64/alias.s b/gas/testsuite/gas/aarch64/alias.s index 0db9aff..f86b2dc 100644 --- a/gas/testsuite/gas/aarch64/alias.s +++ b/gas/testsuite/gas/aarch64/alias.s @@ -117,3 +117,14 @@ asimdshll s asimdshll u + + csinc w0, w1, w1, nv + csinc w0, w1, w1, al + csinc w0, wzr, wzr, nv + csinc w0, wzr, wzr, al + csinv w0, w1, w1, nv + csinv w0, w1, w1, al + csinv w0, wzr, wzr, nv + csinv w0, wzr, wzr, al + csneg w0, w1, w1, nv + csneg w0, w1, w1, al diff --git a/gas/testsuite/gas/aarch64/diagnostic.l b/gas/testsuite/gas/aarch64/diagnostic.l index 015e16a..00a0d7a 100644 --- a/gas/testsuite/gas/aarch64/diagnostic.l +++ b/gas/testsuite/gas/aarch64/diagnostic.l @@ -93,3 +93,7 @@ [^:]*:95: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2,#3\]' [^:]*:96: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2,#2\]!' [^:]*:97: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2\],#1' +[^:]*:98: Error: operand 3 should be one of the standard conditions, excluding AL and NV. -- `cinc w0,w1,al' +[^:]*:99: Error: operand 3 should be one of the standard conditions, excluding AL and NV. -- `cinc w0,w1,nv' +[^:]*:100: Error: operand 2 should be one of the standard conditions, excluding AL and NV. -- `cset w0,al' +[^:]*:101: Error: operand 2 should be one of the standard conditions, excluding AL and NV. -- `cset w0,nv' diff --git a/gas/testsuite/gas/aarch64/diagnostic.s b/gas/testsuite/gas/aarch64/diagnostic.s index afa04b5..2bb16b0 100644 --- a/gas/testsuite/gas/aarch64/diagnostic.s +++ b/gas/testsuite/gas/aarch64/diagnostic.s @@ -95,3 +95,7 @@ stp w0, w1, [x2, #3] stp w0, w1, [x2, #2]! stp w0, w1, [x2], #1 + cinc w0, w1, al + cinc w0, w1, nv + cset w0, al + cset w0, nv diff --git a/gas/testsuite/gas/aarch64/illegal.l b/gas/testsuite/gas/aarch64/illegal.l index e36b8fe..044b787 100644 --- a/gas/testsuite/gas/aarch64/illegal.l +++ b/gas/testsuite/gas/aarch64/illegal.l @@ -552,4 +552,14 @@ [^:]*:544: Error: .*`fmov s0,#0xC0280000C1400000' [^:]*:545: Error: .*`fmov d0,#0xC02f800000000000' [^:]*:550: Error: .*`ands w0,w24,#0xffeefffffffffffd' -[^:]*:553: Error: .* +[^:]*:554: Error: .*`cinc w0,w1,al' +[^:]*:555: Error: .*`cinc w0,w1,nv' +[^:]*:556: Error: .*`cset w0,al' +[^:]*:557: Error: .*`cset w0,nv' +[^:]*:558: Error: .*`cinv w0,w1,al' +[^:]*:559: Error: .*`cinv w0,w1,nv' +[^:]*:560: Error: .*`csetm w0,al' +[^:]*:561: Error: .*`csetm w0,nv' +[^:]*:562: Error: .*`cneg w0,w1,al' +[^:]*:563: Error: .*`cneg w0,w1,nv' +[^:]*:563: Error: .* diff --git a/gas/testsuite/gas/aarch64/illegal.s b/gas/testsuite/gas/aarch64/illegal.s index a46946e..4578d97 100644 --- a/gas/testsuite/gas/aarch64/illegal.s +++ b/gas/testsuite/gas/aarch64/illegal.s @@ -550,4 +550,14 @@ ands w0, w24, #0xffeefffffffffffd one_label: - + + cinc w0, w1, al + cinc w0, w1, nv + cset w0, al + cset w0, nv + cinv w0, w1, al + cinv w0, w1, nv + csetm w0, al + csetm w0, nv + cneg w0, w1, al + cneg w0, w1, nv diff --git a/gas/testsuite/gas/aarch64/no-aliases.d b/gas/testsuite/gas/aarch64/no-aliases.d index 1065094..fd94064 100644 --- a/gas/testsuite/gas/aarch64/no-aliases.d +++ b/gas/testsuite/gas/aarch64/no-aliases.d @@ -97,3 +97,13 @@ Disassembly of section \.text: 160: 2f20a448 ushll v8.2d, v2.2s, #0 164: 6f20a448 ushll2 v8.2d, v2.4s, #0 168: 6f20a448 ushll2 v8.2d, v2.4s, #0 + 16c: 1a81f420 csinc w0, w1, w1, nv + 170: 1a81e420 csinc w0, w1, w1, al + 174: 1a9ff7e0 csinc w0, wzr, wzr, nv + 178: 1a9fe7e0 csinc w0, wzr, wzr, al + 17c: 5a81f020 csinv w0, w1, w1, nv + 180: 5a81e020 csinv w0, w1, w1, al + 184: 5a9ff3e0 csinv w0, wzr, wzr, nv + 188: 5a9fe3e0 csinv w0, wzr, wzr, al + 18c: 5a81f420 csneg w0, w1, w1, nv + 190: 5a81e420 csneg w0, w1, w1, al |