-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Handle more than 64 registers - Part 2 #102297
Conversation
@dotnet/jit-contrib @jakobbotsch |
I will double check the reason for arm regression. |
For some reason, I am not able to use the local pin tool to produce the individual method instruction count difference. I looked at vtune data for |
ping @dotnet/jit-contrib |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, some minor clean up that we should do in the future.
/ba-g failure is related to #102479 |
@kunalspathak, osx-arm64 build is failing locally. If I revert this change, or checkout the previous commit 0709995, it works. Possible build regression. [ 96%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/simdashwintrinsic.cpp.o
Undefined symbols for architecture arm64:
"RegSet::rsAllCalleeSavedMask", referenced from:
RegSet::rsGetModifiedCalleeSavedRegsMask() const in codegencommon.cpp.o
"RegSet::rsIntCalleeSavedMask", referenced from:
RegSet::rsGetModifiedOsrIntCalleeSavedRegsMask() const in codegenxarch.cpp.o
RegSet::rsGetModifiedIntCalleeSavedRegsMask() const in codegenxarch.cpp.o
ld: symbol(s) not found for architecture arm64
[ 96%] Building CXX object jit/CMakeFiles/clrjit_universal_arm_arm64.dir/targetarm.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/simdcodegenxarch.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit.dir/codegenarm64test.cpp.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [jit/libclrjit_win_x64_arm64.dylib] Error 1
make[1]: *** [jit/CMakeFiles/clrjit_win_x64_arm64.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 96%] Building CXX object jit/CMakeFiles/clrjit_win_x86_arm64.dir/targetx86.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit.dir/emitarm64.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_win_x86_arm64.dir/unwindx86.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_universal_arm_arm64.dir/unwindarmarch.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_universal_arm_arm64.dir/dllmain.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_win_x86_arm64.dir/hwintrinsicxarch.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit.dir/emitarm64sve.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/targetamd64.cpp.o
[ 96%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/unwindamd64.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit_win_x86_arm64.dir/hwintrinsiccodegenxarch.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/lowerarmarch.cpp.o
^[[C[ 97%] Linking CXX shared library libclrjit_universal_arm_arm64.dylib
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/lsraarmarch.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/hwintrinsicxarch.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/hwintrinsiccodegenxarch.cpp.o
Undefined symbols for architecture arm64:
"RegSet::rsAllCalleeSavedMask", referenced from:
RegSet::rsGetModifiedCalleeSavedRegsMask() const in codegencommon.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [jit/libclrjit_universal_arm_arm64.dylib] Error 1
make[1]: *** [jit/CMakeFiles/clrjit_universal_arm_arm64.dir/all] Error 2
[ 97%] Building CXX object jit/CMakeFiles/clrjit_win_x86_arm64.dir/dllmain.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/lsraarm64.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit_unix_x64_arm64.dir/dllmain.cpp.o
[ 97%] Linking CXX shared library libclrjit_win_x86_arm64.dylib
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/simd.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/simdashwintrinsic.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/targetarm64.cpp.o
Undefined symbols for architecture arm64:
"RegSet::rsAllCalleeSavedMask", referenced from:
RegSet::rsGetModifiedCalleeSavedRegsMask() const in codegencommon.cpp.o
"RegSet::rsIntCalleeSavedMask", referenced from:
RegSet::rsGetModifiedIntCalleeSavedRegsMask() const in codegenxarch.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [jit/libclrjit_win_x86_arm64.dylib] Error 1
make[1]: *** [jit/CMakeFiles/clrjit_win_x86_arm64.dir/all] Error 2
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/unwindarmarch.cpp.o
[ 97%] Building CXX object jit/CMakeFiles/clrjit.dir/unwindarm64.cpp.o |
@am11 - What machine are you building this on? can you share the command you are using and possibly the clang version? |
$ uname -ms
Darwin arm64
$ clang --version | head -1
Apple clang version 15.0.0 (clang-1500.3.9.4) |
Thanks. I realized that this fails only if building |
* Make regMaskTP struct for non-arm64 platforms * some refactoring * jit format * fix missing paranethesis in arm * fix riscv64 and loongarch build * minor change * review feedback
* Make regMaskTP struct for non-arm64 platforms * some refactoring * jit format * fix missing paranethesis in arm * fix riscv64 and loongarch build * minor change * review feedback
In this PR, I have extended the support of
struct regMaskTP
to non-arm64 platforms. The reason being that when I start adding code to convert 64-bits mask back and forth betweenregMaskTP
, I will not have to add#ifdef TARGET_ARM64
in LSRA code to handle thestruct regMaskTP
vs.uint64_t regMaskTP
separately.