Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

avx: AVX1 support for matrix inverse #64

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

avx: AVX1 support for matrix inverse #64

wants to merge 4 commits into from

Conversation

recp
Copy link
Owner

@recp recp commented Oct 30, 2018

cglm already supports AVX version for mat4_mul, but mat4_inv was missing. I implemented AVX1 version of matrix inverse.

After upgraded my Macbook Pro I'll try to implement AVX2 + FMA too, but since my current CPU does not support that, I can't do that for now.

I tested mat4_inv on Ivy Bridge CPU, I got similar performance with SSE (not better), but on new CPUs the result may be different. I'll try to reduce some shuffles later to increase performance.

New functions:

  • glm_mat4_scale_avx(mat4 m, float s)
  • glm_mat4_inv_avx(mat4 mat, mat4 dest)

These are selected automatically if -mavx is set.

I'll try to optimize SIMD-ed functions with SSE3 and SSE4 later.

@coveralls
Copy link

coveralls commented Oct 30, 2018

Coverage Status

Coverage remained the same at 11.487% when pulling 01b93b0 on simd into 07e60bd on master.

@recp
Copy link
Owner Author

recp commented Apr 30, 2021

glm_mat4_scale_avx() is added to master and I'll try to re-implement the AVX vesion

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

Successfully merging this pull request may close these issues.

2 participants