SLEEF: A Portable Vectorized Library of C Standard Mathematical Functions

2019
1 reference

Abstract

In this paper, we present techniques used to implement our portable\nvectorized library of C standard mathematical functions written entirely in C\nlanguage. In order to make the library portable while maintaining good\nperformance, intrinsic functions of vector extensions are abstracted by inline\nfunctions or preprocessor macros. We implemented the functions so that they can\nuse sub-features of vector extensions such as fused multiply-add, mask\nregisters and extraction of mantissa. In order to make computation with SIMD\ninstructions efficient, the library only uses a small number of conditional\nbranches, and all the computation paths are vectorized. We devised a variation\nof the Payne-Hanek argument reduction for trigonometric functions and a\nfloating point remainder, both of which are suitable for vector computation. We\ncompare the performance of our library to Intel SVML.\n

1 repository
1 reference

Code References

openjdk/jdk
1 file
src/jdk.incubator.vector/unix/native/libsleef/upstream/README.md
1
[![DOI:10.1109/TPDS.2019.2960333](http://img.shields.io/badge/DOI-10.1109/TPDS.2019.2960333-blue.svg)](https://ieeexplore.ieee.org/document/8936472)
Link copied to clipboard!