-
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
Optimize System.Runtime.Intrinsics using arm64 intrinsics #33496
Comments
@BruceForstall, how does this compare to #33495? |
Ah, based on #33308, this should be |
@TamarChristinaArm, is there an existing reference for how to efficiently create a We have methods both like: public static unsafe Vector128<byte> Create(byte value);
public static unsafe Vector128<byte> Create(byte e0, byte e1, byte e2, byte e3, byte e4, byte e5, byte e6, byte e7, byte e8, byte e9, byte e10, byte e11, byte e12, byte e13, byte e14, byte e15) In the case of the former, the given value is duplicated to all elements in the Vector. I don't see any existing reference that can be used on the C++ side. But, on the x86/x64 side the former is basically a single Would the same be the correct thing to do for ARM64? |
Hmm not that I'm aware of, though we have a very limited number of instructions for this.
Yeah, the former case is just a Though the context they're used in is important, since e.g. doing a load followed by |
Right, and if all or most of the inputs are constant, we could just construct a 64-bit or 128-bit constant (or simplify codegen in other ways) and load that instead. But those should hopefully be optimizations handled in the JIT😄 |
yup :) and if creating one of the |
@BruceForstall - All the APIs under |
@kunalspathak That's great! Thanks for all the work! |
This item tracks the conversion of the System.Runtime.Intrinsics class to use arm64 intrinsics.
Related: #33308
The text was updated successfully, but these errors were encountered: