FW: RFR: 8257137: Revise smov and umov in aarch64 assembler [v4]
Can anyone help to review this patch? Thanks a lot. -----Original Message----- From: hotspot-compiler-dev <hotspot-compiler-dev-retn@openjdk.java.net> On Behalf Of Hao Sun Sent: Thursday, February 25, 2021 9:28 AM To: hotspot-compiler-dev@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.
participants (1)
-
Hao Sun