RFR: 8267356: AArch64: Vector API SVE codegen support [v2]

Ningsheng Jian njian at openjdk.java.net
Mon Jul 26 09:23:20 UTC 2021


On Mon, 26 Jul 2021 08:34:42 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Ningsheng Jian has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains one commit:
>> 
>>   8267356: AArch64: Vector API SVE codegen support
>>   
>>   This is the integration of current SVE work done in
>>   panama-vector/vectorIntrinscs, which includes:
>>   
>>   1. Code generation for Vector API c2 IR nodes with SVE.
>>   2. Non-max vector size support with SVE, e.g. using *128Vector APIs on
>>      256-bit SVE environment could also generate optimized SVE
>>      instructions with predicate feature.
>>   3. Some more SVE assemblers (and tests) used by the codegen part.
>>   
>>   Note: VectorMask<E> is still represented in vector register, a further
>>   improvement to map mask to predicate register is under development at
>>   https://github.com/openjdk/panama-vector/tree/vectorIntrinsics+mask
>>   
>>   Test: tier1-3 with vector api test cases passed on 512-bit SVE hardware
>>   with MaxVectorSize=16/32/64.
>
> src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp line 953:
> 
>> 951:   if (bt == T_FLOAT || bt == T_DOUBLE) {
>> 952:     switch (cond) {
>> 953:       case BoolTest::eq: sve_fcmeq(pd, size, pg, zn, zm); break;
> 
> Wouldn't this work better by making cond and size arguments to sve_fcm ?

Thanks! But we still need to map c2 specific condition value in BoolTest to instruction condition encoding. So, I think making cond arguments to fcm doesn't make help here. (This also aligns current NEON implementation.) What do you think?

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

PR: https://git.openjdk.java.net/jdk/pull/4122


More information about the hotspot-compiler-dev mailing list