-
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
[JIT] Splitting instrDesc
for EVEX encoded instruction
#87016
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsEVEX has introduced a group of extra bits in its encoding format:
dotnet#84821 has implemented the Given the fact that EVEX encoded instructions are rarely used at current stage, please consider splitting a new
|
Looking into this as part of #87097. It looks like we may not need to split and that instead we may be able to use some already in use bits and tricks to make things more pay for play and avoid a throughput hit. Notably, I've put up #87373 which optimizes all 8-bit constants (signed or unsigned) to fit into We then have 4 existing defined bits that are only used for
Given this, we could move Instead, we can reuse these 4 bits to track additional EVEX state such as |
Closing. We determined we don't need to split anything here and the current handling in #87373 is sufficient. We now also can easily get metrics showing how constants are distributed in practice so future considerations are easier. |
EVEX has introduced a group of extra bits in its encoding format:
EVEX.aaa
: Embedded opmask register specifierEVEX.Z
: Zeroing/MergingEVEX.b
: Broadcast/RC/SAE ContextEVEX.L'L
: Vector length/RCdotnet#84821 has implemented the
EVEX.b
in theinstrDecs
data structure as an extra "small" constants. This implementation will introduce throughput regression due to the increased size for everyinstrDesc
instance.Given the fact that EVEX encoded instructions are rarely used at current stage, please consider splitting a new
instrDecs
for EVEX instructions alone, such that the non-EVEX instructions won't be affected by the introduction of these new bits in theinstrDesc
.The text was updated successfully, but these errors were encountered: