|
2 | 2 | // Code ported from the `packed_simd` crate
|
3 | 3 | // Run this code with `cargo test --example matrix_inversion`
|
4 | 4 | #![feature(array_chunks, portable_simd)]
|
5 |
| -use core_simd::simd::{ |
6 |
| - prelude::*, |
7 |
| - Which::{self, *}, |
8 |
| -}; |
| 5 | +use core_simd::simd::prelude::*; |
9 | 6 |
|
10 | 7 | // Gotta define our own 4x4 matrix since Rust doesn't ship multidim arrays yet :^)
|
11 | 8 | #[derive(Copy, Clone, Debug, PartialEq, PartialOrd)]
|
@@ -166,10 +163,10 @@ pub fn simd_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
|
166 | 163 | let m_2 = f32x4::from_array(m[2]);
|
167 | 164 | let m_3 = f32x4::from_array(m[3]);
|
168 | 165 |
|
169 |
| - const SHUFFLE01: [Which; 4] = [First(0), First(1), Second(0), Second(1)]; |
170 |
| - const SHUFFLE02: [Which; 4] = [First(0), First(2), Second(0), Second(2)]; |
171 |
| - const SHUFFLE13: [Which; 4] = [First(1), First(3), Second(1), Second(3)]; |
172 |
| - const SHUFFLE23: [Which; 4] = [First(2), First(3), Second(2), Second(3)]; |
| 166 | + const SHUFFLE01: [usize; 4] = [0, 1, 4, 5]; |
| 167 | + const SHUFFLE02: [usize; 4] = [0, 2, 4, 6]; |
| 168 | + const SHUFFLE13: [usize; 4] = [1, 3, 5, 7]; |
| 169 | + const SHUFFLE23: [usize; 4] = [2, 3, 6, 7]; |
173 | 170 |
|
174 | 171 | let tmp = simd_swizzle!(m_0, m_1, SHUFFLE01);
|
175 | 172 | let row1 = simd_swizzle!(m_2, m_3, SHUFFLE01);
|
|
0 commit comments