RFR: 8374349: [VectorAPI]: AArch64: Prefer merging mode SVE CPY instruction [v4]

Eric Fang erfang at openjdk.org
Thu Feb 26 02:04:04 UTC 2026


On Wed, 25 Feb 2026 10:26:04 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> src/hotspot/cpu/aarch64/assembler_aarch64.hpp line 3846:
>> 
>>> 3844:   // SVE copy floating-point immediate to vector elements (predicated)
>>> 3845:   void sve_cpy(FloatRegister Zd, SIMD_RegVariant T, PRegister Pg, double d) {
>>> 3846:     _sve_cpy(Zd, T, Pg, checked_cast<uint8_t>(pack(d)), /*isMerge*/true, /*isFloat*/true);
>> 
>> I can't see any purpose in this renaming.
>
>> Hi [@theRealAph](https://github.com/theRealAph) , it's a private method,
> 
> It isn't. The `public:` declaration is right there.

We have two public methods to copy an integer/floating-point immediate to vector elements:
```  
void sve_cpy(FloatRegister Zd, SIMD_RegVariant T, PRegister Pg, int imm8, bool isMerge) {...}
void sve_cpy(FloatRegister Zd, SIMD_RegVariant T, PRegister Pg, double d) {...}

Both of them call the private method `_sve_cpy` (before the renaming, it's `sve_cpy`).

void _sve_cpy(FloatRegister Zd, SIMD_RegVariant T, PRegister Pg, int imm8, bool isMerge, bool isFloat) {

The parameters of the public versions and the private version are different.

Please correct me if I misunderstood your meaning, thanks~

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/29359#discussion_r2856473328


More information about the hotspot-dev mailing list