-
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: IsContainableHWIntrinsicOp seems to discard many containment opportunities #92332
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsSee e.g. the following: runtime/src/coreclr/jit/lowerxarch.cpp Lines 7921 to 7941 in 5883b72
Using The same kind of check is also present for the
|
Some of this is because the underlying instructions don't always take the exact size. For example, on SSE2 enabled hardware you only have On SSE4.1 enabled hardware, you get access to You don't get broadcast until AVX/AVX2 enabled hardware and that continues supporting all sizes explicitly. For the most part, There are a few cases where those transforms don't happen and we may need to replicate the necessary ISA checks in |
I see -- feel free to close this if there are no additional opportunities to be had here |
I'll keep it open for now so we can confirm we aren't missing anything obvious It's definitely possible we are, just wanted to note that some of it should be "by design" here. |
See e.g. the following:
runtime/src/coreclr/jit/lowerxarch.cpp
Lines 7921 to 7941 in 5883b72
Using
expectedSize = genTypeSize(genActualType(parentNode->GetSimdBaseType()))
means we e.g. disallow containingLCL_FLD<ubyte>
insideCreateScalar<ubyte>
(this particular case is still contained after we transform to broadcast, since broadcast is missing any size check at all -- that's issue #83387). Likely we should not be using actual types here.The same kind of check is also present for the
ConvertScalarToVector128*
variants.The text was updated successfully, but these errors were encountered: