[Aarch64] Support ARMv8.2 AT instructions

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[Aarch64] Support ARMv8.2 AT instructions

Matthew Wahab-2
Hello,

ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
patch adds support for the instructions, making them available when
-march=armv8.2-a is selected.

Tested aarch64-none-linux-gnu with cross-compiled check-binutils and
check-gas.

Ok for trunk?
Matthew

gas/testsuite/
2015-12-09  Matthew Wahab  <[hidden email]>

        * gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
        AT S1E1WP.
         * gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.

opcodes/
2015-12-09  Matthew Wahab  <[hidden email]>

        * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
        (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
        feature test for "s1e1rp" and "s1e1wp".

0001-Aarch64-Support-ARMv8.2-AT-instructions.patch (2K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Marcus
On 10 December 2015 at 12:30, Matthew Wahab <[hidden email]> wrote:

> Hello,
>
> ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
> patch adds support for the instructions, making them available when
> -march=armv8.2-a is selected.
>
> Tested aarch64-none-linux-gnu with cross-compiled check-binutils and
> check-gas.
>
> Ok for trunk?
> Matthew
>
> gas/testsuite/
> 2015-12-09  Matthew Wahab  <[hidden email]>
>
>         * gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
>         AT S1E1WP.
>         * gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.
>
> opcodes/
> 2015-12-09  Matthew Wahab  <[hidden email]>
>
>         * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
>         (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
>         feature test for "s1e1rp" and "s1e1wp".

OK /Marcus
Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Matthew Wahab-2
In reply to this post by Matthew Wahab-2
Committed: https://sourceware.org/ml/binutils-cvs/2015-12/msg00104.html

Ok for the 2.26 branch?
Matthew

On 10/12/15 12:30, Matthew Wahab wrote:

> Hello,
>
> ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
> patch adds support for the instructions, making them available when
> -march=armv8.2-a is selected.
>
> Tested aarch64-none-linux-gnu with cross-compiled check-binutils and
> check-gas.
>
> Ok for trunk?
> Matthew
>
> gas/testsuite/
> 2015-12-09  Matthew Wahab  <[hidden email]>
>
>      * gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
>      AT S1E1WP.
>          * gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.
>
> opcodes/
> 2015-12-09  Matthew Wahab  <[hidden email]>
>
>      * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
>      (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
>      feature test for "s1e1rp" and "s1e1wp".

Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Tristan Gingold-2

> On 10 Dec 2015, at 18:05, Matthew Wahab <[hidden email]> wrote:
>
> Committed: https://sourceware.org/ml/binutils-cvs/2015-12/msg00104.html
>
> Ok for the 2.26 branch?

Yes.

For the next serie, you can send one message with references to all
the patches (if you prefer).

Tristan.

> Matthew
>
> On 10/12/15 12:30, Matthew Wahab wrote:
>> Hello,
>>
>> ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
>> patch adds support for the instructions, making them available when
>> -march=armv8.2-a is selected.
>>
>> Tested aarch64-none-linux-gnu with cross-compiled check-binutils and
>> check-gas.
>>
>> Ok for trunk?
>> Matthew
>>
>> gas/testsuite/
>> 2015-12-09  Matthew Wahab  <[hidden email]>
>>
>>     * gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
>>     AT S1E1WP.
>>         * gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.
>>
>> opcodes/
>> 2015-12-09  Matthew Wahab  <[hidden email]>
>>
>>     * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
>>     (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
>>     feature test for "s1e1rp" and "s1e1wp".
>

Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Matthew Wahab-2
In reply to this post by Marcus
On 10/12/15 14:47, Marcus Shawcroft wrote:
> On 10 December 2015 at 12:30, Matthew Wahab <[hidden email]> wrote:
>> Hello,
>>
>> ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
>> patch adds support for the instructions, making them available when
>> -march=armv8.2-a is selected.
[..]
>> opcodes/
>> 2015-12-09  Matthew Wahab  <[hidden email]>
>>
>>          * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
>>          (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
>>          feature test for "s1e1rp" and "s1e1wp".
>
> OK /Marcus
>

I made a mistake with rebasing the ARMv8.2 AT instruction patch which
left this part

+  /* AT S1E1RP, AT S1E1WP.  Values are from aarch64_sys_regs_at.  */
+  if ((reg->value == CPENS (0, C7, C9, 0)
+       || reg->value == CPENS (0, C7, C9, 1))
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
+    return FALSE;

in aarch64_pstatefield_supported_p rather than in
aarch64_sys_ins_reg_supported_p, where it was supposed to be.

The patch adding support for id_aa64mmfr2_el1
(https://sourceware.org/ml/binutils-cvs/2015-11/msg00163.html), also had
the effect of removing a conditional branch in aarch64_sys_reg_supported_p.

The effect of both of these is to suppress an error if some ARMv8.2
system registers are used with the wrong -march settings.

This patch fixes these mistakes.

Tested for aarch64-none-linux-gnu with cross-compiled check-binutils and
check-gas.

opcodes/
2015-12-11  Matthew Wahab  <[hidden email]>

        * aarch64-opc.c (aarch64_sys_reg_supported_p): Add mistakenly
        removed statement.
        (aarch64_pstatefield_supported_p): Move feature checks for AT
        registers ..
        (aarch64_sys_ins_reg_supported_p): .. to here.


0001-AArch64-Fix-patch-rebasing-errors.patch (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Marcus
On 11 December 2015 at 12:58, Matthew Wahab <[hidden email]> wrote:

> This patch fixes these mistakes.
>
> Tested for aarch64-none-linux-gnu with cross-compiled check-binutils and
> check-gas.
>
> opcodes/
> 2015-12-11  Matthew Wahab  <[hidden email]>
>
>         * aarch64-opc.c (aarch64_sys_reg_supported_p): Add mistakenly
>         removed statement.
>         (aarch64_pstatefield_supported_p): Move feature checks for AT
>         registers ..
>         (aarch64_sys_ins_reg_supported_p): .. to here.
>

OK /Marcus
Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Matthew Wahab-2
On 14/12/15 16:19, Marcus Shawcroft wrote:
> On 11 December 2015 at 12:58, Matthew Wahab <[hidden email]> wrote:
>
[Re-inserted the context]
I made a mistake with rebasing the ARMv8.2 AT instruction patch which
left this part

+  /* AT S1E1RP, AT S1E1WP.  Values are from aarch64_sys_regs_at.  */
+  if ((reg->value == CPENS (0, C7, C9, 0)
+       || reg->value == CPENS (0, C7, C9, 1))
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
+    return FALSE;

in aarch64_pstatefield_supported_p rather than in
aarch64_sys_ins_reg_supported_p, where it was supposed to be.

The patch adding support for id_aa64mmfr2_el1
(https://sourceware.org/ml/binutils-cvs/2015-11/msg00163.html), also had
the effect of removing a conditional branch in aarch64_sys_reg_supported_p.

The effect of both of these is to suppress an error if some ARMv8.2
system registers are used with the wrong -march settings.

>> This patch fixes these mistakes.
>>
>> Tested for aarch64-none-linux-gnu with cross-compiled check-binutils and
>> check-gas.
>>
>> opcodes/
>> 2015-12-11  Matthew Wahab  <[hidden email]>
>>
>>          * aarch64-opc.c (aarch64_sys_reg_supported_p): Add mistakenly
>>          removed statement.
>>          (aarch64_pstatefield_supported_p): Move feature checks for AT
>>          registers ..
>>          (aarch64_sys_ins_reg_supported_p): .. to here.
>>
>
> OK /Marcus
>

Thanks.
Tristan, is this OK for the 2.26 branch?
Matthew
Reply | Threaded
Open this post in threaded view
|

Re: [Aarch64] Support ARMv8.2 AT instructions

Tristan Gingold-2

> On 14 Dec 2015, at 17:22, Matthew Wahab <[hidden email]> wrote:
>
> On 14/12/15 16:19, Marcus Shawcroft wrote:
>> On 11 December 2015 at 12:58, Matthew Wahab <[hidden email]> wrote:
>>
> [Re-inserted the context]
> I made a mistake with rebasing the ARMv8.2 AT instruction patch which
> left this part
>
> +  /* AT S1E1RP, AT S1E1WP.  Values are from aarch64_sys_regs_at.  */
> +  if ((reg->value == CPENS (0, C7, C9, 0)
> +       || reg->value == CPENS (0, C7, C9, 1))
> +      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
> +    return FALSE;
>
> in aarch64_pstatefield_supported_p rather than in
> aarch64_sys_ins_reg_supported_p, where it was supposed to be.
>
> The patch adding support for id_aa64mmfr2_el1
> (https://sourceware.org/ml/binutils-cvs/2015-11/msg00163.html), also had
> the effect of removing a conditional branch in aarch64_sys_reg_supported_p.
>
> The effect of both of these is to suppress an error if some ARMv8.2
> system registers are used with the wrong -march settings.
>
>>> This patch fixes these mistakes.
>>>
>>> Tested for aarch64-none-linux-gnu with cross-compiled check-binutils and
>>> check-gas.
>>>
>>> opcodes/
>>> 2015-12-11  Matthew Wahab  <[hidden email]>
>>>
>>>         * aarch64-opc.c (aarch64_sys_reg_supported_p): Add mistakenly
>>>         removed statement.
>>>         (aarch64_pstatefield_supported_p): Move feature checks for AT
>>>         registers ..
>>>         (aarch64_sys_ins_reg_supported_p): .. to here.
>>>
>>
>> OK /Marcus
>>
>
> Thanks.
> Tristan, is this OK for the 2.26 branch?

Yes.

> Matthew