Explain the discrepancy in the mask type for _mm_shuffle_ps (#879)
This commit is contained in:
@@ -992,6 +992,12 @@ pub const fn _MM_SHUFFLE(z: u32, y: u32, x: u32, w: u32) -> i32 {
|
|||||||
/// `b`. Mask is split to 2 control bits each to index the element from inputs.
|
/// `b`. Mask is split to 2 control bits each to index the element from inputs.
|
||||||
///
|
///
|
||||||
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shuffle_ps)
|
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shuffle_ps)
|
||||||
|
///
|
||||||
|
/// Note that there appears to be a mistake within Intel's Intrinsics Guide.
|
||||||
|
/// `_mm_shuffle_ps` is supposed to take an `i32` instead of an `u32`
|
||||||
|
/// as is the case for [other shuffle intrinsics](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shuffle_).
|
||||||
|
/// Performing an implicit type conversion between an unsigned integer and a signed integer
|
||||||
|
/// does not cause a problem in C, however Rust's commitment to strong typing does not allow this.
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "sse")]
|
#[target_feature(enable = "sse")]
|
||||||
#[cfg_attr(test, assert_instr(shufps, mask = 3))]
|
#[cfg_attr(test, assert_instr(shufps, mask = 3))]
|
||||||
|
|||||||
Reference in New Issue
Block a user