-
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
[LoongArch64] coreclr-vm directory #62885
Changes from 10 commits
47d106f
411b59e
7eed4eb
0d7c9e4
2c534c5
6e14d76
359875d
192b095
8a9d654
4606899
e62a6cd
cdb7606
ad3b666
7d03307
f6ec562
277de6f
d6dabd7
63073dc
6aa5e1a
3e3c3b3
55eeb95
21040b8
19e4357
743c518
cb91556
1f790f4
42fd640
7757e09
ba9fba0
86d4546
56b0a79
5798329
c747f93
48b4734
a96f159
aa96fba
cc96589
d3e6ca7
4b32677
9bb6899
c01407f
14669dc
7b8b887
ceee54a
00fdee0
a623961
6566991
9f39e13
d6c7080
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -471,7 +471,11 @@ void MethodDescCallSite::CallTargetWorker(const ARG_SLOT *pArguments, ARG_SLOT * | |
case 1: | ||
case 2: | ||
case 4: | ||
#if defined(TARGET_LOONGARCH64) | ||
jkotas marked this conversation as resolved.
Show resolved
Hide resolved
|
||
*((INT64*)pDest) = (INT32)pArguments[arg]; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This change is not right now that we have established in loongson/LoongArch-Documentation#32 that signed integers should be sign-extended and unsigned integers should be zero-extended. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. loongson/LoongArch-Documentation#32 (comment) So we can simplify it by signed extexd. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The comment you have quoted talks about one specific example. The specific example has signed integer and so the value is sign-extended. The general rule in the current version of the ABI doc is:
This rule has to be applied here and in other places. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Thanks, I agree with you. |
||
#else | ||
*((INT32*)pDest) = (INT32)pArguments[arg]; | ||
#endif | ||
break; | ||
|
||
case 8: | ||
|
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.
Where is the case of struct passed in two floating registers handled?
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.
A struct containing just one floating-point real is passed as though it were a standalone floating-point real.
It's related with the ABI, similar with the PR #62893 ,
#62893 (comment)
This case is also the same with the RISC-V: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-cc.adoc