[vectorIntrinsics] RFR: 8261108: Add cast nodes from integer types to float types implementation for Arm SVE [v2]

Wang Huang whuang at openjdk.java.net
Fri Feb 19 08:51:44 UTC 2021


On Fri, 19 Feb 2021 08:34:27 GMT, Ningsheng Jian <njian at openjdk.org> wrote:

>> Wang Huang has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   fix some bugs
>
> src/hotspot/cpu/aarch64/assembler_aarch64.hpp line 3371:
> 
>> 3369:     } else if (T_dst == D && T_src == S) {
>> 3370:       T_dst = D;
>> 3371:       T_src = B;
> 
> This looks confusing. I understand that it's just 0b00, but using B here is really confusing. Maybe using 0b00 and 0b11 directly to align with Arm ARM opc/opc2?

Arm uses confusing encoding . If we use 0b00 / 0b11 ,  we can not get a concise macroassmbler here ( for example. other developers can not use this macro). In fact, `gcc` uses switch..case to convert macro assmbler into Arm's funny encoding.

> src/hotspot/cpu/aarch64/assembler_aarch64.hpp line 3385:
> 
>> 3383:     pgrf(Pg, 10), rf(Zn, 5), rf(Zd, 0);                                 \
>> 3384:     encode_cvtf_T(T_dst, T_src);                                        \
>> 3385:     f(T_dst, 23, 22), f(T_src, 18, 17);                                 \
> 
> I would suggest to fill the bits in order, i.e. move f(T_dst, 23, 22) right after (... 31, 24), and then (21, 19), (18, 17)...

`T_dst` and `T_src` will be changed after  `encode_cvtf_T`, so they cannot move there.

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

PR: https://git.openjdk.java.net/panama-vector/pull/37


More information about the panama-dev mailing list