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

Sandhya Viswanathan sviswanathan at openjdk.java.net
Mon Dec 7 03:59:17 UTC 2020


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.

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

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

Changes: https://git.openjdk.java.net/jdk/pull/1656/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1656&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8257806
  Stats: 149 lines in 3 files changed: 120 ins; 24 del; 5 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1656.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1656/head:pull/1656

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


More information about the hotspot-compiler-dev mailing list