Uh oh!
There was an error while loading. Please reload this page.
[release/7.0] Allow SIMD-returning calls as arguments - #74520
Conversation
As of this change we handle all relevant ABI scenarios. 1) Windows x64: - SIMD8: returned and passed as "TYP_LONG", fine. - SIMD12 / SIMD16 / SIMD32: returned and passed via a return buffer, fine. 2) Unix x64: - SIMD8: returned and passed in one FP register, fine. - SIMD12 / SIMD16, Vector4: returned and passed in two FP registers, fine. - SIMD16, Vector128 / SIMD32: returned and passed via a return buffer, fine. 3) x86: - SIMD8: can be returned via two registers or a return buffer (and is always passed on stack), both are fine. - SIMD12/SIMD16/SIMD32: returned via a return buffer, passed on stack, fine. 4) ARM64: - SIMD8, Vector2: returned in two FP registers (and passed as such or "TYP_LONG" under Windows varargs), fine. - SIMD8, Vector64: returned in one FP register, can be passed as such or as "TYP_LONG" under Windows varargs. The latter case is now handled correctly in "Lowering::LowerArg". - SIMD12: returned in three FP registers, passed as such or in two integer registers under Windows varargs, fine. - SIMD16, Vector4: returned in four FP registers, passed as such, or in two integer registers under Windows varargs, fine. - SIMD16, Vector128: returned in one FP register, passed as such, or in two integer registers under Windows varargs, fine (morph will decompose the varargs case into a `FIELD_LIST` via a temp).
ghost
commented
Aug 24, 2022
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsBackport of #74184 to release/7.0 /cc @BruceForstall@SingleAccretion Customer ImpactTestingRiskIMPORTANT: Is this backport for a servicing release? If so and this change touches code that ships in a NuGet package, please make certain that you have added any necessary package authoring and gotten it explicitly reviewed.
|
SingleAccretion
commented
Aug 24, 2022
Nit: I think the observable symptom of this is silent bad performance; the optimized code will fix hit an
This is a regression from 6.0, caused by a combination of forward substitution and |
carlossanlop
commented
Aug 25, 2022
Can we please get an approval, @jeffschwMSFT ? |
JulieLeeMSFT
commented
Aug 25, 2022
@BruceForstall I reran the failed tests. Once all tests pass, please merge. |
JulieLeeMSFT
commented
Aug 25, 2022
@carlossanlop all tests are green. It is good to merge. |
Backport of #74184 to release/7.0
/cc @BruceForstall@SingleAccretion
Customer Impact
Possible silent bad codegen for code involving SIMD types.
Testing
Normal CI testing including SuperPMI replay/asmdiffs
Risk
low