[LoongArch64] add new ABI classifier.#101224
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
|
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::genHomeRegisterParamswill be considered later whether to uniform within the codegencommon.cpp.