1 mod swar;
2 
3 #[cfg(not(all(
4     httparse_simd,
5     any(
6         target_arch = "x86",
7         target_arch = "x86_64",
8         all(
9             target_arch = "aarch64",
10             httparse_simd_neon_intrinsics,
11         )
12     ),
13 )))]
14 pub use self::swar::*;
15 
16 #[cfg(all(
17     httparse_simd,
18     not(httparse_simd_target_feature_avx2),
19     any(
20         target_arch = "x86",
21         target_arch = "x86_64",
22     ),
23 ))]
24 mod sse42;
25 
26 #[cfg(all(
27     httparse_simd,
28     any(
29         httparse_simd_target_feature_avx2,
30         not(httparse_simd_target_feature_sse42),
31     ),
32     any(
33         target_arch = "x86",
34         target_arch = "x86_64",
35     ),
36 ))]
37 mod avx2;
38 
39 #[cfg(all(
40     httparse_simd,
41     not(any(
42         httparse_simd_target_feature_sse42,
43         httparse_simd_target_feature_avx2,
44     )),
45     any(
46         target_arch = "x86",
47         target_arch = "x86_64",
48     ),
49 ))]
50 mod runtime;
51 
52 #[cfg(all(
53     httparse_simd,
54     not(any(
55         httparse_simd_target_feature_sse42,
56         httparse_simd_target_feature_avx2,
57     )),
58     any(
59         target_arch = "x86",
60         target_arch = "x86_64",
61     ),
62 ))]
63 pub use self::runtime::*;
64 
65 #[cfg(all(
66     httparse_simd,
67     httparse_simd_target_feature_sse42,
68     not(httparse_simd_target_feature_avx2),
69     any(
70         target_arch = "x86",
71         target_arch = "x86_64",
72     ),
73 ))]
74 mod sse42_compile_time {
75     #[inline(always)]
match_header_name_vectored(b: &mut crate::iter::Bytes<'_>)76     pub fn match_header_name_vectored(b: &mut crate::iter::Bytes<'_>) {
77         super::swar::match_header_name_vectored(b);
78     }
79 
80     #[inline(always)]
match_uri_vectored(b: &mut crate::iter::Bytes<'_>)81     pub fn match_uri_vectored(b: &mut crate::iter::Bytes<'_>) {
82         // SAFETY: calls are guarded by a compile time feature check
83         unsafe { crate::simd::sse42::match_uri_vectored(b) }
84     }
85 
86     #[inline(always)]
match_header_value_vectored(b: &mut crate::iter::Bytes<'_>)87     pub fn match_header_value_vectored(b: &mut crate::iter::Bytes<'_>) {
88         // SAFETY: calls are guarded by a compile time feature check
89         unsafe { crate::simd::sse42::match_header_value_vectored(b) }
90     }
91 }
92 
93 #[cfg(all(
94     httparse_simd,
95     httparse_simd_target_feature_sse42,
96     not(httparse_simd_target_feature_avx2),
97     any(
98         target_arch = "x86",
99         target_arch = "x86_64",
100     ),
101 ))]
102 pub use self::sse42_compile_time::*;
103 
104 #[cfg(all(
105     httparse_simd,
106     httparse_simd_target_feature_avx2,
107     any(
108         target_arch = "x86",
109         target_arch = "x86_64",
110     ),
111 ))]
112 mod avx2_compile_time {
113     #[inline(always)]
match_header_name_vectored(b: &mut crate::iter::Bytes<'_>)114     pub fn match_header_name_vectored(b: &mut crate::iter::Bytes<'_>) {
115         super::swar::match_header_name_vectored(b);
116     }
117 
118     #[inline(always)]
match_uri_vectored(b: &mut crate::iter::Bytes<'_>)119     pub fn match_uri_vectored(b: &mut crate::iter::Bytes<'_>) {
120         // SAFETY: calls are guarded by a compile time feature check
121         unsafe { crate::simd::avx2::match_uri_vectored(b) }
122     }
123 
124     #[inline(always)]
match_header_value_vectored(b: &mut crate::iter::Bytes<'_>)125     pub fn match_header_value_vectored(b: &mut crate::iter::Bytes<'_>) {
126         // SAFETY: calls are guarded by a compile time feature check
127         unsafe { crate::simd::avx2::match_header_value_vectored(b) }
128     }
129 }
130 
131 #[cfg(all(
132     httparse_simd,
133     httparse_simd_target_feature_avx2,
134     any(
135         target_arch = "x86",
136         target_arch = "x86_64",
137     ),
138 ))]
139 pub use self::avx2_compile_time::*;
140 
141 #[cfg(all(
142     httparse_simd,
143     target_arch = "aarch64",
144     httparse_simd_neon_intrinsics,
145 ))]
146 mod neon;
147 
148 #[cfg(all(
149     httparse_simd,
150     target_arch = "aarch64",
151     httparse_simd_neon_intrinsics,
152 ))]
153 pub use self::neon::*;
154