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

Fail to compile vqsort with clang 16 on Darwin M1 #2356

Open
1yefuwang1 opened this issue Oct 16, 2024 · 4 comments
Open

Fail to compile vqsort with clang 16 on Darwin M1 #2356

1yefuwang1 opened this issue Oct 16, 2024 · 4 comments

Comments

@1yefuwang1
Copy link

1yefuwang1 commented Oct 16, 2024

Hi maintainers,
Thank you for making this great library. When compiling this project on MacOS M1 with clang 16, I got this error "Calling convention SVE_VectorCall is unsupported on Darwin"
The full error message is:

**Version of C++:**
/Library/Developer/CommandLineTools/usr/bin/c++ -v
Apple clang version 16.0.0 (clang-1600.0.26.3)
Target: arm64-apple-darwin24.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

**Error detail:**
[19/41] /Library/Developer/CommandLineTools/usr/bin/c++ -DHWY_STATIC_DEFINE -DTOOLCHAIN_MISS_ASM_HWCAP_H -DTOOLCHAIN_MISS_SYS_AUXV_H -I/Users/xiaobao/project/vectorlite/vcpkg/buildtrees/highway/src/1.2.0-9e5d3e7297.clean -fPIC -g -std=c++17 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.0.sdk -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-builtin-macro-redefined -D__DATE__=\"redacted\" -D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\" -fmerge-all-constants -Wall -Wextra -Wconversion -Wsign-conversion -Wvla -Wnon-virtual-dtor -Wcast-align -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wfor-loop-analysis -Wgnu-redeclared-enum -Winfinite-recursion -Wself-assign -Wstring-conversion -Wtautological-overlap-compare -Wthread-safety-analysis -Wundefined-func-template -fno-cxx-exceptions -fno-slp-vectorize -fno-vectorize -fdiagnostics-show-option -fcolor-diagnostics -Wc++2a-extensions -fmath-errno -fno-exceptions -Wno-psabi -MD -MT CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o -MF CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o.d -o CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o -c /Users/xiaobao/project/vectorlite/vcpkg/buildtrees/highway/src/1.2.0-9e5d3e7297.clean/hwy/contrib/sort/vqsort_i32a.cc
FAILED: CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o 
/Library/Developer/CommandLineTools/usr/bin/c++ -DHWY_STATIC_DEFINE -DTOOLCHAIN_MISS_ASM_HWCAP_H -DTOOLCHAIN_MISS_SYS_AUXV_H -I/Users/xiaobao/project/vectorlite/vcpkg/buildtrees/highway/src/1.2.0-9e5d3e7297.clean -fPIC -g -std=c++17 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.0.sdk -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-builtin-macro-redefined -D__DATE__=\"redacted\" -D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\" -fmerge-all-constants -Wall -Wextra -Wconversion -Wsign-conversion -Wvla -Wnon-virtual-dtor -Wcast-align -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wfor-loop-analysis -Wgnu-redeclared-enum -Winfinite-recursion -Wself-assign -Wstring-conversion -Wtautological-overlap-compare -Wthread-safety-analysis -Wundefined-func-template -fno-cxx-exceptions -fno-slp-vectorize -fno-vectorize -fdiagnostics-show-option -fcolor-diagnostics -Wc++2a-extensions -fmath-errno -fno-exceptions -Wno-psabi -MD -MT CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o -MF CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o.d -o CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_i32a.cc.o -c /Users/xiaobao/project/vectorlite/vcpkg/buildtrees/highway/src/1.2.0-9e5d3e7297.clean/hwy/contrib/sort/vqsort_i32a.cc
**fatal error: error in backend: Calling convention SVE_VectorCall is unsupported on Darwin.**
c++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Apple clang version 16.0.0 (clang-1600.0.26.3)
Target: arm64-apple-darwin24.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
c++: note: diagnostic msg:

It seems the compilation of vqsort failed.
When compiling with Clang 14, the same code compiles successfully.

@jan-wassenberg
Copy link
Member

Hi, thanks for your kind words :)
Unfortunately there are currently various compiler bugs relating to SVE. I'd recommend building with -DHWY_DISABLED_TARGETS=HWY_ALL_SVE. Hope this helps?

@1yefuwang1
Copy link
Author

1yefuwang1 commented Oct 29, 2024

In our case, vcpkg is used to compile highway as a dependency. It is non trivial to pass -DHWY_DISABLED_TARGETS=HWY_ALL_SVE to vcpkg.
So, we end up using Clang 15/14.

@jan-wassenberg
Copy link
Member

I understand, thanks for the follow up.
FYI discussions are underway on addressing the compiler bug.

@johnplatts
Copy link
Contributor

I understand, thanks for the follow up. FYI discussions are underway on addressing the compiler bug.

I have updated hwy/detect_targets.h to mark the SVE targets as broken on macOS as none of the current Apple A64 CPU's (at least up to and including A4 and M18) support SVE or SVE2 in pull request #2367.

The changes to hwy/detect_targets.h in pull request #2367 should fix compilation errors on macOS on A64.

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

No branches or pull requests

3 participants