Sam Hocevar
e34856fb74
core: handle denormal halfs properly on the PS3; it's denormal floats that
we do not care about.
пре 13 година
Sam Hocevar
62b5838fc1
lolunit: reverse the expected/actual logic.
CPPUNIT_ASSERT_EQUAL(a, b) “expects” the value “a” and fails if “b” is
different. The logic seems backwards to me, but matching CppUnit’s
output is important so I’m doing the same in LolUnit.
пре 13 година
Sam Hocevar
4d99340dfe
lolunit: fix an uninitialised member in TestCase.
пре 13 година
Sam Hocevar
916d608144
core: define FP_USE on exotic architectures.
пре 13 година
Sam Hocevar
b64d051e6a
lolunit: free all the memory we allocated to avoid a minor memory leak,
and slightly tweak the API syntax.
пре 13 година
Sam Hocevar
5bd1a0f887
build: add -j6 to our build scripts' "make" invocations.
пре 13 година
Sam Hocevar
1569f1620a
core: mediocre workaround for mingw32 who ignores our FP_USE macro.
пре 13 година
Sam Hocevar
5ab9eb3c62
test: get rid of the need for LOLUNIT_SETUP_FIXTURE().
пре 13 година
Sam Hocevar
579f77bded
test: make LolUnit's output match CppUnit's more closely.
пре 13 година
Sam Hocevar
a374127e80
test: replace CppUnit with our LolUnit test suite.
CppUnit is really too large for our needs, would require to be precompiled
for many platforms, in all combinations of debug and release modes, with
additional variants for libstdc++ versions. We replace it with our own
lightweight implementation, LolUnit. Good riddance.
пре 13 година
Sam Hocevar
0e622822e7
test: add a few Visual Studio 2010 project files and fix testsuite code
so that it builds properly.
пре 13 година
Sam Hocevar
14a3e1f739
core: fix a bug on the PS3 version of lol_sin().
пре 13 година
Sam Hocevar
e9296e7994
core: implement the FP_USE() macro on x86, amd64 and powerpc.
пре 13 година
Sam Hocevar
b3e2429b9e
core: avoid returning to memory when giving GCC floating point hints.
пре 13 година
Sam Hocevar
5454005d81
debug: various improvements to the test programs.
пре 13 година
Sam Hocevar
e006714236
build: new Visual Studio build files, for the engine core and the debug
quad application.
пре 13 година
Sam Hocevar
320e70d8c4
core: a few compilation fixes for non-GCC compilers.
пре 13 година
Sam Hocevar
b5cb0dffa6
debug: fix PS3 and Android compilation.
пре 13 година
Sam Hocevar
9eeef663d1
debug: add point sprite examples.
пре 13 година
Sam Hocevar
5feadd8b6a
core: fix PS3 compilation; the lol_fdiv implementation was missing.
пре 13 година
Sam Hocevar
bf164def53
core: fix an accuracy error in the cos() part of lol_sincos().
пре 13 година
Sam Hocevar
2489233a44
core: improve tan() accuracy by tweaking higher order Taylor coefficients.
пре 13 година
Sam Hocevar
82d81256b9
core: implement accelerated lol_sincos() and lol_tan().
пре 13 година
Sam Hocevar
5be195a8b0
core: slightly reorganise Taylor series in sin() and cos().
пре 13 година
Sam Hocevar
49f9c59ff3
core: implement accelerated cos().
пре 13 година
Sam Hocevar
a65c472ffd
core: add a code shortcut for sin() on platforms that have cheap branches.
пре 13 година
Sam Hocevar
148f6838e9
test: replace lol-bench with lol-bench$(EXEEXT) in the Makefile to allow
"make bench" to work when cross-compiling for Windows.
пре 13 година
Sam Hocevar
6ed53d9868
test: do the trigonometry tests on doubles instead of floats.
пре 13 година
Sam Hocevar
35454b8f94
test: add an empty sandbox program and update .gitignore.
пре 13 година
Sam Hocevar
3402db36c3
optim: better isnan() reimplementation.
пре 13 година
Sam Hocevar
824551e4af
optim: split the Taylor series calculation into two separate values.
This is at the cost of one additional multiply, but performance increases
by more than 11%, because the PS3 pipeline is a lot happier now.
пре 13 година
Sam Hocevar
de496b15fe
core: remove one multiplication and one selection from the optimised
version of sinf().
пре 13 година
Sam Hocevar
105485a3aa
test: new test for trigonometric functions.
пре 13 година
Sam Hocevar
42b22f1163
core: minor optimisation in the x86 version of lol_sin()
Instead of dividing by 2 and rounding with magic number 2^52, we round with
magic number 2^53, which gives us the parity with at least one mul less.
пре 13 година
Sam Hocevar
7680eca5d8
test: implement a custom isnan()
This version is faster (about 25% on x86_64) and works when extreme
optimisation options such as -ffast-math are used.
пре 13 година
Sam Hocevar
744f4ac98d
test: add benchmark tests for trigonometry functions.
пре 13 година
Sam Hocevar
1b33a7fcb7
core: start implementing optimised trigonometry functions for PS3 and x86.
пре 13 година
Sam Hocevar
bcc14949ad
build: check for <fastmath.h> and build using -O3 -ffastmath.
пре 13 година
Sam Hocevar
d2b523bb01
core: use <altivec.h> with ppu-gcc, <ppu_altivec_internals.h> with SNC.
пре 13 година
Sam Hocevar
4b9bd58747
core: reactivate half denormals for the PS3.
We know we will not have denormal floats on the PS3, but we should still
create denormal halves in case the other end (maybe the GPU?) knows how
to handle them.
пре 13 година
Sam Hocevar
09ecf1bd8b
contrib: rebuild the Win32 CppUnit under Linux and fix the includes.
Apparently g++ 4.5.2 on native mingw32 inserts references to __Unwind_Resume
when exceptions are supported. This function is not present in the g++ 4.4
cross-compiler found in Debian, leading to linker errors when cross-
compiling. So we use the latter to build CppUnit itself.
Another problem arises with g++ 4.4, which is the incomplete stripping of
exceptions when -fno-exceptions is used. Since ExceptionTestCaseDecorator.h
has such code, we protect it with #ifdef __EXCEPTIONS in the meantime.
пре 13 година
Sam Hocevar
782283a3d0
test: add matrix code to the benchmark program.
пре 13 година
Sam Hocevar
cb001ddbcc
core: tune the half precision code so that the best variants are being
used on the PS3 platform.
пре 13 година
Sam Hocevar
aa6e832fd7
build: clean up .self files and allow to build the benchmark on the PS3.
пре 13 година
Sam Hocevar
e47928e8d1
test: improve the benchmark code to measure a lot more half precision
number conversions.
пре 13 година
Sam Hocevar
bf23a03ecd
contrib: add a precompiled Win32 version of CppUnit and update build system
accordingly.
пре 13 година
Sam Hocevar
0bbd1e43c2
test: add a fallback for isnan() when not defined by the system includes.
пре 13 година
Sam Hocevar
205fc5fc22
core: rename half::isnan() etc. to half::is_nan() because "isnan" can be
a C macro on some systems (Android NDK, PS3...).
пре 13 година
Sam Hocevar
4fea7a091d
core: implement array versions of the float / half conversion routines.
пре 13 година
Sam Hocevar
2d85e76ec8
core: minor refactoring in the float / half conversions to accomodate
for future array versions.
пре 13 година