[RISC-V] New ABI classifiers#101114
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
Thanks for this, very happy to see it. |
…ist doesn't guarantee no heap allocation in C++11 (only since C++14)
I agree with you that we can share the |
What is this optimization? |
As we use |
What does the codegen look like? Does it set up a temporary register pointing closer to the parameters than FP and store based on this register instead?
Keeping separate version of |
yes, you are right.
Thanks.
Yes, that's a good idea that introducing a new interface to do that.
I agree with you for sharing the |
Are you saying that #100962 doesn't help? I would expect it to make the optimization unimportant because it changes the FP to sit right next to where the parameter locals are allocated on the stack, so the relative offset from the FP is very small now.
The offset provided to |
|
|
||
| assert((floatFields > 0) || (intFields == 0)); | ||
|
|
||
| auto PassSlot = [this](bool inFloatReg, unsigned offset, unsigned size) -> ABIPassingSegment { |
There was a problem hiding this comment.
Nit: Most places within the JIT that use lambdas use camelCase naming convention.
No need to address this here.
| } | ||
| } | ||
|
|
||
| unreached(); |
There was a problem hiding this comment.
Does this do anything? Won't we have a compiler error if this becomes accidentally reachable?
Feel free to remove this separately.
Yes, from this view, after 100962 the args' position is more near the FP. |
* Code review from #101114 * Use common genHomeRegisterParams on RISC-V * Make passSlot integer-only because we know hardware floating-point calling convention passes in registers only * Make a RISC-V specific routine for homing stack parts of split parameters. * Move genHomeStackPartOfSplitParameter out of genHomeSwiftStructParameters, share stack segment homing with Swift code
* Code review from dotnet#101114 * Use common genHomeRegisterParams on RISC-V * Make passSlot integer-only because we know hardware floating-point calling convention passes in registers only * Make a RISC-V specific routine for homing stack parts of split parameters. * Move genHomeStackPartOfSplitParameter out of genHomeSwiftStructParameters, share stack segment homing with Swift code
* Code review from dotnet#101114 * Use common genHomeRegisterParams on RISC-V * Make passSlot integer-only because we know hardware floating-point calling convention passes in registers only * Make a RISC-V specific routine for homing stack parts of split parameters. * Move genHomeStackPartOfSplitParameter out of genHomeSwiftStructParameters, share stack segment homing with Swift code
Implements the RISC-V part of #100744
Part of #84834, cc @dotnet/samsung