This is a crate that provides an SIMD vector library for Rust and specifically the ObjC bridge hagane
, it's nowhere near as polished or complete as the language support in Clang / OpenCL but it's intended to be a start to get us out and be productive at least.
The main goal is to be ABI compatible with the Apple standard library simd
for use on macOS and iOS. Right now it only builds on Apple platforms since we depend on libSystem
, but the goal is to replace those bits as soon as possible.
Right now you can regenerate the source code from the Ruby script via rake
, this is a temporary measure until the point I am happy with the output and try to write optimisations. Then we'll fossilise the code and remove the generator.
This is a TODO list, a check means that it is "done".
- Vectors
-
half
type (blocked on compiler) -
rint
function (blocked on stdlib) - Vector and scalars constructors (blocked on compiler)
- Vector and vector constructors (blocked on compiler)
- Arbitrary mix constructors (blocked on compiler)
- Swizzling (partially blocked on compiler)
-
xyzw
specifier -
rgba
specifier -
s0123456789abcdef
specifier -
s0123456789ABCDEF
specifier
-
- Constants
- Extended Math Functions (From OpenCL)
-
acos
-
acosh
-
acospi
-
asin
-
asinh
-
asinpi
-
atan
-
atan2
-
atanh
-
atanpi
-
atan2pi
-
cbrt
-
cosh
-
cospi
-
erfc
-
erf
-
exp
-
exp2
-
exp10
-
expm1
-
fabs
-
fdim
-
fma
-
fmod
-
fract
-
frexp
-
frexp
(vector / scalar) -
hypot
-
ilogb
-
ldexp
-
lgamma
-
lgamma_r
-
log
-
log2
-
log10
-
log1p
-
logb
-
maxmag
-
minmag
-
modf
-
nan
-
nextafter
-
pow
-
pown
-
powr
-
remainder
-
remquo
-
rootn
-
rsqrt
-
sincos
-
sinh
-
sinpi
-
tan
-
tanh
-
tanpi
-
tgamma
-
-
- Matrices
- Constructors
- Basic
- From columns
- From rows
- From diagonal
- Functions
-
equal
-
almost_equal_elements
-
almost_equal_elements_relative
-
- Constructors