forked from ioquake/ioq3
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathasm-snapvector.patch
More file actions
27 lines (25 loc) · 1.21 KB
/
Copy pathasm-snapvector.patch
File metadata and controls
27 lines (25 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff --git a/quake3-rs/ioquake3/src/asm/snapvector.rs b/quake3-rs/ioquake3/src/asm/snapvector.rs
index 6978b774..e0ef17b5 100644
--- a/quake3-rs/ioquake3/src/asm/snapvector.rs
+++ b/quake3-rs/ioquake3/src/asm/snapvector.rs
@@ -28,9 +28,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* See MASM snapvector.asm for commentary
*/
-static mut ssemask: [libc::c_uchar; 16] = [
+#[repr(C, align(16))]
+struct SseMask([u8; 16]);
+static mut ssemask: SseMask = SseMask([
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0,
-];
+]);
/*
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.
@@ -124,7 +126,7 @@ MATHLIB
pub unsafe extern "C" fn qsnapvectorsse(mut vec: *mut crate::src::qcommon::q_shared::vec_t) {
asm!("movaps ($0), %xmm1\nmovups ($1), %xmm0\nmovaps %xmm0, %xmm2\nandps %xmm1, %xmm0\nandnps %xmm2, %xmm1\ncvtps2dq %xmm0, %xmm0\ncvtdq2ps %xmm0, %xmm0\norps %xmm1, %xmm0\nmovups %xmm0, ($1)\n"
- : : "r" (ssemask.as_mut_ptr()), "r" (vec) : "memory", "xmm0", "xmm1",
+ : : "r" (ssemask.0.as_mut_ptr()), "r" (vec) : "memory", "xmm0", "xmm1",
"xmm2" : "volatile");
}
#[no_mangle]