-
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
[release/9.0-rc1] JIT: fix unused operand marking in LowerHWIntrinsicTernaryLogic #106574
[release/9.0-rc1] JIT: fix unused operand marking in LowerHWIntrinsicTernaryLogic #106574
Conversation
In `LowerHWIntrinsicTernaryLogic` we do some operand swapping and replacing, and were not accounting for this when marking operands as unused. Fixes #106480.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
@tannergooding PTAL |
@carlossanlop are we still considering rc1 fixes? |
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. we will take for consideration in rc1
It seems so. We just got two bad build breaks fixed today. So I guess we can take this today too. Has this been approved by Tactics? @AndyAyersMS @jeffschwMSFT |
Backport of #106555 to release/9.0-rc1
/cc @AndyAyersMS
Customer Impact
Found by Antigen (internal exploratory test generator).
Certain uses of AVX512F's Ternary Logic will lead to silent bad code generation.
Regression
Introduced fairly recently, in #104517.
Testing
The fix was validated on the Antigen test case, and that case is now included in our regression suite.
We likely need to pay more attention in reviews and testing when considering code where operands can be swapped, as it's easy to lose track of which one is which.
Risk
Low. Only impacts a handful of AVX512-specific intrinsics. But note TernaryLogic lowers to a powerful new instruction (
vpternlog{d,q}
) and we are increasingly shaping our IR to take advantage of it, when running on AVX-512 hardware.IMPORTANT: If this backport is for a servicing release, please verify that:
The PR target branch is
release/X.0-staging
, notrelease/X.0
.If the change touches code that ships in a NuGet package, you have added the necessary package authoring and gotten it explicitly reviewed.