RFR: 8267663: [vector] Add unsigned comparison operators on AArch64 [v2]

Eric Liu eliu at openjdk.java.net
Tue Jun 8 14:57:18 UTC 2021


On Mon, 7 Jun 2021 10:06:05 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Eric Liu has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Refactor code
>>   
>>   - public elemBytes_to_Arrangement and make it more generalized since it
>>     maybe useful in the future.
>>   - move neon_compare into macroAssembler.
>>   
>>   Change-Id: I7596de03abb066574cf430d935edd07cd627e14b
>
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 5348:
> 
>> 5346:     case 2:
>> 5347:       return isQ ? Assembler::T8H : Assembler::T4H;
>> 5348:     case 4:
> 
> This should be
> 
> `
>       return isQ ? T8H : T4H;
> `
> but isn't this just a table lookup?
> 
> 
> if (in_range)
>     return elemBytes_to_Arrangement_table[esize][isQ]
> 
> Why not?

Thanks. The table is done.

> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 5373:
> 
>> 5371:       case BoolTest::gt: fcmgt(dst, size, src1, src2); break;
>> 5372:       case BoolTest::le: fcmge(dst, size, src2, src1); break;
>> 5373:       case BoolTest::lt: fcmgt(dst, size, src2, src1); break;
> 
> Are you sure about these two lines?

As A64-SIMD doesn't have `fcmlt(register)` and `fcmle(register)` instructions, I think it's okay to use `fcmgt` and `fcmge` with reversing the argument. But I can't locate the initial patch adding them.

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

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


More information about the hotspot-compiler-dev mailing list