Fix arm simd shuffling arguments
According to packed_simd docs, the syntax for simd_shuffle4() is as follows: "The indices must be in range [0, M * N) where M is the number of input vectors (1 or 2)and N is the number of lanes of the input vectors. The indices i in range [0, N) refer to the i-th element of vec0, while the indices in range [N, 2*N) refer to the i - N-th element of vec1." I did not find implementation or documentation for simd_shuffle4() but I believe packed_simd implements exactly the same interface. Plus, implementing this change has fixed font-kit glyph output on an Apple M1 mac (64-bit arm).
This commit is contained in:
parent
f1f9df5ce5
commit
bd6d015e6f
|
@ -129,7 +129,7 @@ impl F32x2 {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn concat_xy_xy(self, other: F32x2) -> F32x4 {
|
pub fn concat_xy_xy(self, other: F32x2) -> F32x4 {
|
||||||
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 0, 1])) }
|
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 2, 3])) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,17 +314,17 @@ impl F32x4 {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn concat_xy_xy(self, other: F32x4) -> F32x4 {
|
pub fn concat_xy_xy(self, other: F32x4) -> F32x4 {
|
||||||
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 0, 1])) }
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn concat_xy_zw(self, other: F32x4) -> F32x4 {
|
|
||||||
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 2, 3])) }
|
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 2, 3])) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn concat_xy_zw(self, other: F32x4) -> F32x4 {
|
||||||
|
unsafe { F32x4(simd_shuffle4(self.0, other.0, [0, 1, 6, 7])) }
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn concat_zw_zw(self, other: F32x4) -> F32x4 {
|
pub fn concat_zw_zw(self, other: F32x4) -> F32x4 {
|
||||||
unsafe { F32x4(simd_shuffle4(self.0, other.0, [2, 3, 2, 3])) }
|
unsafe { F32x4(simd_shuffle4(self.0, other.0, [2, 3, 6, 7])) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conversions
|
// Conversions
|
||||||
|
@ -461,7 +461,7 @@ impl I32x2 {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn concat_xy_xy(self, other: I32x2) -> I32x4 {
|
pub fn concat_xy_xy(self, other: I32x2) -> I32x4 {
|
||||||
unsafe { I32x4(simd_shuffle4(self.0, other.0, [0, 1, 0, 1])) }
|
unsafe { I32x4(simd_shuffle4(self.0, other.0, [0, 1, 2, 3])) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conversions
|
// Conversions
|
||||||
|
|
Loading…
Reference in New Issue