Support building for e2k (Elbrus2000) CPU architecture (VLIW) (#871)
Elbrus 2000 (aka e2k) is a 64-bit little-endian WLIV architecture (more info https://github.com/ilyakurdyukov/e2k-ports).
This change adds compilation for e2k (using SSE intrinsics that are translated to close equivalents for Elbrus2000 CPU instructions) with LCC compiler (mimics GCC 9.3.0).
Since LCC issues more warnings JoltPhysics cannot be compiled with treat-warning-as-errors, so we setup and compile as:
cmake . -DENABLE_ALL_WARNINGS=OFF
Internal tests passed:
./UnitTests
Single precision 64-bit with instructions: SSE2
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 409 | 409 passed | 0 failed | 0 skipped
[doctest] assertions: 280481 | 280481 passed | 0 failed |
[doctest] Status: SUCCESS!
./PerformanceTest
Single precision 64-bit with instructions: SSE2
Running scene: Ragdoll
Motion Quality, Thread Count, Steps / Second, Hash
Discrete, 1, 9.346963, 0xa9daaf344fe673db
Discrete, 2, 17.908885, 0xa9daaf344fe673db
Discrete, 3, 25.916333, 0xa9daaf344fe673db
Discrete, 4, 33.719118, 0xa9daaf344fe673db
Discrete, 5, 41.038943, 0xa9daaf344fe673db
Discrete, 6, 47.863349, 0xa9daaf344fe673db
Discrete, 7, 54.226738, 0xa9daaf344fe673db
Discrete, 8, 52.689932, 0xa9daaf344fe673db
LinearCast, 1, 8.790343, 0xcdcbb4da185d1a13
LinearCast, 2, 16.644860, 0xcdcbb4da185d1a13
LinearCast, 3, 24.083228, 0xcdcbb4da185d1a13
LinearCast, 4, 31.272998, 0xcdcbb4da185d1a13
LinearCast, 5, 38.307285, 0xcdcbb4da185d1a13
LinearCast, 6, 44.485573, 0xcdcbb4da185d1a13
LinearCast, 7, 50.048080, 0xcdcbb4da185d1a13
LinearCast, 8, 48.670700, 0xcdcbb4da185d1a13