pulp/core_arch/x86/
sse.rs1use 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}