Skip to content

Add SSE2NEON for ARM (Nvidia Tegra, PI, etc) support - #59

Merged
JakobEngel merged 2 commits into
JakobEngel:masterfrom
israelshirk:feature/sse2neon
Jun 9, 2017
Merged

Add SSE2NEON for ARM (Nvidia Tegra, PI, etc) support#59
JakobEngel merged 2 commits into
JakobEngel:masterfrom
israelshirk:feature/sse2neon

Conversation

@israelshirk

Copy link
Copy Markdown
Contributor

What

Adds support for ARM processors. In my case, this means a quadcopter self-navigating for SAR. There are a number of possible uses, but in general PI and Nvidia Tegra's seem to run the small robotics world at the moment.

How

Including SSE2NEON.h only when SSE is not present keeps things nicely segregated - SSE2NEON takes care of all the translations, and any required compatibility fixes would belong to the upstream. There are other options such as simde; however they didn't work on the very first try :)

Related issues

#57 and #31

Changes

I've tried to keep this as loosely-coupled as possible. Ping me if you'd like any changes, such as just including SSE2NEON.h in the utils folder instead of using the submodule.

Thanks! Israel

@JakobEngel
JakobEngel merged commit e23058b into JakobEngel:master Jun 9, 2017
@JakobEngel

Copy link
Copy Markdown
Owner

thanks!
I don't have a way of testing it on ARM, however given the comments it seems to work well!
I changed the ifdef checks to
#if !defined(SSE3) && !defined(SSE2) && !defined(SSE1)
(I only have SSE2 on my workstation, i.e. SSE3 is not defined and compilation failed).

Best,
Jakob

@israelshirk

Copy link
Copy Markdown
Contributor Author

Awesome, thanks! I'll run some tests tomorrow but I can't imagine anything would be broken - I was just using SSE3 based off of some intel docs.

@israelshirk
israelshirk deleted the feature/sse2neon branch June 11, 2017 05:21
@guohengkai

Copy link
Copy Markdown

@israelshirk Hi, it seems that in the newest NDK the codes fail to compile. The errors were:
AccumulatedTopHessian.s: Assembler messages:
AccumulatedTopHessian.s:28297: Error: r13 not allowed here -- `sub.w sp,r2,#80'
clang++: error: assembler command failed with exit code 1 (use -v to see invocation)

Do you have any idea?

@israelshirk

Copy link
Copy Markdown
Contributor Author

@guohengkai Could you create a new issue for this? Thanks!

@guohengkai

Copy link
Copy Markdown

@israelshirk Done: #96

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.

3 participants