view gen/README @ 45:7955bed1d169 default tip

*: add preliminary floating point support no x86 intrinsics just yet, but I did add altivec since it's (arguably) the simplest :)
author Paper <paper@tflc.us>
date Wed, 30 Apr 2025 18:36:38 -0400
parents
children
line wrap: on
line source

These files are used to generate the actual implementation headers in
`include/vec/impl`.

All of them are basically compiled the same way:
	gcc -o genIMPL genIMPL.c genlib.c

You can generally base any new implementations off of one of the existing
ones. Preferably, you would base it off the generic implementation, since
it actually has all of the operations implemented (and serves as a
reference as to how these operations *should* work). For example the avg
operation on integers should be roughly equivalent to:
	ceil((vec1 + vec2) / 2)

Note how it always rounds up, rather than truncating towards zero. This
is an important implementation detail, and stems from roots in AltiVec,
as it was the inspiration behind much of the vec API.

Note however, that avg has a different result with floating points that
is equivalent to simply
	((vec1 + vec2) / 2)
as there is no real way to get around any possible truncation.

Any overflow on integer operations should simply wrap around.