Skip to content

Conversation

amaury-ml
Copy link

Hi there,

I'd like to add some Neon to the simd support in GLM.
We at Magic Leap use glm quite a bit on Aarch64 (aka Arm64) cores, but we noticed that the compiler (prebuilt Android O llvm-clang base) does not generate enough of Neon to take advantage of the full potential of our architecture.
For now, this PR enables the SIMD path only if GLM_FORCE_NEON is defined. But the goal is maybe to enable it by default.
We don't expect a big performance gain (or loss) from this PR, but if it can be merged, a few other PRs can take care of the matrix operations (like multiply or inverse). For the inverse case, we can get a 2x improvement on an Aarch64 core.

Thanks

A few simple functions that use Neon as compiler does not
use the full potential of Neon
For now, -DGLM_FORCE_NEON is required until it's the default
@amaury-ml
Copy link
Author

Anyone to review this?

@Groovounet Groovounet self-assigned this Sep 3, 2019
@Groovounet Groovounet added this to the GLM 0.9.9 milestone Sep 3, 2019
@amaury-ml
Copy link
Author

Is it also in your view of glm to use clang or gcc's extensions to make things easier? I'm talking about the vector extensions so ARM or x86 could be implemented inside shared code. It won't work with MSVC though, so it could be an issue, unless you know of a vector extension for the MS compilers (or even icc)?

Groovounet added a commit that referenced this pull request Sep 7, 2019
@Groovounet Groovounet merged commit d2aa30f into g-truc:master Sep 7, 2019
@Groovounet
Copy link
Member

This PR is merged in master branch for GLM 0.9.9.6 release.

Thanks for contributing,
Christophe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants