Conversation
|
/azp run runtime-coreclr jitstress2-jitstressregs |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
There was a problem hiding this comment.
Pull request overview
This PR adjusts ARM64 JIT HWIntrinsic codegen to correctly account for multi-instruction expansion in RMW-style SVE intrinsics when generating non-constant-immediate jump tables. This aligns the HWIntrinsicImmOpHelper case-size calculation with the emitter’s behavior under register-stress scenarios (e.g., targetReg != op1Reg).
Changes:
- Pass an explicit
numInstrstoHWIntrinsicImmOpHelperfor SVE saturating inc/dec-by-element-count codegen when the emitter may insert an extra move. - Pass an explicit
numInstrstoHWIntrinsicImmOpHelperforNI_Sve_ExtractVectorto match the emitter’s RMW handling (may require a move whentargetReg != op1Reg).
| int numInstrs = (targetReg != op1Reg) ? 2 : 1; | ||
| HWIntrinsicImmOpHelper helper(this, op2Reg, 0, 511, node, numInstrs); |
There was a problem hiding this comment.
Tomorrow I'll open a workitem to refactor this pattern into HWIntrinsicImmOpHelper somehow, since this pattern or something pretty similar now appears a number of times in this file
Original fix here missed some cases, as msbuild or helix cuts off the failure list after 300:
95f94b6
This is applying the same fix to other locations we needed this.
I grabbed this codechange from @ylpoonlg (thanks in advance)
Ran jitstress, arm64 is green