mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 22:31:05 +00:00
09a10f80e1
They take advantage of gcc's vector_size attribute and so only cross, dot, qmul, qvmul and qrot (create rotation quaternion from two vectors) are needed at this stage as basic (per-component) math is supported natively by gcc. The provided functions work on horizontal (array-of-structs) data, ie a vec4d_t or vec4f_t represents a single vector, or traditional vector layout. Vertical layout (struct-of-arrays) does not need any special functions as the regular math can be used to operate on four vectors at a time. Functions are provided for loading a vec4 from a vec3 (4th element set to 0) and storing a vec4 into a vec3 (discarding the 4th element). With this, QF will require AVX2 support (needed for vec4d_t). Without support for doubles, SSE is possible, but may not be worthwhile for horizontal data. Fused-multiply-add is NOT used because it alters the results between unoptimized and optimized code, resulting in -mfma really meaning -mfast-math-anyway. I really do not want to have to debug issues that occur only in optimized code. |
||
---|---|---|
.. | ||
ac_config_files.m4 | ||
asm.m4 | ||
build_control.m4 | ||
cdrom.m4 | ||
compiling.m4 | ||
compression.m4 | ||
cross_compile.m4 | ||
curses.m4 | ||
fbdev.m4 | ||
git-version-gen | ||
header_files.m4 | ||
joystick.m4 | ||
library_functions.m4 | ||
mgl.m4 | ||
networking.m4 | ||
paths.m4 | ||
programs.m4 | ||
pthread.m4 | ||
qfcc.m4 | ||
result.m4 | ||
rpm.m4 | ||
sdl.m4 | ||
sound.m4 | ||
svga.m4 | ||
system_services.m4 | ||
typedefs_structs_compiler.m4 | ||
versions.m4 | ||
vulkan.m4 | ||
windows.m4 | ||
x11.m4 |