[aarch64-port-dev ] FW: RFR: 8257137: Revise smov and umov in aarch64 assembler [v4]
Hao Sun
Hao.Sun at arm.com
Mon Mar 1 01:08:51 UTC 2021
Can anyone help to review this patch?
Thanks a lot.
-----Original Message-----
From: hotspot-compiler-dev <hotspot-compiler-dev-retn at openjdk.java.net> On Behalf Of Hao Sun
Sent: Thursday, February 25, 2021 9:28 AM
To: hotspot-compiler-dev at openjdk.java.net
Subject: Re: RFR: 8257137: Revise smov and umov in aarch64 assembler [v4]
> 1. Both smov and umov lack of checking the register type validity.
> Register type must be 'B', 'H' or 'S' for smov [1].
> Register type can NOT be 'Q' for umov [2].
> Such checks are added.
>
> 2. smov and umov have different explanations on 'Q' field, i.e. bit 30
> of the insturction, but current assembler implementation mixed it up.
> For umov, 'Q' field can only be set when register type 'D' is given
> [2]. However, this field of smov must be set for register type 'S'
> [1], that is, 'Q' field can be optional for register type 'B' or 'H'.
>
> Current implementation only took the umov scenario into account. As a
> result, runtime error ILL_ILLOPN would occur if 'smov(Register,
> FloatRegister, S, index)' is used.
>
> We put them into two separate functions and make 'Q' field always set
> for smov. That means 'SMOVX' (64-bit register variant) is generated
> for all cases since it's compatible with our current usages of 'SMOVW'.
> Existing usages of smov have been double checked and this patch does
> not affect them.
>
> 3. Smoke tests are also added.
>
> [1].
> https://developer.arm.com/docs/ddi0602/f/simd-and-floating-point-instr
> uctions-alphabetic-order/smov-signed-move-vector-element-to-general-pu
> rpose-register [2].
> https://developer.arm.com/docs/ddi0602/f/simd-and-floating-point-instr
> uctions-alphabetic-order/umov-unsigned-move-vector-element-to-general-
> purpose-register
>
>
> Note that Jtreg tier1 and jdk::tier3 have been tested and all tests passed without new failures.
Hao Sun has updated the pull request incrementally with one additional commit since the last revision:
Code style: add spaces between operands
add spaces between operands
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/1586/files
- new: https://git.openjdk.java.net/jdk/pull/1586/files/ba69f500..b624a6b4
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1586&range=03
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1586&range=02-03
Stats: 75 lines in 2 files changed: 2 ins; 0 del; 73 mod
Patch: https://git.openjdk.java.net/jdk/pull/1586.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1586/head:pull/1586
PR: https://git.openjdk.java.net/jdk/pull/1586
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
More information about the aarch64-port-dev
mailing list