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

E2K: added initial support of MCST Elbrus 2000 CPU architecture #862

Merged
merged 1 commit into from
Nov 23, 2020
Merged

Conversation

r-a-sattarov
Copy link
Contributor

e2k (Elbrus 2000) - this is VLIW/EPIC architecture, like Intel Itanium (IA-64) architecture.
Architecture has half native / half software support of most Intel/AMD SIMD (e.g. MMX/SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2/AES/AVX/AVX2 & 3DNow!/SSE4a/XOP/FMA4)

@linux-foundation-easycla
Copy link

CLA Not Signed

@linux-foundation-easycla
Copy link

CLA Not Signed

@linux-foundation-easycla
Copy link

CLA Not Signed

@meshula
Copy link
Contributor

meshula commented Nov 12, 2020

I think it would make sense to modify the preprocessor set that opts in the SSE optimizations. Instead of trying to detect compiler and capabilities at compile time, cmake options would provide the level of control needed without needing to anticipate all the possibilities in the library source code.

@r-a-sattarov
Copy link
Contributor Author

I think it would make sense to modify the preprocessor set that opts in the SSE optimizations. Instead of trying to detect compiler and capabilities at compile time, cmake options would provide the level of control needed without needing to anticipate all the possibilities in the library source code.

Okay, I'll think about solving this problem.

I use preprocessor definitions because otherwise I would have to modify void cpuid (int n, int & eax, int & ebx, int & ecx, int & edx) and void xgetbv (int n, int & eax, int & edx) functions in /src/lib/OpenEXR/ImfSystemSpecific.cpp file. In them, I would need to add a condition for the e2k architecture and set values for eax, ebx, ecx, edx registers (e2k does not support x86 assembler).

@meshula
Copy link
Contributor

meshula commented Nov 16, 2020

I see, in that case maybe the preprocessor approach is the simplest solution. Thanks for clarifying.

@linux-foundation-easycla
Copy link

CLA Not Signed

@r-a-sattarov
Copy link
Contributor Author

I see, in that case maybe the preprocessor approach is the simplest solution. Thanks for clarifying.

I tried changing my current implementation a bit (I took the implementation in src/lib/OpenEXR/ImfSimd.h as a basis).
Detecting MCST lcc (eLbrus C Compiler) definitions in CMake can be a little tricky 😃

@cary-ilm
Copy link
Member

We discussed in the technical steering committee and agreed to accept this, thanks for the contribution. But we do need the CLA signed. Can you follow the "Please click here to be authorized" link and sign the contributor form? Thanks.

e2k (Elbrus 2000) - this is VLIW/EPIC architecture, like Intel Itanium (IA-64) architecture.
Ref: https://en.wikipedia.org/wiki/Elbrus_2000

Signed-off-by: r-a-sattarov <r.a.sattarov@yandex.ru>
@r-a-sattarov
Copy link
Contributor Author

We discussed in the technical steering committee and agreed to accept this, thanks for the contribution. But we do need the CLA signed. Can you follow the "Please click here to be authorized" link and sign the contributor form? Thanks.

Thank you very much! Done 🙂

@meshula meshula merged commit f04fcdd into AcademySoftwareFoundation:master Nov 23, 2020
sdottaka pushed a commit to WinMerge/freeimage that referenced this pull request Feb 18, 2021
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.

3 participants