-
Notifications
You must be signed in to change notification settings - Fork 5k
[LoongArch64] add new ABI classifier. #101224
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
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
4447663
to
c6bcb4f
Compare
e6c2bc3
to
5f13e34
Compare
There are some formatting errors as well. Can you please fix those? |
5d9669c
to
780e867
Compare
780e867
to
75b7a50
Compare
75b7a50
to
3018cf6
Compare
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. Thank you!
Hi, @jakobbotsch Can you give some advices ? Besides, althought the split args within the |
Line 3335: This is handling to support SIMD types. The JIT can enregister a SIMD type parameter in a single vector register while it may be passed in multiple registers. For example, on arm64: public static float Test(float x, Vector3 v)
{
return v.Length();
} Parameter V00 ABI info: [00..04) reg d0
Parameter V01 ABI info: 3 segments
[0] [00..04) reg d1
[1] [04..08) reg d2
[2] [08..12) reg d3
...
*************** In genHomeRegisterParams()
4 registers in register parameter interference graph
d1
d0
<- d3 (offset: 8)
<- d2 (offset: 4)
<- d1
d2
d3
IN000b: fmov s0, s1
IN000c: mov v0.s[2], v3.s[0]
IN000d: mov v0.s[1], v2.s[0] I think you don't need this yet for LA64. Line 3041: This is purely an optimization for arm64 to make stores to the stack always the same size, so that we can use |
Thanks very much. |
|
* add new ABI classifier. * share `CodeGen::genHomeRegisterParams` with XARCH-ARMARCH.
Add new ABI classifier for LoongArch64. #100744
The first patch is only the
LoongArch64Classifier
.The
CodeGen::genHomeRegisterParams
will be considered later whether to uniform within the codegencommon.cpp.