RFR: 8329816: Add SLEEF version 3.6.1 [v3]

Hamlin Li mli at openjdk.org
Wed Aug 28 15:39:22 UTC 2024


On Thu, 27 Jun 2024 22:03:37 GMT, Mikael Vidstedt <mikael at openjdk.org> wrote:

>> [JDK-8312425](https://bugs.openjdk.org/browse/JDK-8312425) is looking to optimize vector math operations by leveraging the SLEEF library. For legal reasons the actual contribution of the SLEEF files needs to be handled separately. This enhancement adds the relevant files, enabling the rest of [JDK-8312425](https://bugs.openjdk.org/browse/JDK-8312425) to move forward.
>
> Mikael Vidstedt has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Update README to include RISC-V

By understanding the previous discussion, there should be 2 parts of source code related to sleef integrated into jdk: 
1]. original sleef source
2]. pre-processed sleef header files

Besides of above sources, there should be another part connecting above 2 parts, i.e. 
3]. scripts to transfering from 1] to 2], and necessary documents, e.g. record which tag of sleef to use, .


So, for the source layout/organization, the previous conclusion is to have both 1] and 2], and 1] is just for verification and reproducing, general build of jdk only needs 2].

As to where to put various new files, I think current location for 2] in this pr is good, 1] could be put somewhere with minimum impact on current build system, `src/utils/sleef` suggested by @magicus is a good candidate, 3] should be put together with 1].
In summary, one solution could be as below:

${JDK_ROOT}/src
  |-- utils/
      |-- sleef-src/   # i.e. part 1]
           |-- ... # original sleef source, we could trim or not trim the src tree. 
      |-- sleef-misc/
          |-- createSleef.sh    # accept a sleef source root(i.e. part 1], or an external sleef repo location) as input, and generate sleef header files(i.e. part 2] )
          |-- sleef.md
          |-- ..  # other misc files, e.g. 
  |-- jdk.incubator.vector/linux/native/libvectormath      # i.e. part 2]
      |-- README  # also including a reference pointing to src/utils/sleef*
      |-- misc.h
      |-- sleefinline_advsimd.h
      |-- sleefinline_rvvm1.h
      |-- sleefinline_sve.h


As for which part of original sleef source to integreate into jdk, we could trim the original source in some way, but I think it's more simple and maintainable to just put all sleef source into jdk without any trim.

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

PR Comment: https://git.openjdk.org/jdk/pull/19185#issuecomment-2315693943


More information about the build-dev mailing list