RFR: 8279282: [vectorapi] Matcher::supports_vector_comparison_unsigned is not needed on x86 [v3]

Vladimir Ivanov vlivanov at openjdk.java.net
Wed Jan 19 21:59:49 UTC 2022


On Sun, 9 Jan 2022 01:48:04 GMT, Quan Anh Mai <duke at openjdk.java.net> wrote:

>> Hi,
>> 
>> Currently, unsigned comparison on AVX is implemented by zero extending elements and comparing the results. This leads to unnecessary complexity. This patch changes the implementation to use the identity existing in `Integer/Long.compareUnsigned`, that is `compareUnsigned(x, y) == compare(x ^ min_value, y ^ min_value)`.
>> 
>> Thank you very much.
>
> Quan Anh Mai has updated the pull request incrementally with one additional commit since the last revision:
> 
>   use movddup for 128-bit vectors

Looks good.

src/hotspot/cpu/x86/x86.ad line 7383:

> 7381: 
> 7382:     if (vlen_enc == Assembler::AVX_128bit) {
> 7383:       __ vmovddup($xtmp$$XMMRegister, flip_bit, vlen_enc, $scratch$$Register);

Scratch register is not needed here. `InternalAddress` should always be reachable.

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

Marked as reviewed by vlivanov (Reviewer).

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


More information about the hotspot-dev mailing list