-
Notifications
You must be signed in to change notification settings - Fork 291
core intrinsics that should take void but take *u8 #199
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
What about defining a 512 byte long, 16 byte aligned type to be used for all |
If you meant to define that for
And the docs of
So technically, while one need a 512-byte image to call So... if you convince me that it always works for However, this doesn't help you a lot with |
Ah ok right, I was looking at https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-xsave-/-xsavec-/-xsaves but that appears to be wrong, more than 512 bytes is needed. Probably just best to leave it as a byte pointer then. It would be nice to encode the alignment requirement some how though, or does that vary with size too? |
That does not vary with size, its 16-byte alignment for Is there an easy way to encode the alignment requirement?
Yes that is not right in general, e.g., |
I believe the current status of this issue is that we've since added automatic verification of all intrinsics and their signatures. We have an explicit mapping that allows So at least in that sense we're consistently inconsistent with Intel's specification! My guess is that we're likely to stick with this, but that's at least where we're at! |
I think it would be better to just map Providing |
It's true yeah if we had |
I'm going to close this in favor of rust-lang/rfcs#2325 where I think we'll decide that either " |
Uh oh!
There was an error while loading. Please reload this page.
Using
c_void
requires thestd::os::raw
module.This should be fixed in Rust upstream, the tracking issue is: rust-lang/rust#36193
The following intrinsics should use
c_void
on its API, but use*u8
instead so that they can be exposed incoresimd
:void _mm_clflush (void const* p)
xrstor
xrstor64
xrstors
xrstors64
xsave
xave64
xsaveopt
xasveopt64
xsaves
xsaves64
xsavec
xsavec64
The text was updated successfully, but these errors were encountered: