-
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
Ensure that IF_*WR_RRD formats support 4-byte SIMD instructions #85594
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis resolves #85586 and resolves #85469 The general issue is that we have some scenarios where the instruction opcode is baselined at 4-bytes. In this case, we put the opcode in the This fixes the formats that are new to supporting this scenario with EVEX to handle it correctly.
|
code = insCodeMR(ins); | ||
|
||
if (EncodedBySSE38orSSE3A(ins)) | ||
{ | ||
// Special case 4-byte AVX instructions as the | ||
// regcode position conflicts with the opcode byte | ||
dst = emitOutputAM(dst, id, code); | ||
} | ||
else | ||
{ | ||
code = AddSimdPrefixIfNeeded(id, code, size); | ||
regcode = (insEncodeReg345(id, id->idReg1(), size, &code) << 8); | ||
dst = emitOutputAM(dst, id, code | regcode); | ||
} | ||
|
||
sz = emitSizeOfInsDsc(id); |
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.
There's actually a bit of code duplication that exists between these format specific handlers and the general emitOutput**
methods.
I want to get that cleaned up and it should be easier once #85536 goes in.
/azp run runtime-coreclr jitstress-isas-x86, runtime-coreclr outerloop, runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn |
Azure Pipelines successfully started running 5 pipeline(s). |
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.
LGTM when the CI is green.
Fuzzlyn failure is pre-existing (at least back to .NET 8 P3): #85611 |
Expecting a few JitStress failures due to #85608
|
This resolves #85586 and resolves #85469
The general issue is that we have some scenarios where the instruction opcode is baselined at 4-bytes. In this case, we put the opcode in the
code
byte thatmodr/m
is normally stored and so we can't pre-fill that with the regcode.This fixes the formats that are new to supporting this scenario with EVEX to handle it correctly.