Integrated: 8257806: Optimize x86 allTrue and anyTrue vector mask operations of Vector API

Sandhya Viswanathan sviswanathan at openjdk.java.net
Thu Dec 10 04:35:33 UTC 2020


On Mon, 7 Dec 2020 02:09:56 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

> The allTrue and anyTrue operations are implemented using ptest/vptest instruction. 
> Two optimizations are possible:
> 
> 1) The ptest instruction minimum size is 128 bit.
> Smaller < 128 bit size operations can be implemented by first broadcasting (duplicating) the input to 128 bits.
> The two inputs to these operations are:
>   a) Vector mask being tested
>   b) All ones
> For allTrue operation, both the inputs need to be broadcasted.
> For anyTrue operation, only the first input (vector mask) need to be broadcasted.
> 
> 2) The anyTrue operation followed by comparison with zero can use the zero flag generated by ptest/vptest directly.

This pull request has now been integrated.

Changeset: 869dcb6f
Author:    Sandhya Viswanathan <sviswanathan at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/869dcb6f
Stats:     149 lines in 3 files changed: 120 ins; 24 del; 5 mod

8257806: Optimize x86 allTrue and anyTrue vector mask operations of Vector API

Reviewed-by: kvn, psandoz

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

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


More information about the hotspot-compiler-dev mailing list