pulp/core_arch/x86/
sse.rs

1use super::*;
2
3impl Sse {
4	delegate!({
5		fn _mm_add_ss(a: __m128, b: __m128) -> __m128;
6		fn _mm_add_ps(a: __m128, b: __m128) -> __m128;
7		fn _mm_sub_ss(a: __m128, b: __m128) -> __m128;
8		fn _mm_sub_ps(a: __m128, b: __m128) -> __m128;
9		fn _mm_mul_ss(a: __m128, b: __m128) -> __m128;
10		fn _mm_mul_ps(a: __m128, b: __m128) -> __m128;
11		fn _mm_div_ss(a: __m128, b: __m128) -> __m128;
12		fn _mm_div_ps(a: __m128, b: __m128) -> __m128;
13		fn _mm_sqrt_ss(a: __m128) -> __m128;
14		fn _mm_sqrt_ps(a: __m128) -> __m128;
15		fn _mm_rcp_ss(a: __m128) -> __m128;
16		fn _mm_rcp_ps(a: __m128) -> __m128;
17		fn _mm_rsqrt_ss(a: __m128) -> __m128;
18		fn _mm_rsqrt_ps(a: __m128) -> __m128;
19		fn _mm_min_ss(a: __m128, b: __m128) -> __m128;
20		fn _mm_min_ps(a: __m128, b: __m128) -> __m128;
21		fn _mm_max_ss(a: __m128, b: __m128) -> __m128;
22		fn _mm_max_ps(a: __m128, b: __m128) -> __m128;
23		fn _mm_and_ps(a: __m128, b: __m128) -> __m128;
24		fn _mm_andnot_ps(a: __m128, b: __m128) -> __m128;
25		fn _mm_or_ps(a: __m128, b: __m128) -> __m128;
26		fn _mm_xor_ps(a: __m128, b: __m128) -> __m128;
27		fn _mm_cmpeq_ss(a: __m128, b: __m128) -> __m128;
28		fn _mm_cmplt_ss(a: __m128, b: __m128) -> __m128;
29		fn _mm_cmple_ss(a: __m128, b: __m128) -> __m128;
30		fn _mm_cmpgt_ss(a: __m128, b: __m128) -> __m128;
31		fn _mm_cmpge_ss(a: __m128, b: __m128) -> __m128;
32		fn _mm_cmpneq_ss(a: __m128, b: __m128) -> __m128;
33		fn _mm_cmpnlt_ss(a: __m128, b: __m128) -> __m128;
34		fn _mm_cmpnle_ss(a: __m128, b: __m128) -> __m128;
35		fn _mm_cmpngt_ss(a: __m128, b: __m128) -> __m128;
36		fn _mm_cmpnge_ss(a: __m128, b: __m128) -> __m128;
37		fn _mm_cmpord_ss(a: __m128, b: __m128) -> __m128;
38		fn _mm_cmpunord_ss(a: __m128, b: __m128) -> __m128;
39		fn _mm_cmpeq_ps(a: __m128, b: __m128) -> __m128;
40		fn _mm_cmplt_ps(a: __m128, b: __m128) -> __m128;
41		fn _mm_cmple_ps(a: __m128, b: __m128) -> __m128;
42		fn _mm_cmpgt_ps(a: __m128, b: __m128) -> __m128;
43		fn _mm_cmpge_ps(a: __m128, b: __m128) -> __m128;
44		fn _mm_cmpneq_ps(a: __m128, b: __m128) -> __m128;
45		fn _mm_cmpnlt_ps(a: __m128, b: __m128) -> __m128;
46		fn _mm_cmpnle_ps(a: __m128, b: __m128) -> __m128;
47		fn _mm_cmpngt_ps(a: __m128, b: __m128) -> __m128;
48		fn _mm_cmpnge_ps(a: __m128, b: __m128) -> __m128;
49		fn _mm_cmpord_ps(a: __m128, b: __m128) -> __m128;
50		fn _mm_cmpunord_ps(a: __m128, b: __m128) -> __m128;
51		fn _mm_comieq_ss(a: __m128, b: __m128) -> i32;
52		fn _mm_comilt_ss(a: __m128, b: __m128) -> i32;
53		fn _mm_comile_ss(a: __m128, b: __m128) -> i32;
54		fn _mm_comigt_ss(a: __m128, b: __m128) -> i32;
55		fn _mm_comige_ss(a: __m128, b: __m128) -> i32;
56		fn _mm_comineq_ss(a: __m128, b: __m128) -> i32;
57		fn _mm_ucomieq_ss(a: __m128, b: __m128) -> i32;
58		fn _mm_ucomilt_ss(a: __m128, b: __m128) -> i32;
59		fn _mm_ucomile_ss(a: __m128, b: __m128) -> i32;
60		fn _mm_ucomigt_ss(a: __m128, b: __m128) -> i32;
61		fn _mm_ucomige_ss(a: __m128, b: __m128) -> i32;
62		fn _mm_ucomineq_ss(a: __m128, b: __m128) -> i32;
63		fn _mm_cvtss_si32(a: __m128) -> i32;
64		fn _mm_cvt_ss2si(a: __m128) -> i32;
65		fn _mm_cvttss_si32(a: __m128) -> i32;
66		fn _mm_cvtt_ss2si(a: __m128) -> i32;
67		fn _mm_cvtss_f32(a: __m128) -> f32;
68		fn _mm_cvtsi32_ss(a: __m128, b: i32) -> __m128;
69		fn _mm_cvt_si2ss(a: __m128, b: i32) -> __m128;
70		fn _mm_set_ss(a: f32) -> __m128;
71		fn _mm_set1_ps(a: f32) -> __m128;
72		fn _mm_set_ps1(a: f32) -> __m128;
73		fn _mm_set_ps(a: f32, b: f32, c: f32, d: f32) -> __m128;
74		fn _mm_setr_ps(a: f32, b: f32, c: f32, d: f32) -> __m128;
75		fn _mm_setzero_ps() -> __m128;
76		fn _mm_shuffle_ps<const MASK: i32>(a: __m128, b: __m128) -> __m128;
77		fn _mm_unpackhi_ps(a: __m128, b: __m128) -> __m128;
78		fn _mm_unpacklo_ps(a: __m128, b: __m128) -> __m128;
79		fn _mm_movehl_ps(a: __m128, b: __m128) -> __m128;
80		fn _mm_movelh_ps(a: __m128, b: __m128) -> __m128;
81		fn _mm_movemask_ps(a: __m128) -> i32;
82		unsafe fn _mm_load_ss(p: *const f32) -> __m128;
83		unsafe fn _mm_load1_ps(p: *const f32) -> __m128;
84		unsafe fn _mm_load_ps1(p: *const f32) -> __m128;
85		unsafe fn _mm_load_ps(p: *const f32) -> __m128;
86		unsafe fn _mm_loadu_ps(p: *const f32) -> __m128;
87		unsafe fn _mm_loadr_ps(p: *const f32) -> __m128;
88		unsafe fn _mm_loadu_si64(mem_addr: *const u8) -> __m128i;
89		unsafe fn _mm_store_ss(p: *mut f32, a: __m128);
90		unsafe fn _mm_store1_ps(p: *mut f32, a: __m128);
91		unsafe fn _mm_store_ps1(p: *mut f32, a: __m128);
92		unsafe fn _mm_store_ps(p: *mut f32, a: __m128);
93		unsafe fn _mm_storeu_ps(p: *mut f32, a: __m128);
94		unsafe fn _mm_storer_ps(p: *mut f32, a: __m128);
95		fn _mm_move_ss(a: __m128, b: __m128) -> __m128;
96		fn _mm_sfence();
97		#[allow(clippy::not_unsafe_ptr_arg_deref)]
98		fn _mm_prefetch<const STRATEGY: i32>(p: *const i8);
99		fn _mm_undefined_ps() -> __m128;
100		#[allow(non_snake_case)]
101		fn _MM_TRANSPOSE4_PS(
102			row0: &mut __m128,
103			row1: &mut __m128,
104			row2: &mut __m128,
105			row3: &mut __m128,
106		);
107		unsafe fn _mm_stream_ps(mem_addr: *mut f32, a: __m128);
108	});
109}