1 /**
2  * @file
3  *
4  * @author jeffrey.daily@gmail.com
5  *
6  * Copyright (c) 2015 Battelle Memorial Institute.
7  */
8 #include "config.h"
9 
10 #include <stdint.h>
11 #include <stdlib.h>
12 
13 #include "parasail.h"
14 #include "parasail/cpuid.h"
15 
16 /* forward declare the dispatcher functions */
17 parasail_function_t parasail_sg_qx_scan_64_dispatcher;
18 parasail_function_t parasail_sg_qx_scan_32_dispatcher;
19 parasail_function_t parasail_sg_qx_scan_16_dispatcher;
20 parasail_function_t parasail_sg_qx_scan_8_dispatcher;
21 parasail_function_t parasail_sg_qx_striped_64_dispatcher;
22 parasail_function_t parasail_sg_qx_striped_32_dispatcher;
23 parasail_function_t parasail_sg_qx_striped_16_dispatcher;
24 parasail_function_t parasail_sg_qx_striped_8_dispatcher;
25 parasail_function_t parasail_sg_qx_diag_64_dispatcher;
26 parasail_function_t parasail_sg_qx_diag_32_dispatcher;
27 parasail_function_t parasail_sg_qx_diag_16_dispatcher;
28 parasail_function_t parasail_sg_qx_diag_8_dispatcher;
29 parasail_function_t parasail_sg_qx_stats_scan_64_dispatcher;
30 parasail_function_t parasail_sg_qx_stats_scan_32_dispatcher;
31 parasail_function_t parasail_sg_qx_stats_scan_16_dispatcher;
32 parasail_function_t parasail_sg_qx_stats_scan_8_dispatcher;
33 parasail_function_t parasail_sg_qx_stats_striped_64_dispatcher;
34 parasail_function_t parasail_sg_qx_stats_striped_32_dispatcher;
35 parasail_function_t parasail_sg_qx_stats_striped_16_dispatcher;
36 parasail_function_t parasail_sg_qx_stats_striped_8_dispatcher;
37 parasail_function_t parasail_sg_qx_stats_diag_64_dispatcher;
38 parasail_function_t parasail_sg_qx_stats_diag_32_dispatcher;
39 parasail_function_t parasail_sg_qx_stats_diag_16_dispatcher;
40 parasail_function_t parasail_sg_qx_stats_diag_8_dispatcher;
41 parasail_function_t parasail_sg_qx_table_scan_64_dispatcher;
42 parasail_function_t parasail_sg_qx_table_scan_32_dispatcher;
43 parasail_function_t parasail_sg_qx_table_scan_16_dispatcher;
44 parasail_function_t parasail_sg_qx_table_scan_8_dispatcher;
45 parasail_function_t parasail_sg_qx_table_striped_64_dispatcher;
46 parasail_function_t parasail_sg_qx_table_striped_32_dispatcher;
47 parasail_function_t parasail_sg_qx_table_striped_16_dispatcher;
48 parasail_function_t parasail_sg_qx_table_striped_8_dispatcher;
49 parasail_function_t parasail_sg_qx_table_diag_64_dispatcher;
50 parasail_function_t parasail_sg_qx_table_diag_32_dispatcher;
51 parasail_function_t parasail_sg_qx_table_diag_16_dispatcher;
52 parasail_function_t parasail_sg_qx_table_diag_8_dispatcher;
53 parasail_function_t parasail_sg_qx_stats_table_scan_64_dispatcher;
54 parasail_function_t parasail_sg_qx_stats_table_scan_32_dispatcher;
55 parasail_function_t parasail_sg_qx_stats_table_scan_16_dispatcher;
56 parasail_function_t parasail_sg_qx_stats_table_scan_8_dispatcher;
57 parasail_function_t parasail_sg_qx_stats_table_striped_64_dispatcher;
58 parasail_function_t parasail_sg_qx_stats_table_striped_32_dispatcher;
59 parasail_function_t parasail_sg_qx_stats_table_striped_16_dispatcher;
60 parasail_function_t parasail_sg_qx_stats_table_striped_8_dispatcher;
61 parasail_function_t parasail_sg_qx_stats_table_diag_64_dispatcher;
62 parasail_function_t parasail_sg_qx_stats_table_diag_32_dispatcher;
63 parasail_function_t parasail_sg_qx_stats_table_diag_16_dispatcher;
64 parasail_function_t parasail_sg_qx_stats_table_diag_8_dispatcher;
65 parasail_function_t parasail_sg_qx_rowcol_scan_64_dispatcher;
66 parasail_function_t parasail_sg_qx_rowcol_scan_32_dispatcher;
67 parasail_function_t parasail_sg_qx_rowcol_scan_16_dispatcher;
68 parasail_function_t parasail_sg_qx_rowcol_scan_8_dispatcher;
69 parasail_function_t parasail_sg_qx_rowcol_striped_64_dispatcher;
70 parasail_function_t parasail_sg_qx_rowcol_striped_32_dispatcher;
71 parasail_function_t parasail_sg_qx_rowcol_striped_16_dispatcher;
72 parasail_function_t parasail_sg_qx_rowcol_striped_8_dispatcher;
73 parasail_function_t parasail_sg_qx_rowcol_diag_64_dispatcher;
74 parasail_function_t parasail_sg_qx_rowcol_diag_32_dispatcher;
75 parasail_function_t parasail_sg_qx_rowcol_diag_16_dispatcher;
76 parasail_function_t parasail_sg_qx_rowcol_diag_8_dispatcher;
77 parasail_function_t parasail_sg_qx_stats_rowcol_scan_64_dispatcher;
78 parasail_function_t parasail_sg_qx_stats_rowcol_scan_32_dispatcher;
79 parasail_function_t parasail_sg_qx_stats_rowcol_scan_16_dispatcher;
80 parasail_function_t parasail_sg_qx_stats_rowcol_scan_8_dispatcher;
81 parasail_function_t parasail_sg_qx_stats_rowcol_striped_64_dispatcher;
82 parasail_function_t parasail_sg_qx_stats_rowcol_striped_32_dispatcher;
83 parasail_function_t parasail_sg_qx_stats_rowcol_striped_16_dispatcher;
84 parasail_function_t parasail_sg_qx_stats_rowcol_striped_8_dispatcher;
85 parasail_function_t parasail_sg_qx_stats_rowcol_diag_64_dispatcher;
86 parasail_function_t parasail_sg_qx_stats_rowcol_diag_32_dispatcher;
87 parasail_function_t parasail_sg_qx_stats_rowcol_diag_16_dispatcher;
88 parasail_function_t parasail_sg_qx_stats_rowcol_diag_8_dispatcher;
89 parasail_function_t parasail_sg_qx_trace_scan_64_dispatcher;
90 parasail_function_t parasail_sg_qx_trace_scan_32_dispatcher;
91 parasail_function_t parasail_sg_qx_trace_scan_16_dispatcher;
92 parasail_function_t parasail_sg_qx_trace_scan_8_dispatcher;
93 parasail_function_t parasail_sg_qx_trace_striped_64_dispatcher;
94 parasail_function_t parasail_sg_qx_trace_striped_32_dispatcher;
95 parasail_function_t parasail_sg_qx_trace_striped_16_dispatcher;
96 parasail_function_t parasail_sg_qx_trace_striped_8_dispatcher;
97 parasail_function_t parasail_sg_qx_trace_diag_64_dispatcher;
98 parasail_function_t parasail_sg_qx_trace_diag_32_dispatcher;
99 parasail_function_t parasail_sg_qx_trace_diag_16_dispatcher;
100 parasail_function_t parasail_sg_qx_trace_diag_8_dispatcher;
101 parasail_pfunction_t parasail_sg_qx_scan_profile_64_dispatcher;
102 parasail_pfunction_t parasail_sg_qx_scan_profile_32_dispatcher;
103 parasail_pfunction_t parasail_sg_qx_scan_profile_16_dispatcher;
104 parasail_pfunction_t parasail_sg_qx_scan_profile_8_dispatcher;
105 parasail_pfunction_t parasail_sg_qx_striped_profile_64_dispatcher;
106 parasail_pfunction_t parasail_sg_qx_striped_profile_32_dispatcher;
107 parasail_pfunction_t parasail_sg_qx_striped_profile_16_dispatcher;
108 parasail_pfunction_t parasail_sg_qx_striped_profile_8_dispatcher;
109 parasail_pfunction_t parasail_sg_qx_stats_scan_profile_64_dispatcher;
110 parasail_pfunction_t parasail_sg_qx_stats_scan_profile_32_dispatcher;
111 parasail_pfunction_t parasail_sg_qx_stats_scan_profile_16_dispatcher;
112 parasail_pfunction_t parasail_sg_qx_stats_scan_profile_8_dispatcher;
113 parasail_pfunction_t parasail_sg_qx_stats_striped_profile_64_dispatcher;
114 parasail_pfunction_t parasail_sg_qx_stats_striped_profile_32_dispatcher;
115 parasail_pfunction_t parasail_sg_qx_stats_striped_profile_16_dispatcher;
116 parasail_pfunction_t parasail_sg_qx_stats_striped_profile_8_dispatcher;
117 parasail_pfunction_t parasail_sg_qx_table_scan_profile_64_dispatcher;
118 parasail_pfunction_t parasail_sg_qx_table_scan_profile_32_dispatcher;
119 parasail_pfunction_t parasail_sg_qx_table_scan_profile_16_dispatcher;
120 parasail_pfunction_t parasail_sg_qx_table_scan_profile_8_dispatcher;
121 parasail_pfunction_t parasail_sg_qx_table_striped_profile_64_dispatcher;
122 parasail_pfunction_t parasail_sg_qx_table_striped_profile_32_dispatcher;
123 parasail_pfunction_t parasail_sg_qx_table_striped_profile_16_dispatcher;
124 parasail_pfunction_t parasail_sg_qx_table_striped_profile_8_dispatcher;
125 parasail_pfunction_t parasail_sg_qx_stats_table_scan_profile_64_dispatcher;
126 parasail_pfunction_t parasail_sg_qx_stats_table_scan_profile_32_dispatcher;
127 parasail_pfunction_t parasail_sg_qx_stats_table_scan_profile_16_dispatcher;
128 parasail_pfunction_t parasail_sg_qx_stats_table_scan_profile_8_dispatcher;
129 parasail_pfunction_t parasail_sg_qx_stats_table_striped_profile_64_dispatcher;
130 parasail_pfunction_t parasail_sg_qx_stats_table_striped_profile_32_dispatcher;
131 parasail_pfunction_t parasail_sg_qx_stats_table_striped_profile_16_dispatcher;
132 parasail_pfunction_t parasail_sg_qx_stats_table_striped_profile_8_dispatcher;
133 parasail_pfunction_t parasail_sg_qx_rowcol_scan_profile_64_dispatcher;
134 parasail_pfunction_t parasail_sg_qx_rowcol_scan_profile_32_dispatcher;
135 parasail_pfunction_t parasail_sg_qx_rowcol_scan_profile_16_dispatcher;
136 parasail_pfunction_t parasail_sg_qx_rowcol_scan_profile_8_dispatcher;
137 parasail_pfunction_t parasail_sg_qx_rowcol_striped_profile_64_dispatcher;
138 parasail_pfunction_t parasail_sg_qx_rowcol_striped_profile_32_dispatcher;
139 parasail_pfunction_t parasail_sg_qx_rowcol_striped_profile_16_dispatcher;
140 parasail_pfunction_t parasail_sg_qx_rowcol_striped_profile_8_dispatcher;
141 parasail_pfunction_t parasail_sg_qx_stats_rowcol_scan_profile_64_dispatcher;
142 parasail_pfunction_t parasail_sg_qx_stats_rowcol_scan_profile_32_dispatcher;
143 parasail_pfunction_t parasail_sg_qx_stats_rowcol_scan_profile_16_dispatcher;
144 parasail_pfunction_t parasail_sg_qx_stats_rowcol_scan_profile_8_dispatcher;
145 parasail_pfunction_t parasail_sg_qx_stats_rowcol_striped_profile_64_dispatcher;
146 parasail_pfunction_t parasail_sg_qx_stats_rowcol_striped_profile_32_dispatcher;
147 parasail_pfunction_t parasail_sg_qx_stats_rowcol_striped_profile_16_dispatcher;
148 parasail_pfunction_t parasail_sg_qx_stats_rowcol_striped_profile_8_dispatcher;
149 parasail_pfunction_t parasail_sg_qx_trace_scan_profile_64_dispatcher;
150 parasail_pfunction_t parasail_sg_qx_trace_scan_profile_32_dispatcher;
151 parasail_pfunction_t parasail_sg_qx_trace_scan_profile_16_dispatcher;
152 parasail_pfunction_t parasail_sg_qx_trace_scan_profile_8_dispatcher;
153 parasail_pfunction_t parasail_sg_qx_trace_striped_profile_64_dispatcher;
154 parasail_pfunction_t parasail_sg_qx_trace_striped_profile_32_dispatcher;
155 parasail_pfunction_t parasail_sg_qx_trace_striped_profile_16_dispatcher;
156 parasail_pfunction_t parasail_sg_qx_trace_striped_profile_8_dispatcher;
157 
158 /* declare and initialize the pointer to the dispatcher function */
159 #if 0
160 parasail_function_t * parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_64_dispatcher;
161 parasail_function_t * parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_32_dispatcher;
162 parasail_function_t * parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_16_dispatcher;
163 parasail_function_t * parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_8_dispatcher;
164 parasail_function_t * parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_64_dispatcher;
165 parasail_function_t * parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_32_dispatcher;
166 parasail_function_t * parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_16_dispatcher;
167 parasail_function_t * parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_8_dispatcher;
168 parasail_function_t * parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_64_dispatcher;
169 parasail_function_t * parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_32_dispatcher;
170 parasail_function_t * parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_16_dispatcher;
171 parasail_function_t * parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_8_dispatcher;
172 parasail_function_t * parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_64_dispatcher;
173 parasail_function_t * parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_32_dispatcher;
174 parasail_function_t * parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_16_dispatcher;
175 parasail_function_t * parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_8_dispatcher;
176 parasail_function_t * parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_64_dispatcher;
177 parasail_function_t * parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_32_dispatcher;
178 parasail_function_t * parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_16_dispatcher;
179 parasail_function_t * parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_8_dispatcher;
180 parasail_function_t * parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_64_dispatcher;
181 parasail_function_t * parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_32_dispatcher;
182 parasail_function_t * parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_16_dispatcher;
183 parasail_function_t * parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_8_dispatcher;
184 parasail_function_t * parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_64_dispatcher;
185 parasail_function_t * parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_32_dispatcher;
186 parasail_function_t * parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_16_dispatcher;
187 parasail_function_t * parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_8_dispatcher;
188 parasail_function_t * parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_64_dispatcher;
189 parasail_function_t * parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_32_dispatcher;
190 parasail_function_t * parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_16_dispatcher;
191 parasail_function_t * parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_8_dispatcher;
192 parasail_function_t * parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_64_dispatcher;
193 parasail_function_t * parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_32_dispatcher;
194 parasail_function_t * parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_16_dispatcher;
195 parasail_function_t * parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_8_dispatcher;
196 parasail_function_t * parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_64_dispatcher;
197 parasail_function_t * parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_32_dispatcher;
198 parasail_function_t * parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_16_dispatcher;
199 parasail_function_t * parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_8_dispatcher;
200 parasail_function_t * parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_64_dispatcher;
201 parasail_function_t * parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_32_dispatcher;
202 parasail_function_t * parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_16_dispatcher;
203 parasail_function_t * parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_8_dispatcher;
204 parasail_function_t * parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_64_dispatcher;
205 parasail_function_t * parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_32_dispatcher;
206 parasail_function_t * parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_16_dispatcher;
207 parasail_function_t * parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_8_dispatcher;
208 parasail_function_t * parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_64_dispatcher;
209 parasail_function_t * parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_32_dispatcher;
210 parasail_function_t * parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_16_dispatcher;
211 parasail_function_t * parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_8_dispatcher;
212 parasail_function_t * parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_64_dispatcher;
213 parasail_function_t * parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_32_dispatcher;
214 parasail_function_t * parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_16_dispatcher;
215 parasail_function_t * parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_8_dispatcher;
216 parasail_function_t * parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_64_dispatcher;
217 parasail_function_t * parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_32_dispatcher;
218 parasail_function_t * parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_16_dispatcher;
219 parasail_function_t * parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_8_dispatcher;
220 parasail_function_t * parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_64_dispatcher;
221 parasail_function_t * parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_32_dispatcher;
222 parasail_function_t * parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_16_dispatcher;
223 parasail_function_t * parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_8_dispatcher;
224 parasail_function_t * parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_64_dispatcher;
225 parasail_function_t * parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_32_dispatcher;
226 parasail_function_t * parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_16_dispatcher;
227 parasail_function_t * parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_8_dispatcher;
228 parasail_function_t * parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_64_dispatcher;
229 parasail_function_t * parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_32_dispatcher;
230 parasail_function_t * parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_16_dispatcher;
231 parasail_function_t * parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_8_dispatcher;
232 parasail_function_t * parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_64_dispatcher;
233 parasail_function_t * parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_32_dispatcher;
234 parasail_function_t * parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_16_dispatcher;
235 parasail_function_t * parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_8_dispatcher;
236 parasail_function_t * parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_64_dispatcher;
237 #endif
238 parasail_function_t * parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_32_dispatcher;
239 parasail_function_t * parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_16_dispatcher;
240 #if 0
241 parasail_function_t * parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_8_dispatcher;
242 parasail_function_t * parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_64_dispatcher;
243 parasail_function_t * parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_32_dispatcher;
244 parasail_function_t * parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_16_dispatcher;
245 parasail_function_t * parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_8_dispatcher;
246 parasail_pfunction_t * parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_64_dispatcher;
247 parasail_pfunction_t * parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_32_dispatcher;
248 parasail_pfunction_t * parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_16_dispatcher;
249 parasail_pfunction_t * parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_8_dispatcher;
250 parasail_pfunction_t * parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_64_dispatcher;
251 parasail_pfunction_t * parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_32_dispatcher;
252 parasail_pfunction_t * parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_16_dispatcher;
253 parasail_pfunction_t * parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_8_dispatcher;
254 parasail_pfunction_t * parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_64_dispatcher;
255 parasail_pfunction_t * parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_32_dispatcher;
256 parasail_pfunction_t * parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_16_dispatcher;
257 parasail_pfunction_t * parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_8_dispatcher;
258 parasail_pfunction_t * parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_64_dispatcher;
259 parasail_pfunction_t * parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_32_dispatcher;
260 parasail_pfunction_t * parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_16_dispatcher;
261 parasail_pfunction_t * parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_8_dispatcher;
262 parasail_pfunction_t * parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_64_dispatcher;
263 parasail_pfunction_t * parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_32_dispatcher;
264 parasail_pfunction_t * parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_16_dispatcher;
265 parasail_pfunction_t * parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_8_dispatcher;
266 parasail_pfunction_t * parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_64_dispatcher;
267 parasail_pfunction_t * parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_32_dispatcher;
268 parasail_pfunction_t * parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_16_dispatcher;
269 parasail_pfunction_t * parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_8_dispatcher;
270 parasail_pfunction_t * parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_64_dispatcher;
271 parasail_pfunction_t * parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_32_dispatcher;
272 parasail_pfunction_t * parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_16_dispatcher;
273 parasail_pfunction_t * parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_8_dispatcher;
274 parasail_pfunction_t * parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_64_dispatcher;
275 parasail_pfunction_t * parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_32_dispatcher;
276 parasail_pfunction_t * parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_16_dispatcher;
277 parasail_pfunction_t * parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_8_dispatcher;
278 parasail_pfunction_t * parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_64_dispatcher;
279 parasail_pfunction_t * parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_32_dispatcher;
280 parasail_pfunction_t * parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_16_dispatcher;
281 parasail_pfunction_t * parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_8_dispatcher;
282 parasail_pfunction_t * parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_64_dispatcher;
283 parasail_pfunction_t * parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_32_dispatcher;
284 parasail_pfunction_t * parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_16_dispatcher;
285 parasail_pfunction_t * parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_8_dispatcher;
286 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_64_dispatcher;
287 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_32_dispatcher;
288 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_16_dispatcher;
289 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_8_dispatcher;
290 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_64_dispatcher;
291 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_32_dispatcher;
292 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_16_dispatcher;
293 parasail_pfunction_t * parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_8_dispatcher;
294 parasail_pfunction_t * parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_64_dispatcher;
295 parasail_pfunction_t * parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_32_dispatcher;
296 parasail_pfunction_t * parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_16_dispatcher;
297 parasail_pfunction_t * parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_8_dispatcher;
298 parasail_pfunction_t * parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_64_dispatcher;
299 parasail_pfunction_t * parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_32_dispatcher;
300 parasail_pfunction_t * parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_16_dispatcher;
301 parasail_pfunction_t * parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_8_dispatcher;
302 #endif
303 
304 /* dispatcher function implementations */
305 
306 #if 0
307 parasail_result_t* parasail_sg_qx_scan_64_dispatcher(
308         const char * const restrict s1, const int s1Len,
309         const char * const restrict s2, const int s2Len,
310         const int open, const int gap,
311         const parasail_matrix_t *matrix)
312 {
313 #if HAVE_AVX2
314     if (parasail_can_use_avx2()) {
315         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_avx2_256_64;
316     }
317     else
318 #endif
319 #if HAVE_SSE41
320     if (parasail_can_use_sse41()) {
321         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_sse41_128_64;
322     }
323     else
324 #endif
325 #if HAVE_SSE2
326     if (parasail_can_use_sse2()) {
327         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_sse2_128_64;
328     }
329     else
330 #endif
331 #if HAVE_ALTIVEC
332     if (parasail_can_use_altivec()) {
333         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_altivec_128_64;
334     }
335     else
336 #endif
337 #if HAVE_NEON
338     if (parasail_can_use_neon()) {
339         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan_neon_128_64;
340     }
341     else
342 #endif
343     {
344         parasail_sg_qx_scan_64_pointer = parasail_sg_qx_scan;
345     }
346     return parasail_sg_qx_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
347 }
348 
349 parasail_result_t* parasail_sg_qx_scan_32_dispatcher(
350         const char * const restrict s1, const int s1Len,
351         const char * const restrict s2, const int s2Len,
352         const int open, const int gap,
353         const parasail_matrix_t *matrix)
354 {
355 #if HAVE_AVX2
356     if (parasail_can_use_avx2()) {
357         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_avx2_256_32;
358     }
359     else
360 #endif
361 #if HAVE_SSE41
362     if (parasail_can_use_sse41()) {
363         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_sse41_128_32;
364     }
365     else
366 #endif
367 #if HAVE_SSE2
368     if (parasail_can_use_sse2()) {
369         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_sse2_128_32;
370     }
371     else
372 #endif
373 #if HAVE_ALTIVEC
374     if (parasail_can_use_altivec()) {
375         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_altivec_128_32;
376     }
377     else
378 #endif
379 #if HAVE_NEON
380     if (parasail_can_use_neon()) {
381         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan_neon_128_32;
382     }
383     else
384 #endif
385     {
386         parasail_sg_qx_scan_32_pointer = parasail_sg_qx_scan;
387     }
388     return parasail_sg_qx_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
389 }
390 
391 parasail_result_t* parasail_sg_qx_scan_16_dispatcher(
392         const char * const restrict s1, const int s1Len,
393         const char * const restrict s2, const int s2Len,
394         const int open, const int gap,
395         const parasail_matrix_t *matrix)
396 {
397 #if HAVE_AVX2
398     if (parasail_can_use_avx2()) {
399         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_avx2_256_16;
400     }
401     else
402 #endif
403 #if HAVE_SSE41
404     if (parasail_can_use_sse41()) {
405         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_sse41_128_16;
406     }
407     else
408 #endif
409 #if HAVE_SSE2
410     if (parasail_can_use_sse2()) {
411         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_sse2_128_16;
412     }
413     else
414 #endif
415 #if HAVE_ALTIVEC
416     if (parasail_can_use_altivec()) {
417         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_altivec_128_16;
418     }
419     else
420 #endif
421 #if HAVE_NEON
422     if (parasail_can_use_neon()) {
423         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan_neon_128_16;
424     }
425     else
426 #endif
427     {
428         parasail_sg_qx_scan_16_pointer = parasail_sg_qx_scan;
429     }
430     return parasail_sg_qx_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
431 }
432 
433 parasail_result_t* parasail_sg_qx_scan_8_dispatcher(
434         const char * const restrict s1, const int s1Len,
435         const char * const restrict s2, const int s2Len,
436         const int open, const int gap,
437         const parasail_matrix_t *matrix)
438 {
439 #if HAVE_AVX2
440     if (parasail_can_use_avx2()) {
441         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_avx2_256_8;
442     }
443     else
444 #endif
445 #if HAVE_SSE41
446     if (parasail_can_use_sse41()) {
447         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_sse41_128_8;
448     }
449     else
450 #endif
451 #if HAVE_SSE2
452     if (parasail_can_use_sse2()) {
453         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_sse2_128_8;
454     }
455     else
456 #endif
457 #if HAVE_ALTIVEC
458     if (parasail_can_use_altivec()) {
459         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_altivec_128_8;
460     }
461     else
462 #endif
463 #if HAVE_NEON
464     if (parasail_can_use_neon()) {
465         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan_neon_128_8;
466     }
467     else
468 #endif
469     {
470         parasail_sg_qx_scan_8_pointer = parasail_sg_qx_scan;
471     }
472     return parasail_sg_qx_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
473 }
474 
475 parasail_result_t* parasail_sg_qx_striped_64_dispatcher(
476         const char * const restrict s1, const int s1Len,
477         const char * const restrict s2, const int s2Len,
478         const int open, const int gap,
479         const parasail_matrix_t *matrix)
480 {
481 #if HAVE_AVX2
482     if (parasail_can_use_avx2()) {
483         parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_avx2_256_64;
484     }
485     else
486 #endif
487 #if HAVE_SSE41
488     if (parasail_can_use_sse41()) {
489         parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_sse41_128_64;
490     }
491     else
492 #endif
493 #if HAVE_SSE2
494     if (parasail_can_use_sse2()) {
495         parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_sse2_128_64;
496     }
497     else
498 #endif
499 #if HAVE_ALTIVEC
500     if (parasail_can_use_altivec()) {
501         parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_altivec_128_64;
502     }
503     else
504 #endif
505 #if HAVE_NEON
506     if (parasail_can_use_neon()) {
507         parasail_sg_qx_striped_64_pointer = parasail_sg_qx_striped_neon_128_64;
508     }
509     else
510 #endif
511     {
512         parasail_sg_qx_striped_64_pointer = parasail_sg_qx;
513     }
514     return parasail_sg_qx_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
515 }
516 
517 parasail_result_t* parasail_sg_qx_striped_32_dispatcher(
518         const char * const restrict s1, const int s1Len,
519         const char * const restrict s2, const int s2Len,
520         const int open, const int gap,
521         const parasail_matrix_t *matrix)
522 {
523 #if HAVE_AVX2
524     if (parasail_can_use_avx2()) {
525         parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_avx2_256_32;
526     }
527     else
528 #endif
529 #if HAVE_SSE41
530     if (parasail_can_use_sse41()) {
531         parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_sse41_128_32;
532     }
533     else
534 #endif
535 #if HAVE_SSE2
536     if (parasail_can_use_sse2()) {
537         parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_sse2_128_32;
538     }
539     else
540 #endif
541 #if HAVE_ALTIVEC
542     if (parasail_can_use_altivec()) {
543         parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_altivec_128_32;
544     }
545     else
546 #endif
547 #if HAVE_NEON
548     if (parasail_can_use_neon()) {
549         parasail_sg_qx_striped_32_pointer = parasail_sg_qx_striped_neon_128_32;
550     }
551     else
552 #endif
553     {
554         parasail_sg_qx_striped_32_pointer = parasail_sg_qx;
555     }
556     return parasail_sg_qx_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
557 }
558 
559 parasail_result_t* parasail_sg_qx_striped_16_dispatcher(
560         const char * const restrict s1, const int s1Len,
561         const char * const restrict s2, const int s2Len,
562         const int open, const int gap,
563         const parasail_matrix_t *matrix)
564 {
565 #if HAVE_AVX2
566     if (parasail_can_use_avx2()) {
567         parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_avx2_256_16;
568     }
569     else
570 #endif
571 #if HAVE_SSE41
572     if (parasail_can_use_sse41()) {
573         parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_sse41_128_16;
574     }
575     else
576 #endif
577 #if HAVE_SSE2
578     if (parasail_can_use_sse2()) {
579         parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_sse2_128_16;
580     }
581     else
582 #endif
583 #if HAVE_ALTIVEC
584     if (parasail_can_use_altivec()) {
585         parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_altivec_128_16;
586     }
587     else
588 #endif
589 #if HAVE_NEON
590     if (parasail_can_use_neon()) {
591         parasail_sg_qx_striped_16_pointer = parasail_sg_qx_striped_neon_128_16;
592     }
593     else
594 #endif
595     {
596         parasail_sg_qx_striped_16_pointer = parasail_sg_qx;
597     }
598     return parasail_sg_qx_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
599 }
600 
601 parasail_result_t* parasail_sg_qx_striped_8_dispatcher(
602         const char * const restrict s1, const int s1Len,
603         const char * const restrict s2, const int s2Len,
604         const int open, const int gap,
605         const parasail_matrix_t *matrix)
606 {
607 #if HAVE_AVX2
608     if (parasail_can_use_avx2()) {
609         parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_avx2_256_8;
610     }
611     else
612 #endif
613 #if HAVE_SSE41
614     if (parasail_can_use_sse41()) {
615         parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_sse41_128_8;
616     }
617     else
618 #endif
619 #if HAVE_SSE2
620     if (parasail_can_use_sse2()) {
621         parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_sse2_128_8;
622     }
623     else
624 #endif
625 #if HAVE_ALTIVEC
626     if (parasail_can_use_altivec()) {
627         parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_altivec_128_8;
628     }
629     else
630 #endif
631 #if HAVE_NEON
632     if (parasail_can_use_neon()) {
633         parasail_sg_qx_striped_8_pointer = parasail_sg_qx_striped_neon_128_8;
634     }
635     else
636 #endif
637     {
638         parasail_sg_qx_striped_8_pointer = parasail_sg_qx;
639     }
640     return parasail_sg_qx_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
641 }
642 
643 parasail_result_t* parasail_sg_qx_diag_64_dispatcher(
644         const char * const restrict s1, const int s1Len,
645         const char * const restrict s2, const int s2Len,
646         const int open, const int gap,
647         const parasail_matrix_t *matrix)
648 {
649 #if HAVE_AVX2
650     if (parasail_can_use_avx2()) {
651         parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_avx2_256_64;
652     }
653     else
654 #endif
655 #if HAVE_SSE41
656     if (parasail_can_use_sse41()) {
657         parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_sse41_128_64;
658     }
659     else
660 #endif
661 #if HAVE_SSE2
662     if (parasail_can_use_sse2()) {
663         parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_sse2_128_64;
664     }
665     else
666 #endif
667 #if HAVE_ALTIVEC
668     if (parasail_can_use_altivec()) {
669         parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_altivec_128_64;
670     }
671     else
672 #endif
673 #if HAVE_NEON
674     if (parasail_can_use_neon()) {
675         parasail_sg_qx_diag_64_pointer = parasail_sg_qx_diag_neon_128_64;
676     }
677     else
678 #endif
679     {
680         parasail_sg_qx_diag_64_pointer = parasail_sg_qx;
681     }
682     return parasail_sg_qx_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
683 }
684 
685 parasail_result_t* parasail_sg_qx_diag_32_dispatcher(
686         const char * const restrict s1, const int s1Len,
687         const char * const restrict s2, const int s2Len,
688         const int open, const int gap,
689         const parasail_matrix_t *matrix)
690 {
691 #if HAVE_AVX2
692     if (parasail_can_use_avx2()) {
693         parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_avx2_256_32;
694     }
695     else
696 #endif
697 #if HAVE_SSE41
698     if (parasail_can_use_sse41()) {
699         parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_sse41_128_32;
700     }
701     else
702 #endif
703 #if HAVE_SSE2
704     if (parasail_can_use_sse2()) {
705         parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_sse2_128_32;
706     }
707     else
708 #endif
709 #if HAVE_ALTIVEC
710     if (parasail_can_use_altivec()) {
711         parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_altivec_128_32;
712     }
713     else
714 #endif
715 #if HAVE_NEON
716     if (parasail_can_use_neon()) {
717         parasail_sg_qx_diag_32_pointer = parasail_sg_qx_diag_neon_128_32;
718     }
719     else
720 #endif
721     {
722         parasail_sg_qx_diag_32_pointer = parasail_sg_qx;
723     }
724     return parasail_sg_qx_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
725 }
726 
727 parasail_result_t* parasail_sg_qx_diag_16_dispatcher(
728         const char * const restrict s1, const int s1Len,
729         const char * const restrict s2, const int s2Len,
730         const int open, const int gap,
731         const parasail_matrix_t *matrix)
732 {
733 #if HAVE_AVX2
734     if (parasail_can_use_avx2()) {
735         parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_avx2_256_16;
736     }
737     else
738 #endif
739 #if HAVE_SSE41
740     if (parasail_can_use_sse41()) {
741         parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_sse41_128_16;
742     }
743     else
744 #endif
745 #if HAVE_SSE2
746     if (parasail_can_use_sse2()) {
747         parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_sse2_128_16;
748     }
749     else
750 #endif
751 #if HAVE_ALTIVEC
752     if (parasail_can_use_altivec()) {
753         parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_altivec_128_16;
754     }
755     else
756 #endif
757 #if HAVE_NEON
758     if (parasail_can_use_neon()) {
759         parasail_sg_qx_diag_16_pointer = parasail_sg_qx_diag_neon_128_16;
760     }
761     else
762 #endif
763     {
764         parasail_sg_qx_diag_16_pointer = parasail_sg_qx;
765     }
766     return parasail_sg_qx_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
767 }
768 
769 parasail_result_t* parasail_sg_qx_diag_8_dispatcher(
770         const char * const restrict s1, const int s1Len,
771         const char * const restrict s2, const int s2Len,
772         const int open, const int gap,
773         const parasail_matrix_t *matrix)
774 {
775 #if HAVE_AVX2
776     if (parasail_can_use_avx2()) {
777         parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_avx2_256_8;
778     }
779     else
780 #endif
781 #if HAVE_SSE41
782     if (parasail_can_use_sse41()) {
783         parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_sse41_128_8;
784     }
785     else
786 #endif
787 #if HAVE_SSE2
788     if (parasail_can_use_sse2()) {
789         parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_sse2_128_8;
790     }
791     else
792 #endif
793 #if HAVE_ALTIVEC
794     if (parasail_can_use_altivec()) {
795         parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_altivec_128_8;
796     }
797     else
798 #endif
799 #if HAVE_NEON
800     if (parasail_can_use_neon()) {
801         parasail_sg_qx_diag_8_pointer = parasail_sg_qx_diag_neon_128_8;
802     }
803     else
804 #endif
805     {
806         parasail_sg_qx_diag_8_pointer = parasail_sg_qx;
807     }
808     return parasail_sg_qx_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
809 }
810 
811 parasail_result_t* parasail_sg_qx_stats_scan_64_dispatcher(
812         const char * const restrict s1, const int s1Len,
813         const char * const restrict s2, const int s2Len,
814         const int open, const int gap,
815         const parasail_matrix_t *matrix)
816 {
817 #if HAVE_AVX2
818     if (parasail_can_use_avx2()) {
819         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_avx2_256_64;
820     }
821     else
822 #endif
823 #if HAVE_SSE41
824     if (parasail_can_use_sse41()) {
825         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_sse41_128_64;
826     }
827     else
828 #endif
829 #if HAVE_SSE2
830     if (parasail_can_use_sse2()) {
831         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_sse2_128_64;
832     }
833     else
834 #endif
835 #if HAVE_ALTIVEC
836     if (parasail_can_use_altivec()) {
837         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_altivec_128_64;
838     }
839     else
840 #endif
841 #if HAVE_NEON
842     if (parasail_can_use_neon()) {
843         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_stats_scan_neon_128_64;
844     }
845     else
846 #endif
847     {
848         parasail_sg_qx_stats_scan_64_pointer = parasail_sg_qx_scan;
849     }
850     return parasail_sg_qx_stats_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
851 }
852 
853 parasail_result_t* parasail_sg_qx_stats_scan_32_dispatcher(
854         const char * const restrict s1, const int s1Len,
855         const char * const restrict s2, const int s2Len,
856         const int open, const int gap,
857         const parasail_matrix_t *matrix)
858 {
859 #if HAVE_AVX2
860     if (parasail_can_use_avx2()) {
861         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_avx2_256_32;
862     }
863     else
864 #endif
865 #if HAVE_SSE41
866     if (parasail_can_use_sse41()) {
867         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_sse41_128_32;
868     }
869     else
870 #endif
871 #if HAVE_SSE2
872     if (parasail_can_use_sse2()) {
873         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_sse2_128_32;
874     }
875     else
876 #endif
877 #if HAVE_ALTIVEC
878     if (parasail_can_use_altivec()) {
879         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_altivec_128_32;
880     }
881     else
882 #endif
883 #if HAVE_NEON
884     if (parasail_can_use_neon()) {
885         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_stats_scan_neon_128_32;
886     }
887     else
888 #endif
889     {
890         parasail_sg_qx_stats_scan_32_pointer = parasail_sg_qx_scan;
891     }
892     return parasail_sg_qx_stats_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
893 }
894 
895 parasail_result_t* parasail_sg_qx_stats_scan_16_dispatcher(
896         const char * const restrict s1, const int s1Len,
897         const char * const restrict s2, const int s2Len,
898         const int open, const int gap,
899         const parasail_matrix_t *matrix)
900 {
901 #if HAVE_AVX2
902     if (parasail_can_use_avx2()) {
903         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_avx2_256_16;
904     }
905     else
906 #endif
907 #if HAVE_SSE41
908     if (parasail_can_use_sse41()) {
909         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_sse41_128_16;
910     }
911     else
912 #endif
913 #if HAVE_SSE2
914     if (parasail_can_use_sse2()) {
915         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_sse2_128_16;
916     }
917     else
918 #endif
919 #if HAVE_ALTIVEC
920     if (parasail_can_use_altivec()) {
921         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_altivec_128_16;
922     }
923     else
924 #endif
925 #if HAVE_NEON
926     if (parasail_can_use_neon()) {
927         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_stats_scan_neon_128_16;
928     }
929     else
930 #endif
931     {
932         parasail_sg_qx_stats_scan_16_pointer = parasail_sg_qx_scan;
933     }
934     return parasail_sg_qx_stats_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
935 }
936 
937 parasail_result_t* parasail_sg_qx_stats_scan_8_dispatcher(
938         const char * const restrict s1, const int s1Len,
939         const char * const restrict s2, const int s2Len,
940         const int open, const int gap,
941         const parasail_matrix_t *matrix)
942 {
943 #if HAVE_AVX2
944     if (parasail_can_use_avx2()) {
945         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_avx2_256_8;
946     }
947     else
948 #endif
949 #if HAVE_SSE41
950     if (parasail_can_use_sse41()) {
951         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_sse41_128_8;
952     }
953     else
954 #endif
955 #if HAVE_SSE2
956     if (parasail_can_use_sse2()) {
957         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_sse2_128_8;
958     }
959     else
960 #endif
961 #if HAVE_ALTIVEC
962     if (parasail_can_use_altivec()) {
963         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_altivec_128_8;
964     }
965     else
966 #endif
967 #if HAVE_NEON
968     if (parasail_can_use_neon()) {
969         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_stats_scan_neon_128_8;
970     }
971     else
972 #endif
973     {
974         parasail_sg_qx_stats_scan_8_pointer = parasail_sg_qx_scan;
975     }
976     return parasail_sg_qx_stats_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
977 }
978 
979 parasail_result_t* parasail_sg_qx_stats_striped_64_dispatcher(
980         const char * const restrict s1, const int s1Len,
981         const char * const restrict s2, const int s2Len,
982         const int open, const int gap,
983         const parasail_matrix_t *matrix)
984 {
985 #if HAVE_AVX2
986     if (parasail_can_use_avx2()) {
987         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_avx2_256_64;
988     }
989     else
990 #endif
991 #if HAVE_SSE41
992     if (parasail_can_use_sse41()) {
993         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_sse41_128_64;
994     }
995     else
996 #endif
997 #if HAVE_SSE2
998     if (parasail_can_use_sse2()) {
999         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_sse2_128_64;
1000     }
1001     else
1002 #endif
1003 #if HAVE_ALTIVEC
1004     if (parasail_can_use_altivec()) {
1005         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_altivec_128_64;
1006     }
1007     else
1008 #endif
1009 #if HAVE_NEON
1010     if (parasail_can_use_neon()) {
1011         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx_stats_striped_neon_128_64;
1012     }
1013     else
1014 #endif
1015     {
1016         parasail_sg_qx_stats_striped_64_pointer = parasail_sg_qx;
1017     }
1018     return parasail_sg_qx_stats_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1019 }
1020 
1021 parasail_result_t* parasail_sg_qx_stats_striped_32_dispatcher(
1022         const char * const restrict s1, const int s1Len,
1023         const char * const restrict s2, const int s2Len,
1024         const int open, const int gap,
1025         const parasail_matrix_t *matrix)
1026 {
1027 #if HAVE_AVX2
1028     if (parasail_can_use_avx2()) {
1029         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_avx2_256_32;
1030     }
1031     else
1032 #endif
1033 #if HAVE_SSE41
1034     if (parasail_can_use_sse41()) {
1035         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_sse41_128_32;
1036     }
1037     else
1038 #endif
1039 #if HAVE_SSE2
1040     if (parasail_can_use_sse2()) {
1041         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_sse2_128_32;
1042     }
1043     else
1044 #endif
1045 #if HAVE_ALTIVEC
1046     if (parasail_can_use_altivec()) {
1047         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_altivec_128_32;
1048     }
1049     else
1050 #endif
1051 #if HAVE_NEON
1052     if (parasail_can_use_neon()) {
1053         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx_stats_striped_neon_128_32;
1054     }
1055     else
1056 #endif
1057     {
1058         parasail_sg_qx_stats_striped_32_pointer = parasail_sg_qx;
1059     }
1060     return parasail_sg_qx_stats_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1061 }
1062 
1063 parasail_result_t* parasail_sg_qx_stats_striped_16_dispatcher(
1064         const char * const restrict s1, const int s1Len,
1065         const char * const restrict s2, const int s2Len,
1066         const int open, const int gap,
1067         const parasail_matrix_t *matrix)
1068 {
1069 #if HAVE_AVX2
1070     if (parasail_can_use_avx2()) {
1071         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_avx2_256_16;
1072     }
1073     else
1074 #endif
1075 #if HAVE_SSE41
1076     if (parasail_can_use_sse41()) {
1077         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_sse41_128_16;
1078     }
1079     else
1080 #endif
1081 #if HAVE_SSE2
1082     if (parasail_can_use_sse2()) {
1083         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_sse2_128_16;
1084     }
1085     else
1086 #endif
1087 #if HAVE_ALTIVEC
1088     if (parasail_can_use_altivec()) {
1089         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_altivec_128_16;
1090     }
1091     else
1092 #endif
1093 #if HAVE_NEON
1094     if (parasail_can_use_neon()) {
1095         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx_stats_striped_neon_128_16;
1096     }
1097     else
1098 #endif
1099     {
1100         parasail_sg_qx_stats_striped_16_pointer = parasail_sg_qx;
1101     }
1102     return parasail_sg_qx_stats_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1103 }
1104 
1105 parasail_result_t* parasail_sg_qx_stats_striped_8_dispatcher(
1106         const char * const restrict s1, const int s1Len,
1107         const char * const restrict s2, const int s2Len,
1108         const int open, const int gap,
1109         const parasail_matrix_t *matrix)
1110 {
1111 #if HAVE_AVX2
1112     if (parasail_can_use_avx2()) {
1113         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_avx2_256_8;
1114     }
1115     else
1116 #endif
1117 #if HAVE_SSE41
1118     if (parasail_can_use_sse41()) {
1119         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_sse41_128_8;
1120     }
1121     else
1122 #endif
1123 #if HAVE_SSE2
1124     if (parasail_can_use_sse2()) {
1125         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_sse2_128_8;
1126     }
1127     else
1128 #endif
1129 #if HAVE_ALTIVEC
1130     if (parasail_can_use_altivec()) {
1131         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_altivec_128_8;
1132     }
1133     else
1134 #endif
1135 #if HAVE_NEON
1136     if (parasail_can_use_neon()) {
1137         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx_stats_striped_neon_128_8;
1138     }
1139     else
1140 #endif
1141     {
1142         parasail_sg_qx_stats_striped_8_pointer = parasail_sg_qx;
1143     }
1144     return parasail_sg_qx_stats_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1145 }
1146 
1147 parasail_result_t* parasail_sg_qx_stats_diag_64_dispatcher(
1148         const char * const restrict s1, const int s1Len,
1149         const char * const restrict s2, const int s2Len,
1150         const int open, const int gap,
1151         const parasail_matrix_t *matrix)
1152 {
1153 #if HAVE_AVX2
1154     if (parasail_can_use_avx2()) {
1155         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_avx2_256_64;
1156     }
1157     else
1158 #endif
1159 #if HAVE_SSE41
1160     if (parasail_can_use_sse41()) {
1161         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_sse41_128_64;
1162     }
1163     else
1164 #endif
1165 #if HAVE_SSE2
1166     if (parasail_can_use_sse2()) {
1167         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_sse2_128_64;
1168     }
1169     else
1170 #endif
1171 #if HAVE_ALTIVEC
1172     if (parasail_can_use_altivec()) {
1173         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_altivec_128_64;
1174     }
1175     else
1176 #endif
1177 #if HAVE_NEON
1178     if (parasail_can_use_neon()) {
1179         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx_stats_diag_neon_128_64;
1180     }
1181     else
1182 #endif
1183     {
1184         parasail_sg_qx_stats_diag_64_pointer = parasail_sg_qx;
1185     }
1186     return parasail_sg_qx_stats_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1187 }
1188 
1189 parasail_result_t* parasail_sg_qx_stats_diag_32_dispatcher(
1190         const char * const restrict s1, const int s1Len,
1191         const char * const restrict s2, const int s2Len,
1192         const int open, const int gap,
1193         const parasail_matrix_t *matrix)
1194 {
1195 #if HAVE_AVX2
1196     if (parasail_can_use_avx2()) {
1197         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_avx2_256_32;
1198     }
1199     else
1200 #endif
1201 #if HAVE_SSE41
1202     if (parasail_can_use_sse41()) {
1203         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_sse41_128_32;
1204     }
1205     else
1206 #endif
1207 #if HAVE_SSE2
1208     if (parasail_can_use_sse2()) {
1209         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_sse2_128_32;
1210     }
1211     else
1212 #endif
1213 #if HAVE_ALTIVEC
1214     if (parasail_can_use_altivec()) {
1215         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_altivec_128_32;
1216     }
1217     else
1218 #endif
1219 #if HAVE_NEON
1220     if (parasail_can_use_neon()) {
1221         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx_stats_diag_neon_128_32;
1222     }
1223     else
1224 #endif
1225     {
1226         parasail_sg_qx_stats_diag_32_pointer = parasail_sg_qx;
1227     }
1228     return parasail_sg_qx_stats_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1229 }
1230 
1231 parasail_result_t* parasail_sg_qx_stats_diag_16_dispatcher(
1232         const char * const restrict s1, const int s1Len,
1233         const char * const restrict s2, const int s2Len,
1234         const int open, const int gap,
1235         const parasail_matrix_t *matrix)
1236 {
1237 #if HAVE_AVX2
1238     if (parasail_can_use_avx2()) {
1239         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_avx2_256_16;
1240     }
1241     else
1242 #endif
1243 #if HAVE_SSE41
1244     if (parasail_can_use_sse41()) {
1245         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_sse41_128_16;
1246     }
1247     else
1248 #endif
1249 #if HAVE_SSE2
1250     if (parasail_can_use_sse2()) {
1251         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_sse2_128_16;
1252     }
1253     else
1254 #endif
1255 #if HAVE_ALTIVEC
1256     if (parasail_can_use_altivec()) {
1257         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_altivec_128_16;
1258     }
1259     else
1260 #endif
1261 #if HAVE_NEON
1262     if (parasail_can_use_neon()) {
1263         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx_stats_diag_neon_128_16;
1264     }
1265     else
1266 #endif
1267     {
1268         parasail_sg_qx_stats_diag_16_pointer = parasail_sg_qx;
1269     }
1270     return parasail_sg_qx_stats_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1271 }
1272 
1273 parasail_result_t* parasail_sg_qx_stats_diag_8_dispatcher(
1274         const char * const restrict s1, const int s1Len,
1275         const char * const restrict s2, const int s2Len,
1276         const int open, const int gap,
1277         const parasail_matrix_t *matrix)
1278 {
1279 #if HAVE_AVX2
1280     if (parasail_can_use_avx2()) {
1281         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_avx2_256_8;
1282     }
1283     else
1284 #endif
1285 #if HAVE_SSE41
1286     if (parasail_can_use_sse41()) {
1287         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_sse41_128_8;
1288     }
1289     else
1290 #endif
1291 #if HAVE_SSE2
1292     if (parasail_can_use_sse2()) {
1293         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_sse2_128_8;
1294     }
1295     else
1296 #endif
1297 #if HAVE_ALTIVEC
1298     if (parasail_can_use_altivec()) {
1299         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_altivec_128_8;
1300     }
1301     else
1302 #endif
1303 #if HAVE_NEON
1304     if (parasail_can_use_neon()) {
1305         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx_stats_diag_neon_128_8;
1306     }
1307     else
1308 #endif
1309     {
1310         parasail_sg_qx_stats_diag_8_pointer = parasail_sg_qx;
1311     }
1312     return parasail_sg_qx_stats_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1313 }
1314 
1315 parasail_result_t* parasail_sg_qx_table_scan_64_dispatcher(
1316         const char * const restrict s1, const int s1Len,
1317         const char * const restrict s2, const int s2Len,
1318         const int open, const int gap,
1319         const parasail_matrix_t *matrix)
1320 {
1321 #if HAVE_AVX2
1322     if (parasail_can_use_avx2()) {
1323         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_avx2_256_64;
1324     }
1325     else
1326 #endif
1327 #if HAVE_SSE41
1328     if (parasail_can_use_sse41()) {
1329         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_sse41_128_64;
1330     }
1331     else
1332 #endif
1333 #if HAVE_SSE2
1334     if (parasail_can_use_sse2()) {
1335         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_sse2_128_64;
1336     }
1337     else
1338 #endif
1339 #if HAVE_ALTIVEC
1340     if (parasail_can_use_altivec()) {
1341         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_altivec_128_64;
1342     }
1343     else
1344 #endif
1345 #if HAVE_NEON
1346     if (parasail_can_use_neon()) {
1347         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_table_scan_neon_128_64;
1348     }
1349     else
1350 #endif
1351     {
1352         parasail_sg_qx_table_scan_64_pointer = parasail_sg_qx_scan;
1353     }
1354     return parasail_sg_qx_table_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1355 }
1356 
1357 parasail_result_t* parasail_sg_qx_table_scan_32_dispatcher(
1358         const char * const restrict s1, const int s1Len,
1359         const char * const restrict s2, const int s2Len,
1360         const int open, const int gap,
1361         const parasail_matrix_t *matrix)
1362 {
1363 #if HAVE_AVX2
1364     if (parasail_can_use_avx2()) {
1365         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_avx2_256_32;
1366     }
1367     else
1368 #endif
1369 #if HAVE_SSE41
1370     if (parasail_can_use_sse41()) {
1371         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_sse41_128_32;
1372     }
1373     else
1374 #endif
1375 #if HAVE_SSE2
1376     if (parasail_can_use_sse2()) {
1377         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_sse2_128_32;
1378     }
1379     else
1380 #endif
1381 #if HAVE_ALTIVEC
1382     if (parasail_can_use_altivec()) {
1383         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_altivec_128_32;
1384     }
1385     else
1386 #endif
1387 #if HAVE_NEON
1388     if (parasail_can_use_neon()) {
1389         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_table_scan_neon_128_32;
1390     }
1391     else
1392 #endif
1393     {
1394         parasail_sg_qx_table_scan_32_pointer = parasail_sg_qx_scan;
1395     }
1396     return parasail_sg_qx_table_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1397 }
1398 
1399 parasail_result_t* parasail_sg_qx_table_scan_16_dispatcher(
1400         const char * const restrict s1, const int s1Len,
1401         const char * const restrict s2, const int s2Len,
1402         const int open, const int gap,
1403         const parasail_matrix_t *matrix)
1404 {
1405 #if HAVE_AVX2
1406     if (parasail_can_use_avx2()) {
1407         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_avx2_256_16;
1408     }
1409     else
1410 #endif
1411 #if HAVE_SSE41
1412     if (parasail_can_use_sse41()) {
1413         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_sse41_128_16;
1414     }
1415     else
1416 #endif
1417 #if HAVE_SSE2
1418     if (parasail_can_use_sse2()) {
1419         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_sse2_128_16;
1420     }
1421     else
1422 #endif
1423 #if HAVE_ALTIVEC
1424     if (parasail_can_use_altivec()) {
1425         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_altivec_128_16;
1426     }
1427     else
1428 #endif
1429 #if HAVE_NEON
1430     if (parasail_can_use_neon()) {
1431         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_table_scan_neon_128_16;
1432     }
1433     else
1434 #endif
1435     {
1436         parasail_sg_qx_table_scan_16_pointer = parasail_sg_qx_scan;
1437     }
1438     return parasail_sg_qx_table_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1439 }
1440 
1441 parasail_result_t* parasail_sg_qx_table_scan_8_dispatcher(
1442         const char * const restrict s1, const int s1Len,
1443         const char * const restrict s2, const int s2Len,
1444         const int open, const int gap,
1445         const parasail_matrix_t *matrix)
1446 {
1447 #if HAVE_AVX2
1448     if (parasail_can_use_avx2()) {
1449         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_avx2_256_8;
1450     }
1451     else
1452 #endif
1453 #if HAVE_SSE41
1454     if (parasail_can_use_sse41()) {
1455         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_sse41_128_8;
1456     }
1457     else
1458 #endif
1459 #if HAVE_SSE2
1460     if (parasail_can_use_sse2()) {
1461         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_sse2_128_8;
1462     }
1463     else
1464 #endif
1465 #if HAVE_ALTIVEC
1466     if (parasail_can_use_altivec()) {
1467         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_altivec_128_8;
1468     }
1469     else
1470 #endif
1471 #if HAVE_NEON
1472     if (parasail_can_use_neon()) {
1473         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_table_scan_neon_128_8;
1474     }
1475     else
1476 #endif
1477     {
1478         parasail_sg_qx_table_scan_8_pointer = parasail_sg_qx_scan;
1479     }
1480     return parasail_sg_qx_table_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1481 }
1482 
1483 parasail_result_t* parasail_sg_qx_table_striped_64_dispatcher(
1484         const char * const restrict s1, const int s1Len,
1485         const char * const restrict s2, const int s2Len,
1486         const int open, const int gap,
1487         const parasail_matrix_t *matrix)
1488 {
1489 #if HAVE_AVX2
1490     if (parasail_can_use_avx2()) {
1491         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_avx2_256_64;
1492     }
1493     else
1494 #endif
1495 #if HAVE_SSE41
1496     if (parasail_can_use_sse41()) {
1497         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_sse41_128_64;
1498     }
1499     else
1500 #endif
1501 #if HAVE_SSE2
1502     if (parasail_can_use_sse2()) {
1503         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_sse2_128_64;
1504     }
1505     else
1506 #endif
1507 #if HAVE_ALTIVEC
1508     if (parasail_can_use_altivec()) {
1509         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_altivec_128_64;
1510     }
1511     else
1512 #endif
1513 #if HAVE_NEON
1514     if (parasail_can_use_neon()) {
1515         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx_table_striped_neon_128_64;
1516     }
1517     else
1518 #endif
1519     {
1520         parasail_sg_qx_table_striped_64_pointer = parasail_sg_qx;
1521     }
1522     return parasail_sg_qx_table_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1523 }
1524 
1525 parasail_result_t* parasail_sg_qx_table_striped_32_dispatcher(
1526         const char * const restrict s1, const int s1Len,
1527         const char * const restrict s2, const int s2Len,
1528         const int open, const int gap,
1529         const parasail_matrix_t *matrix)
1530 {
1531 #if HAVE_AVX2
1532     if (parasail_can_use_avx2()) {
1533         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_avx2_256_32;
1534     }
1535     else
1536 #endif
1537 #if HAVE_SSE41
1538     if (parasail_can_use_sse41()) {
1539         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_sse41_128_32;
1540     }
1541     else
1542 #endif
1543 #if HAVE_SSE2
1544     if (parasail_can_use_sse2()) {
1545         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_sse2_128_32;
1546     }
1547     else
1548 #endif
1549 #if HAVE_ALTIVEC
1550     if (parasail_can_use_altivec()) {
1551         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_altivec_128_32;
1552     }
1553     else
1554 #endif
1555 #if HAVE_NEON
1556     if (parasail_can_use_neon()) {
1557         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx_table_striped_neon_128_32;
1558     }
1559     else
1560 #endif
1561     {
1562         parasail_sg_qx_table_striped_32_pointer = parasail_sg_qx;
1563     }
1564     return parasail_sg_qx_table_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1565 }
1566 
1567 parasail_result_t* parasail_sg_qx_table_striped_16_dispatcher(
1568         const char * const restrict s1, const int s1Len,
1569         const char * const restrict s2, const int s2Len,
1570         const int open, const int gap,
1571         const parasail_matrix_t *matrix)
1572 {
1573 #if HAVE_AVX2
1574     if (parasail_can_use_avx2()) {
1575         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_avx2_256_16;
1576     }
1577     else
1578 #endif
1579 #if HAVE_SSE41
1580     if (parasail_can_use_sse41()) {
1581         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_sse41_128_16;
1582     }
1583     else
1584 #endif
1585 #if HAVE_SSE2
1586     if (parasail_can_use_sse2()) {
1587         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_sse2_128_16;
1588     }
1589     else
1590 #endif
1591 #if HAVE_ALTIVEC
1592     if (parasail_can_use_altivec()) {
1593         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_altivec_128_16;
1594     }
1595     else
1596 #endif
1597 #if HAVE_NEON
1598     if (parasail_can_use_neon()) {
1599         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx_table_striped_neon_128_16;
1600     }
1601     else
1602 #endif
1603     {
1604         parasail_sg_qx_table_striped_16_pointer = parasail_sg_qx;
1605     }
1606     return parasail_sg_qx_table_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1607 }
1608 
1609 parasail_result_t* parasail_sg_qx_table_striped_8_dispatcher(
1610         const char * const restrict s1, const int s1Len,
1611         const char * const restrict s2, const int s2Len,
1612         const int open, const int gap,
1613         const parasail_matrix_t *matrix)
1614 {
1615 #if HAVE_AVX2
1616     if (parasail_can_use_avx2()) {
1617         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_avx2_256_8;
1618     }
1619     else
1620 #endif
1621 #if HAVE_SSE41
1622     if (parasail_can_use_sse41()) {
1623         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_sse41_128_8;
1624     }
1625     else
1626 #endif
1627 #if HAVE_SSE2
1628     if (parasail_can_use_sse2()) {
1629         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_sse2_128_8;
1630     }
1631     else
1632 #endif
1633 #if HAVE_ALTIVEC
1634     if (parasail_can_use_altivec()) {
1635         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_altivec_128_8;
1636     }
1637     else
1638 #endif
1639 #if HAVE_NEON
1640     if (parasail_can_use_neon()) {
1641         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx_table_striped_neon_128_8;
1642     }
1643     else
1644 #endif
1645     {
1646         parasail_sg_qx_table_striped_8_pointer = parasail_sg_qx;
1647     }
1648     return parasail_sg_qx_table_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1649 }
1650 
1651 parasail_result_t* parasail_sg_qx_table_diag_64_dispatcher(
1652         const char * const restrict s1, const int s1Len,
1653         const char * const restrict s2, const int s2Len,
1654         const int open, const int gap,
1655         const parasail_matrix_t *matrix)
1656 {
1657 #if HAVE_AVX2
1658     if (parasail_can_use_avx2()) {
1659         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_avx2_256_64;
1660     }
1661     else
1662 #endif
1663 #if HAVE_SSE41
1664     if (parasail_can_use_sse41()) {
1665         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_sse41_128_64;
1666     }
1667     else
1668 #endif
1669 #if HAVE_SSE2
1670     if (parasail_can_use_sse2()) {
1671         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_sse2_128_64;
1672     }
1673     else
1674 #endif
1675 #if HAVE_ALTIVEC
1676     if (parasail_can_use_altivec()) {
1677         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_altivec_128_64;
1678     }
1679     else
1680 #endif
1681 #if HAVE_NEON
1682     if (parasail_can_use_neon()) {
1683         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx_table_diag_neon_128_64;
1684     }
1685     else
1686 #endif
1687     {
1688         parasail_sg_qx_table_diag_64_pointer = parasail_sg_qx;
1689     }
1690     return parasail_sg_qx_table_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1691 }
1692 
1693 parasail_result_t* parasail_sg_qx_table_diag_32_dispatcher(
1694         const char * const restrict s1, const int s1Len,
1695         const char * const restrict s2, const int s2Len,
1696         const int open, const int gap,
1697         const parasail_matrix_t *matrix)
1698 {
1699 #if HAVE_AVX2
1700     if (parasail_can_use_avx2()) {
1701         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_avx2_256_32;
1702     }
1703     else
1704 #endif
1705 #if HAVE_SSE41
1706     if (parasail_can_use_sse41()) {
1707         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_sse41_128_32;
1708     }
1709     else
1710 #endif
1711 #if HAVE_SSE2
1712     if (parasail_can_use_sse2()) {
1713         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_sse2_128_32;
1714     }
1715     else
1716 #endif
1717 #if HAVE_ALTIVEC
1718     if (parasail_can_use_altivec()) {
1719         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_altivec_128_32;
1720     }
1721     else
1722 #endif
1723 #if HAVE_NEON
1724     if (parasail_can_use_neon()) {
1725         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx_table_diag_neon_128_32;
1726     }
1727     else
1728 #endif
1729     {
1730         parasail_sg_qx_table_diag_32_pointer = parasail_sg_qx;
1731     }
1732     return parasail_sg_qx_table_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1733 }
1734 
1735 parasail_result_t* parasail_sg_qx_table_diag_16_dispatcher(
1736         const char * const restrict s1, const int s1Len,
1737         const char * const restrict s2, const int s2Len,
1738         const int open, const int gap,
1739         const parasail_matrix_t *matrix)
1740 {
1741 #if HAVE_AVX2
1742     if (parasail_can_use_avx2()) {
1743         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_avx2_256_16;
1744     }
1745     else
1746 #endif
1747 #if HAVE_SSE41
1748     if (parasail_can_use_sse41()) {
1749         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_sse41_128_16;
1750     }
1751     else
1752 #endif
1753 #if HAVE_SSE2
1754     if (parasail_can_use_sse2()) {
1755         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_sse2_128_16;
1756     }
1757     else
1758 #endif
1759 #if HAVE_ALTIVEC
1760     if (parasail_can_use_altivec()) {
1761         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_altivec_128_16;
1762     }
1763     else
1764 #endif
1765 #if HAVE_NEON
1766     if (parasail_can_use_neon()) {
1767         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx_table_diag_neon_128_16;
1768     }
1769     else
1770 #endif
1771     {
1772         parasail_sg_qx_table_diag_16_pointer = parasail_sg_qx;
1773     }
1774     return parasail_sg_qx_table_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1775 }
1776 
1777 parasail_result_t* parasail_sg_qx_table_diag_8_dispatcher(
1778         const char * const restrict s1, const int s1Len,
1779         const char * const restrict s2, const int s2Len,
1780         const int open, const int gap,
1781         const parasail_matrix_t *matrix)
1782 {
1783 #if HAVE_AVX2
1784     if (parasail_can_use_avx2()) {
1785         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_avx2_256_8;
1786     }
1787     else
1788 #endif
1789 #if HAVE_SSE41
1790     if (parasail_can_use_sse41()) {
1791         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_sse41_128_8;
1792     }
1793     else
1794 #endif
1795 #if HAVE_SSE2
1796     if (parasail_can_use_sse2()) {
1797         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_sse2_128_8;
1798     }
1799     else
1800 #endif
1801 #if HAVE_ALTIVEC
1802     if (parasail_can_use_altivec()) {
1803         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_altivec_128_8;
1804     }
1805     else
1806 #endif
1807 #if HAVE_NEON
1808     if (parasail_can_use_neon()) {
1809         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx_table_diag_neon_128_8;
1810     }
1811     else
1812 #endif
1813     {
1814         parasail_sg_qx_table_diag_8_pointer = parasail_sg_qx;
1815     }
1816     return parasail_sg_qx_table_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1817 }
1818 
1819 parasail_result_t* parasail_sg_qx_stats_table_scan_64_dispatcher(
1820         const char * const restrict s1, const int s1Len,
1821         const char * const restrict s2, const int s2Len,
1822         const int open, const int gap,
1823         const parasail_matrix_t *matrix)
1824 {
1825 #if HAVE_AVX2
1826     if (parasail_can_use_avx2()) {
1827         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_avx2_256_64;
1828     }
1829     else
1830 #endif
1831 #if HAVE_SSE41
1832     if (parasail_can_use_sse41()) {
1833         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_sse41_128_64;
1834     }
1835     else
1836 #endif
1837 #if HAVE_SSE2
1838     if (parasail_can_use_sse2()) {
1839         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_sse2_128_64;
1840     }
1841     else
1842 #endif
1843 #if HAVE_ALTIVEC
1844     if (parasail_can_use_altivec()) {
1845         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_altivec_128_64;
1846     }
1847     else
1848 #endif
1849 #if HAVE_NEON
1850     if (parasail_can_use_neon()) {
1851         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_stats_table_scan_neon_128_64;
1852     }
1853     else
1854 #endif
1855     {
1856         parasail_sg_qx_stats_table_scan_64_pointer = parasail_sg_qx_scan;
1857     }
1858     return parasail_sg_qx_stats_table_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1859 }
1860 
1861 parasail_result_t* parasail_sg_qx_stats_table_scan_32_dispatcher(
1862         const char * const restrict s1, const int s1Len,
1863         const char * const restrict s2, const int s2Len,
1864         const int open, const int gap,
1865         const parasail_matrix_t *matrix)
1866 {
1867 #if HAVE_AVX2
1868     if (parasail_can_use_avx2()) {
1869         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_avx2_256_32;
1870     }
1871     else
1872 #endif
1873 #if HAVE_SSE41
1874     if (parasail_can_use_sse41()) {
1875         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_sse41_128_32;
1876     }
1877     else
1878 #endif
1879 #if HAVE_SSE2
1880     if (parasail_can_use_sse2()) {
1881         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_sse2_128_32;
1882     }
1883     else
1884 #endif
1885 #if HAVE_ALTIVEC
1886     if (parasail_can_use_altivec()) {
1887         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_altivec_128_32;
1888     }
1889     else
1890 #endif
1891 #if HAVE_NEON
1892     if (parasail_can_use_neon()) {
1893         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_stats_table_scan_neon_128_32;
1894     }
1895     else
1896 #endif
1897     {
1898         parasail_sg_qx_stats_table_scan_32_pointer = parasail_sg_qx_scan;
1899     }
1900     return parasail_sg_qx_stats_table_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1901 }
1902 
1903 parasail_result_t* parasail_sg_qx_stats_table_scan_16_dispatcher(
1904         const char * const restrict s1, const int s1Len,
1905         const char * const restrict s2, const int s2Len,
1906         const int open, const int gap,
1907         const parasail_matrix_t *matrix)
1908 {
1909 #if HAVE_AVX2
1910     if (parasail_can_use_avx2()) {
1911         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_avx2_256_16;
1912     }
1913     else
1914 #endif
1915 #if HAVE_SSE41
1916     if (parasail_can_use_sse41()) {
1917         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_sse41_128_16;
1918     }
1919     else
1920 #endif
1921 #if HAVE_SSE2
1922     if (parasail_can_use_sse2()) {
1923         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_sse2_128_16;
1924     }
1925     else
1926 #endif
1927 #if HAVE_ALTIVEC
1928     if (parasail_can_use_altivec()) {
1929         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_altivec_128_16;
1930     }
1931     else
1932 #endif
1933 #if HAVE_NEON
1934     if (parasail_can_use_neon()) {
1935         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_stats_table_scan_neon_128_16;
1936     }
1937     else
1938 #endif
1939     {
1940         parasail_sg_qx_stats_table_scan_16_pointer = parasail_sg_qx_scan;
1941     }
1942     return parasail_sg_qx_stats_table_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1943 }
1944 
1945 parasail_result_t* parasail_sg_qx_stats_table_scan_8_dispatcher(
1946         const char * const restrict s1, const int s1Len,
1947         const char * const restrict s2, const int s2Len,
1948         const int open, const int gap,
1949         const parasail_matrix_t *matrix)
1950 {
1951 #if HAVE_AVX2
1952     if (parasail_can_use_avx2()) {
1953         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_avx2_256_8;
1954     }
1955     else
1956 #endif
1957 #if HAVE_SSE41
1958     if (parasail_can_use_sse41()) {
1959         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_sse41_128_8;
1960     }
1961     else
1962 #endif
1963 #if HAVE_SSE2
1964     if (parasail_can_use_sse2()) {
1965         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_sse2_128_8;
1966     }
1967     else
1968 #endif
1969 #if HAVE_ALTIVEC
1970     if (parasail_can_use_altivec()) {
1971         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_altivec_128_8;
1972     }
1973     else
1974 #endif
1975 #if HAVE_NEON
1976     if (parasail_can_use_neon()) {
1977         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_stats_table_scan_neon_128_8;
1978     }
1979     else
1980 #endif
1981     {
1982         parasail_sg_qx_stats_table_scan_8_pointer = parasail_sg_qx_scan;
1983     }
1984     return parasail_sg_qx_stats_table_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
1985 }
1986 
1987 parasail_result_t* parasail_sg_qx_stats_table_striped_64_dispatcher(
1988         const char * const restrict s1, const int s1Len,
1989         const char * const restrict s2, const int s2Len,
1990         const int open, const int gap,
1991         const parasail_matrix_t *matrix)
1992 {
1993 #if HAVE_AVX2
1994     if (parasail_can_use_avx2()) {
1995         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_avx2_256_64;
1996     }
1997     else
1998 #endif
1999 #if HAVE_SSE41
2000     if (parasail_can_use_sse41()) {
2001         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_sse41_128_64;
2002     }
2003     else
2004 #endif
2005 #if HAVE_SSE2
2006     if (parasail_can_use_sse2()) {
2007         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_sse2_128_64;
2008     }
2009     else
2010 #endif
2011 #if HAVE_ALTIVEC
2012     if (parasail_can_use_altivec()) {
2013         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_altivec_128_64;
2014     }
2015     else
2016 #endif
2017 #if HAVE_NEON
2018     if (parasail_can_use_neon()) {
2019         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx_stats_table_striped_neon_128_64;
2020     }
2021     else
2022 #endif
2023     {
2024         parasail_sg_qx_stats_table_striped_64_pointer = parasail_sg_qx;
2025     }
2026     return parasail_sg_qx_stats_table_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2027 }
2028 
2029 parasail_result_t* parasail_sg_qx_stats_table_striped_32_dispatcher(
2030         const char * const restrict s1, const int s1Len,
2031         const char * const restrict s2, const int s2Len,
2032         const int open, const int gap,
2033         const parasail_matrix_t *matrix)
2034 {
2035 #if HAVE_AVX2
2036     if (parasail_can_use_avx2()) {
2037         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_avx2_256_32;
2038     }
2039     else
2040 #endif
2041 #if HAVE_SSE41
2042     if (parasail_can_use_sse41()) {
2043         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_sse41_128_32;
2044     }
2045     else
2046 #endif
2047 #if HAVE_SSE2
2048     if (parasail_can_use_sse2()) {
2049         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_sse2_128_32;
2050     }
2051     else
2052 #endif
2053 #if HAVE_ALTIVEC
2054     if (parasail_can_use_altivec()) {
2055         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_altivec_128_32;
2056     }
2057     else
2058 #endif
2059 #if HAVE_NEON
2060     if (parasail_can_use_neon()) {
2061         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx_stats_table_striped_neon_128_32;
2062     }
2063     else
2064 #endif
2065     {
2066         parasail_sg_qx_stats_table_striped_32_pointer = parasail_sg_qx;
2067     }
2068     return parasail_sg_qx_stats_table_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2069 }
2070 
2071 parasail_result_t* parasail_sg_qx_stats_table_striped_16_dispatcher(
2072         const char * const restrict s1, const int s1Len,
2073         const char * const restrict s2, const int s2Len,
2074         const int open, const int gap,
2075         const parasail_matrix_t *matrix)
2076 {
2077 #if HAVE_AVX2
2078     if (parasail_can_use_avx2()) {
2079         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_avx2_256_16;
2080     }
2081     else
2082 #endif
2083 #if HAVE_SSE41
2084     if (parasail_can_use_sse41()) {
2085         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_sse41_128_16;
2086     }
2087     else
2088 #endif
2089 #if HAVE_SSE2
2090     if (parasail_can_use_sse2()) {
2091         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_sse2_128_16;
2092     }
2093     else
2094 #endif
2095 #if HAVE_ALTIVEC
2096     if (parasail_can_use_altivec()) {
2097         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_altivec_128_16;
2098     }
2099     else
2100 #endif
2101 #if HAVE_NEON
2102     if (parasail_can_use_neon()) {
2103         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx_stats_table_striped_neon_128_16;
2104     }
2105     else
2106 #endif
2107     {
2108         parasail_sg_qx_stats_table_striped_16_pointer = parasail_sg_qx;
2109     }
2110     return parasail_sg_qx_stats_table_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2111 }
2112 
2113 parasail_result_t* parasail_sg_qx_stats_table_striped_8_dispatcher(
2114         const char * const restrict s1, const int s1Len,
2115         const char * const restrict s2, const int s2Len,
2116         const int open, const int gap,
2117         const parasail_matrix_t *matrix)
2118 {
2119 #if HAVE_AVX2
2120     if (parasail_can_use_avx2()) {
2121         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_avx2_256_8;
2122     }
2123     else
2124 #endif
2125 #if HAVE_SSE41
2126     if (parasail_can_use_sse41()) {
2127         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_sse41_128_8;
2128     }
2129     else
2130 #endif
2131 #if HAVE_SSE2
2132     if (parasail_can_use_sse2()) {
2133         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_sse2_128_8;
2134     }
2135     else
2136 #endif
2137 #if HAVE_ALTIVEC
2138     if (parasail_can_use_altivec()) {
2139         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_altivec_128_8;
2140     }
2141     else
2142 #endif
2143 #if HAVE_NEON
2144     if (parasail_can_use_neon()) {
2145         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx_stats_table_striped_neon_128_8;
2146     }
2147     else
2148 #endif
2149     {
2150         parasail_sg_qx_stats_table_striped_8_pointer = parasail_sg_qx;
2151     }
2152     return parasail_sg_qx_stats_table_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2153 }
2154 
2155 parasail_result_t* parasail_sg_qx_stats_table_diag_64_dispatcher(
2156         const char * const restrict s1, const int s1Len,
2157         const char * const restrict s2, const int s2Len,
2158         const int open, const int gap,
2159         const parasail_matrix_t *matrix)
2160 {
2161 #if HAVE_AVX2
2162     if (parasail_can_use_avx2()) {
2163         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_avx2_256_64;
2164     }
2165     else
2166 #endif
2167 #if HAVE_SSE41
2168     if (parasail_can_use_sse41()) {
2169         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_sse41_128_64;
2170     }
2171     else
2172 #endif
2173 #if HAVE_SSE2
2174     if (parasail_can_use_sse2()) {
2175         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_sse2_128_64;
2176     }
2177     else
2178 #endif
2179 #if HAVE_ALTIVEC
2180     if (parasail_can_use_altivec()) {
2181         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_altivec_128_64;
2182     }
2183     else
2184 #endif
2185 #if HAVE_NEON
2186     if (parasail_can_use_neon()) {
2187         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx_stats_table_diag_neon_128_64;
2188     }
2189     else
2190 #endif
2191     {
2192         parasail_sg_qx_stats_table_diag_64_pointer = parasail_sg_qx;
2193     }
2194     return parasail_sg_qx_stats_table_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2195 }
2196 
2197 parasail_result_t* parasail_sg_qx_stats_table_diag_32_dispatcher(
2198         const char * const restrict s1, const int s1Len,
2199         const char * const restrict s2, const int s2Len,
2200         const int open, const int gap,
2201         const parasail_matrix_t *matrix)
2202 {
2203 #if HAVE_AVX2
2204     if (parasail_can_use_avx2()) {
2205         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_avx2_256_32;
2206     }
2207     else
2208 #endif
2209 #if HAVE_SSE41
2210     if (parasail_can_use_sse41()) {
2211         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_sse41_128_32;
2212     }
2213     else
2214 #endif
2215 #if HAVE_SSE2
2216     if (parasail_can_use_sse2()) {
2217         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_sse2_128_32;
2218     }
2219     else
2220 #endif
2221 #if HAVE_ALTIVEC
2222     if (parasail_can_use_altivec()) {
2223         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_altivec_128_32;
2224     }
2225     else
2226 #endif
2227 #if HAVE_NEON
2228     if (parasail_can_use_neon()) {
2229         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx_stats_table_diag_neon_128_32;
2230     }
2231     else
2232 #endif
2233     {
2234         parasail_sg_qx_stats_table_diag_32_pointer = parasail_sg_qx;
2235     }
2236     return parasail_sg_qx_stats_table_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2237 }
2238 
2239 parasail_result_t* parasail_sg_qx_stats_table_diag_16_dispatcher(
2240         const char * const restrict s1, const int s1Len,
2241         const char * const restrict s2, const int s2Len,
2242         const int open, const int gap,
2243         const parasail_matrix_t *matrix)
2244 {
2245 #if HAVE_AVX2
2246     if (parasail_can_use_avx2()) {
2247         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_avx2_256_16;
2248     }
2249     else
2250 #endif
2251 #if HAVE_SSE41
2252     if (parasail_can_use_sse41()) {
2253         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_sse41_128_16;
2254     }
2255     else
2256 #endif
2257 #if HAVE_SSE2
2258     if (parasail_can_use_sse2()) {
2259         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_sse2_128_16;
2260     }
2261     else
2262 #endif
2263 #if HAVE_ALTIVEC
2264     if (parasail_can_use_altivec()) {
2265         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_altivec_128_16;
2266     }
2267     else
2268 #endif
2269 #if HAVE_NEON
2270     if (parasail_can_use_neon()) {
2271         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx_stats_table_diag_neon_128_16;
2272     }
2273     else
2274 #endif
2275     {
2276         parasail_sg_qx_stats_table_diag_16_pointer = parasail_sg_qx;
2277     }
2278     return parasail_sg_qx_stats_table_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2279 }
2280 
2281 parasail_result_t* parasail_sg_qx_stats_table_diag_8_dispatcher(
2282         const char * const restrict s1, const int s1Len,
2283         const char * const restrict s2, const int s2Len,
2284         const int open, const int gap,
2285         const parasail_matrix_t *matrix)
2286 {
2287 #if HAVE_AVX2
2288     if (parasail_can_use_avx2()) {
2289         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_avx2_256_8;
2290     }
2291     else
2292 #endif
2293 #if HAVE_SSE41
2294     if (parasail_can_use_sse41()) {
2295         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_sse41_128_8;
2296     }
2297     else
2298 #endif
2299 #if HAVE_SSE2
2300     if (parasail_can_use_sse2()) {
2301         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_sse2_128_8;
2302     }
2303     else
2304 #endif
2305 #if HAVE_ALTIVEC
2306     if (parasail_can_use_altivec()) {
2307         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_altivec_128_8;
2308     }
2309     else
2310 #endif
2311 #if HAVE_NEON
2312     if (parasail_can_use_neon()) {
2313         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx_stats_table_diag_neon_128_8;
2314     }
2315     else
2316 #endif
2317     {
2318         parasail_sg_qx_stats_table_diag_8_pointer = parasail_sg_qx;
2319     }
2320     return parasail_sg_qx_stats_table_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2321 }
2322 
2323 parasail_result_t* parasail_sg_qx_rowcol_scan_64_dispatcher(
2324         const char * const restrict s1, const int s1Len,
2325         const char * const restrict s2, const int s2Len,
2326         const int open, const int gap,
2327         const parasail_matrix_t *matrix)
2328 {
2329 #if HAVE_AVX2
2330     if (parasail_can_use_avx2()) {
2331         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_avx2_256_64;
2332     }
2333     else
2334 #endif
2335 #if HAVE_SSE41
2336     if (parasail_can_use_sse41()) {
2337         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_sse41_128_64;
2338     }
2339     else
2340 #endif
2341 #if HAVE_SSE2
2342     if (parasail_can_use_sse2()) {
2343         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_sse2_128_64;
2344     }
2345     else
2346 #endif
2347 #if HAVE_ALTIVEC
2348     if (parasail_can_use_altivec()) {
2349         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_altivec_128_64;
2350     }
2351     else
2352 #endif
2353 #if HAVE_NEON
2354     if (parasail_can_use_neon()) {
2355         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_rowcol_scan_neon_128_64;
2356     }
2357     else
2358 #endif
2359     {
2360         parasail_sg_qx_rowcol_scan_64_pointer = parasail_sg_qx_scan;
2361     }
2362     return parasail_sg_qx_rowcol_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2363 }
2364 
2365 parasail_result_t* parasail_sg_qx_rowcol_scan_32_dispatcher(
2366         const char * const restrict s1, const int s1Len,
2367         const char * const restrict s2, const int s2Len,
2368         const int open, const int gap,
2369         const parasail_matrix_t *matrix)
2370 {
2371 #if HAVE_AVX2
2372     if (parasail_can_use_avx2()) {
2373         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_avx2_256_32;
2374     }
2375     else
2376 #endif
2377 #if HAVE_SSE41
2378     if (parasail_can_use_sse41()) {
2379         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_sse41_128_32;
2380     }
2381     else
2382 #endif
2383 #if HAVE_SSE2
2384     if (parasail_can_use_sse2()) {
2385         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_sse2_128_32;
2386     }
2387     else
2388 #endif
2389 #if HAVE_ALTIVEC
2390     if (parasail_can_use_altivec()) {
2391         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_altivec_128_32;
2392     }
2393     else
2394 #endif
2395 #if HAVE_NEON
2396     if (parasail_can_use_neon()) {
2397         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_rowcol_scan_neon_128_32;
2398     }
2399     else
2400 #endif
2401     {
2402         parasail_sg_qx_rowcol_scan_32_pointer = parasail_sg_qx_scan;
2403     }
2404     return parasail_sg_qx_rowcol_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2405 }
2406 
2407 parasail_result_t* parasail_sg_qx_rowcol_scan_16_dispatcher(
2408         const char * const restrict s1, const int s1Len,
2409         const char * const restrict s2, const int s2Len,
2410         const int open, const int gap,
2411         const parasail_matrix_t *matrix)
2412 {
2413 #if HAVE_AVX2
2414     if (parasail_can_use_avx2()) {
2415         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_avx2_256_16;
2416     }
2417     else
2418 #endif
2419 #if HAVE_SSE41
2420     if (parasail_can_use_sse41()) {
2421         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_sse41_128_16;
2422     }
2423     else
2424 #endif
2425 #if HAVE_SSE2
2426     if (parasail_can_use_sse2()) {
2427         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_sse2_128_16;
2428     }
2429     else
2430 #endif
2431 #if HAVE_ALTIVEC
2432     if (parasail_can_use_altivec()) {
2433         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_altivec_128_16;
2434     }
2435     else
2436 #endif
2437 #if HAVE_NEON
2438     if (parasail_can_use_neon()) {
2439         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_rowcol_scan_neon_128_16;
2440     }
2441     else
2442 #endif
2443     {
2444         parasail_sg_qx_rowcol_scan_16_pointer = parasail_sg_qx_scan;
2445     }
2446     return parasail_sg_qx_rowcol_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2447 }
2448 
2449 parasail_result_t* parasail_sg_qx_rowcol_scan_8_dispatcher(
2450         const char * const restrict s1, const int s1Len,
2451         const char * const restrict s2, const int s2Len,
2452         const int open, const int gap,
2453         const parasail_matrix_t *matrix)
2454 {
2455 #if HAVE_AVX2
2456     if (parasail_can_use_avx2()) {
2457         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_avx2_256_8;
2458     }
2459     else
2460 #endif
2461 #if HAVE_SSE41
2462     if (parasail_can_use_sse41()) {
2463         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_sse41_128_8;
2464     }
2465     else
2466 #endif
2467 #if HAVE_SSE2
2468     if (parasail_can_use_sse2()) {
2469         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_sse2_128_8;
2470     }
2471     else
2472 #endif
2473 #if HAVE_ALTIVEC
2474     if (parasail_can_use_altivec()) {
2475         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_altivec_128_8;
2476     }
2477     else
2478 #endif
2479 #if HAVE_NEON
2480     if (parasail_can_use_neon()) {
2481         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_rowcol_scan_neon_128_8;
2482     }
2483     else
2484 #endif
2485     {
2486         parasail_sg_qx_rowcol_scan_8_pointer = parasail_sg_qx_scan;
2487     }
2488     return parasail_sg_qx_rowcol_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2489 }
2490 
2491 parasail_result_t* parasail_sg_qx_rowcol_striped_64_dispatcher(
2492         const char * const restrict s1, const int s1Len,
2493         const char * const restrict s2, const int s2Len,
2494         const int open, const int gap,
2495         const parasail_matrix_t *matrix)
2496 {
2497 #if HAVE_AVX2
2498     if (parasail_can_use_avx2()) {
2499         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_avx2_256_64;
2500     }
2501     else
2502 #endif
2503 #if HAVE_SSE41
2504     if (parasail_can_use_sse41()) {
2505         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_sse41_128_64;
2506     }
2507     else
2508 #endif
2509 #if HAVE_SSE2
2510     if (parasail_can_use_sse2()) {
2511         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_sse2_128_64;
2512     }
2513     else
2514 #endif
2515 #if HAVE_ALTIVEC
2516     if (parasail_can_use_altivec()) {
2517         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_altivec_128_64;
2518     }
2519     else
2520 #endif
2521 #if HAVE_NEON
2522     if (parasail_can_use_neon()) {
2523         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx_rowcol_striped_neon_128_64;
2524     }
2525     else
2526 #endif
2527     {
2528         parasail_sg_qx_rowcol_striped_64_pointer = parasail_sg_qx;
2529     }
2530     return parasail_sg_qx_rowcol_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2531 }
2532 
2533 parasail_result_t* parasail_sg_qx_rowcol_striped_32_dispatcher(
2534         const char * const restrict s1, const int s1Len,
2535         const char * const restrict s2, const int s2Len,
2536         const int open, const int gap,
2537         const parasail_matrix_t *matrix)
2538 {
2539 #if HAVE_AVX2
2540     if (parasail_can_use_avx2()) {
2541         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_avx2_256_32;
2542     }
2543     else
2544 #endif
2545 #if HAVE_SSE41
2546     if (parasail_can_use_sse41()) {
2547         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_sse41_128_32;
2548     }
2549     else
2550 #endif
2551 #if HAVE_SSE2
2552     if (parasail_can_use_sse2()) {
2553         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_sse2_128_32;
2554     }
2555     else
2556 #endif
2557 #if HAVE_ALTIVEC
2558     if (parasail_can_use_altivec()) {
2559         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_altivec_128_32;
2560     }
2561     else
2562 #endif
2563 #if HAVE_NEON
2564     if (parasail_can_use_neon()) {
2565         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx_rowcol_striped_neon_128_32;
2566     }
2567     else
2568 #endif
2569     {
2570         parasail_sg_qx_rowcol_striped_32_pointer = parasail_sg_qx;
2571     }
2572     return parasail_sg_qx_rowcol_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2573 }
2574 
2575 parasail_result_t* parasail_sg_qx_rowcol_striped_16_dispatcher(
2576         const char * const restrict s1, const int s1Len,
2577         const char * const restrict s2, const int s2Len,
2578         const int open, const int gap,
2579         const parasail_matrix_t *matrix)
2580 {
2581 #if HAVE_AVX2
2582     if (parasail_can_use_avx2()) {
2583         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_avx2_256_16;
2584     }
2585     else
2586 #endif
2587 #if HAVE_SSE41
2588     if (parasail_can_use_sse41()) {
2589         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_sse41_128_16;
2590     }
2591     else
2592 #endif
2593 #if HAVE_SSE2
2594     if (parasail_can_use_sse2()) {
2595         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_sse2_128_16;
2596     }
2597     else
2598 #endif
2599 #if HAVE_ALTIVEC
2600     if (parasail_can_use_altivec()) {
2601         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_altivec_128_16;
2602     }
2603     else
2604 #endif
2605 #if HAVE_NEON
2606     if (parasail_can_use_neon()) {
2607         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx_rowcol_striped_neon_128_16;
2608     }
2609     else
2610 #endif
2611     {
2612         parasail_sg_qx_rowcol_striped_16_pointer = parasail_sg_qx;
2613     }
2614     return parasail_sg_qx_rowcol_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2615 }
2616 
2617 parasail_result_t* parasail_sg_qx_rowcol_striped_8_dispatcher(
2618         const char * const restrict s1, const int s1Len,
2619         const char * const restrict s2, const int s2Len,
2620         const int open, const int gap,
2621         const parasail_matrix_t *matrix)
2622 {
2623 #if HAVE_AVX2
2624     if (parasail_can_use_avx2()) {
2625         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_avx2_256_8;
2626     }
2627     else
2628 #endif
2629 #if HAVE_SSE41
2630     if (parasail_can_use_sse41()) {
2631         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_sse41_128_8;
2632     }
2633     else
2634 #endif
2635 #if HAVE_SSE2
2636     if (parasail_can_use_sse2()) {
2637         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_sse2_128_8;
2638     }
2639     else
2640 #endif
2641 #if HAVE_ALTIVEC
2642     if (parasail_can_use_altivec()) {
2643         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_altivec_128_8;
2644     }
2645     else
2646 #endif
2647 #if HAVE_NEON
2648     if (parasail_can_use_neon()) {
2649         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx_rowcol_striped_neon_128_8;
2650     }
2651     else
2652 #endif
2653     {
2654         parasail_sg_qx_rowcol_striped_8_pointer = parasail_sg_qx;
2655     }
2656     return parasail_sg_qx_rowcol_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2657 }
2658 
2659 parasail_result_t* parasail_sg_qx_rowcol_diag_64_dispatcher(
2660         const char * const restrict s1, const int s1Len,
2661         const char * const restrict s2, const int s2Len,
2662         const int open, const int gap,
2663         const parasail_matrix_t *matrix)
2664 {
2665 #if HAVE_AVX2
2666     if (parasail_can_use_avx2()) {
2667         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_avx2_256_64;
2668     }
2669     else
2670 #endif
2671 #if HAVE_SSE41
2672     if (parasail_can_use_sse41()) {
2673         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_sse41_128_64;
2674     }
2675     else
2676 #endif
2677 #if HAVE_SSE2
2678     if (parasail_can_use_sse2()) {
2679         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_sse2_128_64;
2680     }
2681     else
2682 #endif
2683 #if HAVE_ALTIVEC
2684     if (parasail_can_use_altivec()) {
2685         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_altivec_128_64;
2686     }
2687     else
2688 #endif
2689 #if HAVE_NEON
2690     if (parasail_can_use_neon()) {
2691         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx_rowcol_diag_neon_128_64;
2692     }
2693     else
2694 #endif
2695     {
2696         parasail_sg_qx_rowcol_diag_64_pointer = parasail_sg_qx;
2697     }
2698     return parasail_sg_qx_rowcol_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2699 }
2700 
2701 parasail_result_t* parasail_sg_qx_rowcol_diag_32_dispatcher(
2702         const char * const restrict s1, const int s1Len,
2703         const char * const restrict s2, const int s2Len,
2704         const int open, const int gap,
2705         const parasail_matrix_t *matrix)
2706 {
2707 #if HAVE_AVX2
2708     if (parasail_can_use_avx2()) {
2709         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_avx2_256_32;
2710     }
2711     else
2712 #endif
2713 #if HAVE_SSE41
2714     if (parasail_can_use_sse41()) {
2715         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_sse41_128_32;
2716     }
2717     else
2718 #endif
2719 #if HAVE_SSE2
2720     if (parasail_can_use_sse2()) {
2721         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_sse2_128_32;
2722     }
2723     else
2724 #endif
2725 #if HAVE_ALTIVEC
2726     if (parasail_can_use_altivec()) {
2727         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_altivec_128_32;
2728     }
2729     else
2730 #endif
2731 #if HAVE_NEON
2732     if (parasail_can_use_neon()) {
2733         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx_rowcol_diag_neon_128_32;
2734     }
2735     else
2736 #endif
2737     {
2738         parasail_sg_qx_rowcol_diag_32_pointer = parasail_sg_qx;
2739     }
2740     return parasail_sg_qx_rowcol_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2741 }
2742 
2743 parasail_result_t* parasail_sg_qx_rowcol_diag_16_dispatcher(
2744         const char * const restrict s1, const int s1Len,
2745         const char * const restrict s2, const int s2Len,
2746         const int open, const int gap,
2747         const parasail_matrix_t *matrix)
2748 {
2749 #if HAVE_AVX2
2750     if (parasail_can_use_avx2()) {
2751         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_avx2_256_16;
2752     }
2753     else
2754 #endif
2755 #if HAVE_SSE41
2756     if (parasail_can_use_sse41()) {
2757         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_sse41_128_16;
2758     }
2759     else
2760 #endif
2761 #if HAVE_SSE2
2762     if (parasail_can_use_sse2()) {
2763         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_sse2_128_16;
2764     }
2765     else
2766 #endif
2767 #if HAVE_ALTIVEC
2768     if (parasail_can_use_altivec()) {
2769         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_altivec_128_16;
2770     }
2771     else
2772 #endif
2773 #if HAVE_NEON
2774     if (parasail_can_use_neon()) {
2775         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx_rowcol_diag_neon_128_16;
2776     }
2777     else
2778 #endif
2779     {
2780         parasail_sg_qx_rowcol_diag_16_pointer = parasail_sg_qx;
2781     }
2782     return parasail_sg_qx_rowcol_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2783 }
2784 
2785 parasail_result_t* parasail_sg_qx_rowcol_diag_8_dispatcher(
2786         const char * const restrict s1, const int s1Len,
2787         const char * const restrict s2, const int s2Len,
2788         const int open, const int gap,
2789         const parasail_matrix_t *matrix)
2790 {
2791 #if HAVE_AVX2
2792     if (parasail_can_use_avx2()) {
2793         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_avx2_256_8;
2794     }
2795     else
2796 #endif
2797 #if HAVE_SSE41
2798     if (parasail_can_use_sse41()) {
2799         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_sse41_128_8;
2800     }
2801     else
2802 #endif
2803 #if HAVE_SSE2
2804     if (parasail_can_use_sse2()) {
2805         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_sse2_128_8;
2806     }
2807     else
2808 #endif
2809 #if HAVE_ALTIVEC
2810     if (parasail_can_use_altivec()) {
2811         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_altivec_128_8;
2812     }
2813     else
2814 #endif
2815 #if HAVE_NEON
2816     if (parasail_can_use_neon()) {
2817         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx_rowcol_diag_neon_128_8;
2818     }
2819     else
2820 #endif
2821     {
2822         parasail_sg_qx_rowcol_diag_8_pointer = parasail_sg_qx;
2823     }
2824     return parasail_sg_qx_rowcol_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2825 }
2826 
2827 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_64_dispatcher(
2828         const char * const restrict s1, const int s1Len,
2829         const char * const restrict s2, const int s2Len,
2830         const int open, const int gap,
2831         const parasail_matrix_t *matrix)
2832 {
2833 #if HAVE_AVX2
2834     if (parasail_can_use_avx2()) {
2835         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_avx2_256_64;
2836     }
2837     else
2838 #endif
2839 #if HAVE_SSE41
2840     if (parasail_can_use_sse41()) {
2841         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_sse41_128_64;
2842     }
2843     else
2844 #endif
2845 #if HAVE_SSE2
2846     if (parasail_can_use_sse2()) {
2847         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_sse2_128_64;
2848     }
2849     else
2850 #endif
2851 #if HAVE_ALTIVEC
2852     if (parasail_can_use_altivec()) {
2853         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_altivec_128_64;
2854     }
2855     else
2856 #endif
2857 #if HAVE_NEON
2858     if (parasail_can_use_neon()) {
2859         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_stats_rowcol_scan_neon_128_64;
2860     }
2861     else
2862 #endif
2863     {
2864         parasail_sg_qx_stats_rowcol_scan_64_pointer = parasail_sg_qx_scan;
2865     }
2866     return parasail_sg_qx_stats_rowcol_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2867 }
2868 
2869 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_32_dispatcher(
2870         const char * const restrict s1, const int s1Len,
2871         const char * const restrict s2, const int s2Len,
2872         const int open, const int gap,
2873         const parasail_matrix_t *matrix)
2874 {
2875 #if HAVE_AVX2
2876     if (parasail_can_use_avx2()) {
2877         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_avx2_256_32;
2878     }
2879     else
2880 #endif
2881 #if HAVE_SSE41
2882     if (parasail_can_use_sse41()) {
2883         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_sse41_128_32;
2884     }
2885     else
2886 #endif
2887 #if HAVE_SSE2
2888     if (parasail_can_use_sse2()) {
2889         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_sse2_128_32;
2890     }
2891     else
2892 #endif
2893 #if HAVE_ALTIVEC
2894     if (parasail_can_use_altivec()) {
2895         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_altivec_128_32;
2896     }
2897     else
2898 #endif
2899 #if HAVE_NEON
2900     if (parasail_can_use_neon()) {
2901         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_stats_rowcol_scan_neon_128_32;
2902     }
2903     else
2904 #endif
2905     {
2906         parasail_sg_qx_stats_rowcol_scan_32_pointer = parasail_sg_qx_scan;
2907     }
2908     return parasail_sg_qx_stats_rowcol_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2909 }
2910 
2911 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_16_dispatcher(
2912         const char * const restrict s1, const int s1Len,
2913         const char * const restrict s2, const int s2Len,
2914         const int open, const int gap,
2915         const parasail_matrix_t *matrix)
2916 {
2917 #if HAVE_AVX2
2918     if (parasail_can_use_avx2()) {
2919         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_avx2_256_16;
2920     }
2921     else
2922 #endif
2923 #if HAVE_SSE41
2924     if (parasail_can_use_sse41()) {
2925         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_sse41_128_16;
2926     }
2927     else
2928 #endif
2929 #if HAVE_SSE2
2930     if (parasail_can_use_sse2()) {
2931         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_sse2_128_16;
2932     }
2933     else
2934 #endif
2935 #if HAVE_ALTIVEC
2936     if (parasail_can_use_altivec()) {
2937         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_altivec_128_16;
2938     }
2939     else
2940 #endif
2941 #if HAVE_NEON
2942     if (parasail_can_use_neon()) {
2943         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_stats_rowcol_scan_neon_128_16;
2944     }
2945     else
2946 #endif
2947     {
2948         parasail_sg_qx_stats_rowcol_scan_16_pointer = parasail_sg_qx_scan;
2949     }
2950     return parasail_sg_qx_stats_rowcol_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2951 }
2952 
2953 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_8_dispatcher(
2954         const char * const restrict s1, const int s1Len,
2955         const char * const restrict s2, const int s2Len,
2956         const int open, const int gap,
2957         const parasail_matrix_t *matrix)
2958 {
2959 #if HAVE_AVX2
2960     if (parasail_can_use_avx2()) {
2961         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_avx2_256_8;
2962     }
2963     else
2964 #endif
2965 #if HAVE_SSE41
2966     if (parasail_can_use_sse41()) {
2967         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_sse41_128_8;
2968     }
2969     else
2970 #endif
2971 #if HAVE_SSE2
2972     if (parasail_can_use_sse2()) {
2973         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_sse2_128_8;
2974     }
2975     else
2976 #endif
2977 #if HAVE_ALTIVEC
2978     if (parasail_can_use_altivec()) {
2979         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_altivec_128_8;
2980     }
2981     else
2982 #endif
2983 #if HAVE_NEON
2984     if (parasail_can_use_neon()) {
2985         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_stats_rowcol_scan_neon_128_8;
2986     }
2987     else
2988 #endif
2989     {
2990         parasail_sg_qx_stats_rowcol_scan_8_pointer = parasail_sg_qx_scan;
2991     }
2992     return parasail_sg_qx_stats_rowcol_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
2993 }
2994 
2995 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_64_dispatcher(
2996         const char * const restrict s1, const int s1Len,
2997         const char * const restrict s2, const int s2Len,
2998         const int open, const int gap,
2999         const parasail_matrix_t *matrix)
3000 {
3001 #if HAVE_AVX2
3002     if (parasail_can_use_avx2()) {
3003         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_avx2_256_64;
3004     }
3005     else
3006 #endif
3007 #if HAVE_SSE41
3008     if (parasail_can_use_sse41()) {
3009         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_sse41_128_64;
3010     }
3011     else
3012 #endif
3013 #if HAVE_SSE2
3014     if (parasail_can_use_sse2()) {
3015         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_sse2_128_64;
3016     }
3017     else
3018 #endif
3019 #if HAVE_ALTIVEC
3020     if (parasail_can_use_altivec()) {
3021         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_altivec_128_64;
3022     }
3023     else
3024 #endif
3025 #if HAVE_NEON
3026     if (parasail_can_use_neon()) {
3027         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx_stats_rowcol_striped_neon_128_64;
3028     }
3029     else
3030 #endif
3031     {
3032         parasail_sg_qx_stats_rowcol_striped_64_pointer = parasail_sg_qx;
3033     }
3034     return parasail_sg_qx_stats_rowcol_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3035 }
3036 
3037 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_32_dispatcher(
3038         const char * const restrict s1, const int s1Len,
3039         const char * const restrict s2, const int s2Len,
3040         const int open, const int gap,
3041         const parasail_matrix_t *matrix)
3042 {
3043 #if HAVE_AVX2
3044     if (parasail_can_use_avx2()) {
3045         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_avx2_256_32;
3046     }
3047     else
3048 #endif
3049 #if HAVE_SSE41
3050     if (parasail_can_use_sse41()) {
3051         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_sse41_128_32;
3052     }
3053     else
3054 #endif
3055 #if HAVE_SSE2
3056     if (parasail_can_use_sse2()) {
3057         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_sse2_128_32;
3058     }
3059     else
3060 #endif
3061 #if HAVE_ALTIVEC
3062     if (parasail_can_use_altivec()) {
3063         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_altivec_128_32;
3064     }
3065     else
3066 #endif
3067 #if HAVE_NEON
3068     if (parasail_can_use_neon()) {
3069         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx_stats_rowcol_striped_neon_128_32;
3070     }
3071     else
3072 #endif
3073     {
3074         parasail_sg_qx_stats_rowcol_striped_32_pointer = parasail_sg_qx;
3075     }
3076     return parasail_sg_qx_stats_rowcol_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3077 }
3078 
3079 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_16_dispatcher(
3080         const char * const restrict s1, const int s1Len,
3081         const char * const restrict s2, const int s2Len,
3082         const int open, const int gap,
3083         const parasail_matrix_t *matrix)
3084 {
3085 #if HAVE_AVX2
3086     if (parasail_can_use_avx2()) {
3087         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_avx2_256_16;
3088     }
3089     else
3090 #endif
3091 #if HAVE_SSE41
3092     if (parasail_can_use_sse41()) {
3093         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_sse41_128_16;
3094     }
3095     else
3096 #endif
3097 #if HAVE_SSE2
3098     if (parasail_can_use_sse2()) {
3099         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_sse2_128_16;
3100     }
3101     else
3102 #endif
3103 #if HAVE_ALTIVEC
3104     if (parasail_can_use_altivec()) {
3105         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_altivec_128_16;
3106     }
3107     else
3108 #endif
3109 #if HAVE_NEON
3110     if (parasail_can_use_neon()) {
3111         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx_stats_rowcol_striped_neon_128_16;
3112     }
3113     else
3114 #endif
3115     {
3116         parasail_sg_qx_stats_rowcol_striped_16_pointer = parasail_sg_qx;
3117     }
3118     return parasail_sg_qx_stats_rowcol_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3119 }
3120 
3121 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_8_dispatcher(
3122         const char * const restrict s1, const int s1Len,
3123         const char * const restrict s2, const int s2Len,
3124         const int open, const int gap,
3125         const parasail_matrix_t *matrix)
3126 {
3127 #if HAVE_AVX2
3128     if (parasail_can_use_avx2()) {
3129         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_avx2_256_8;
3130     }
3131     else
3132 #endif
3133 #if HAVE_SSE41
3134     if (parasail_can_use_sse41()) {
3135         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_sse41_128_8;
3136     }
3137     else
3138 #endif
3139 #if HAVE_SSE2
3140     if (parasail_can_use_sse2()) {
3141         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_sse2_128_8;
3142     }
3143     else
3144 #endif
3145 #if HAVE_ALTIVEC
3146     if (parasail_can_use_altivec()) {
3147         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_altivec_128_8;
3148     }
3149     else
3150 #endif
3151 #if HAVE_NEON
3152     if (parasail_can_use_neon()) {
3153         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx_stats_rowcol_striped_neon_128_8;
3154     }
3155     else
3156 #endif
3157     {
3158         parasail_sg_qx_stats_rowcol_striped_8_pointer = parasail_sg_qx;
3159     }
3160     return parasail_sg_qx_stats_rowcol_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3161 }
3162 
3163 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_64_dispatcher(
3164         const char * const restrict s1, const int s1Len,
3165         const char * const restrict s2, const int s2Len,
3166         const int open, const int gap,
3167         const parasail_matrix_t *matrix)
3168 {
3169 #if HAVE_AVX2
3170     if (parasail_can_use_avx2()) {
3171         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_avx2_256_64;
3172     }
3173     else
3174 #endif
3175 #if HAVE_SSE41
3176     if (parasail_can_use_sse41()) {
3177         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_sse41_128_64;
3178     }
3179     else
3180 #endif
3181 #if HAVE_SSE2
3182     if (parasail_can_use_sse2()) {
3183         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_sse2_128_64;
3184     }
3185     else
3186 #endif
3187 #if HAVE_ALTIVEC
3188     if (parasail_can_use_altivec()) {
3189         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_altivec_128_64;
3190     }
3191     else
3192 #endif
3193 #if HAVE_NEON
3194     if (parasail_can_use_neon()) {
3195         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx_stats_rowcol_diag_neon_128_64;
3196     }
3197     else
3198 #endif
3199     {
3200         parasail_sg_qx_stats_rowcol_diag_64_pointer = parasail_sg_qx;
3201     }
3202     return parasail_sg_qx_stats_rowcol_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3203 }
3204 
3205 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_32_dispatcher(
3206         const char * const restrict s1, const int s1Len,
3207         const char * const restrict s2, const int s2Len,
3208         const int open, const int gap,
3209         const parasail_matrix_t *matrix)
3210 {
3211 #if HAVE_AVX2
3212     if (parasail_can_use_avx2()) {
3213         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_avx2_256_32;
3214     }
3215     else
3216 #endif
3217 #if HAVE_SSE41
3218     if (parasail_can_use_sse41()) {
3219         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_sse41_128_32;
3220     }
3221     else
3222 #endif
3223 #if HAVE_SSE2
3224     if (parasail_can_use_sse2()) {
3225         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_sse2_128_32;
3226     }
3227     else
3228 #endif
3229 #if HAVE_ALTIVEC
3230     if (parasail_can_use_altivec()) {
3231         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_altivec_128_32;
3232     }
3233     else
3234 #endif
3235 #if HAVE_NEON
3236     if (parasail_can_use_neon()) {
3237         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx_stats_rowcol_diag_neon_128_32;
3238     }
3239     else
3240 #endif
3241     {
3242         parasail_sg_qx_stats_rowcol_diag_32_pointer = parasail_sg_qx;
3243     }
3244     return parasail_sg_qx_stats_rowcol_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3245 }
3246 
3247 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_16_dispatcher(
3248         const char * const restrict s1, const int s1Len,
3249         const char * const restrict s2, const int s2Len,
3250         const int open, const int gap,
3251         const parasail_matrix_t *matrix)
3252 {
3253 #if HAVE_AVX2
3254     if (parasail_can_use_avx2()) {
3255         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_avx2_256_16;
3256     }
3257     else
3258 #endif
3259 #if HAVE_SSE41
3260     if (parasail_can_use_sse41()) {
3261         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_sse41_128_16;
3262     }
3263     else
3264 #endif
3265 #if HAVE_SSE2
3266     if (parasail_can_use_sse2()) {
3267         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_sse2_128_16;
3268     }
3269     else
3270 #endif
3271 #if HAVE_ALTIVEC
3272     if (parasail_can_use_altivec()) {
3273         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_altivec_128_16;
3274     }
3275     else
3276 #endif
3277 #if HAVE_NEON
3278     if (parasail_can_use_neon()) {
3279         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx_stats_rowcol_diag_neon_128_16;
3280     }
3281     else
3282 #endif
3283     {
3284         parasail_sg_qx_stats_rowcol_diag_16_pointer = parasail_sg_qx;
3285     }
3286     return parasail_sg_qx_stats_rowcol_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3287 }
3288 
3289 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_8_dispatcher(
3290         const char * const restrict s1, const int s1Len,
3291         const char * const restrict s2, const int s2Len,
3292         const int open, const int gap,
3293         const parasail_matrix_t *matrix)
3294 {
3295 #if HAVE_AVX2
3296     if (parasail_can_use_avx2()) {
3297         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_avx2_256_8;
3298     }
3299     else
3300 #endif
3301 #if HAVE_SSE41
3302     if (parasail_can_use_sse41()) {
3303         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_sse41_128_8;
3304     }
3305     else
3306 #endif
3307 #if HAVE_SSE2
3308     if (parasail_can_use_sse2()) {
3309         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_sse2_128_8;
3310     }
3311     else
3312 #endif
3313 #if HAVE_ALTIVEC
3314     if (parasail_can_use_altivec()) {
3315         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_altivec_128_8;
3316     }
3317     else
3318 #endif
3319 #if HAVE_NEON
3320     if (parasail_can_use_neon()) {
3321         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx_stats_rowcol_diag_neon_128_8;
3322     }
3323     else
3324 #endif
3325     {
3326         parasail_sg_qx_stats_rowcol_diag_8_pointer = parasail_sg_qx;
3327     }
3328     return parasail_sg_qx_stats_rowcol_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3329 }
3330 
3331 parasail_result_t* parasail_sg_qx_trace_scan_64_dispatcher(
3332         const char * const restrict s1, const int s1Len,
3333         const char * const restrict s2, const int s2Len,
3334         const int open, const int gap,
3335         const parasail_matrix_t *matrix)
3336 {
3337 #if HAVE_AVX2
3338     if (parasail_can_use_avx2()) {
3339         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_avx2_256_64;
3340     }
3341     else
3342 #endif
3343 #if HAVE_SSE41
3344     if (parasail_can_use_sse41()) {
3345         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_sse41_128_64;
3346     }
3347     else
3348 #endif
3349 #if HAVE_SSE2
3350     if (parasail_can_use_sse2()) {
3351         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_sse2_128_64;
3352     }
3353     else
3354 #endif
3355 #if HAVE_ALTIVEC
3356     if (parasail_can_use_altivec()) {
3357         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_altivec_128_64;
3358     }
3359     else
3360 #endif
3361 #if HAVE_NEON
3362     if (parasail_can_use_neon()) {
3363         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_trace_scan_neon_128_64;
3364     }
3365     else
3366 #endif
3367     {
3368         parasail_sg_qx_trace_scan_64_pointer = parasail_sg_qx_scan;
3369     }
3370     return parasail_sg_qx_trace_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3371 }
3372 
3373 parasail_result_t* parasail_sg_qx_trace_scan_32_dispatcher(
3374         const char * const restrict s1, const int s1Len,
3375         const char * const restrict s2, const int s2Len,
3376         const int open, const int gap,
3377         const parasail_matrix_t *matrix)
3378 {
3379 #if HAVE_AVX2
3380     if (parasail_can_use_avx2()) {
3381         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_avx2_256_32;
3382     }
3383     else
3384 #endif
3385 #if HAVE_SSE41
3386     if (parasail_can_use_sse41()) {
3387         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_sse41_128_32;
3388     }
3389     else
3390 #endif
3391 #if HAVE_SSE2
3392     if (parasail_can_use_sse2()) {
3393         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_sse2_128_32;
3394     }
3395     else
3396 #endif
3397 #if HAVE_ALTIVEC
3398     if (parasail_can_use_altivec()) {
3399         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_altivec_128_32;
3400     }
3401     else
3402 #endif
3403 #if HAVE_NEON
3404     if (parasail_can_use_neon()) {
3405         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_trace_scan_neon_128_32;
3406     }
3407     else
3408 #endif
3409     {
3410         parasail_sg_qx_trace_scan_32_pointer = parasail_sg_qx_scan;
3411     }
3412     return parasail_sg_qx_trace_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3413 }
3414 
3415 parasail_result_t* parasail_sg_qx_trace_scan_16_dispatcher(
3416         const char * const restrict s1, const int s1Len,
3417         const char * const restrict s2, const int s2Len,
3418         const int open, const int gap,
3419         const parasail_matrix_t *matrix)
3420 {
3421 #if HAVE_AVX2
3422     if (parasail_can_use_avx2()) {
3423         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_avx2_256_16;
3424     }
3425     else
3426 #endif
3427 #if HAVE_SSE41
3428     if (parasail_can_use_sse41()) {
3429         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_sse41_128_16;
3430     }
3431     else
3432 #endif
3433 #if HAVE_SSE2
3434     if (parasail_can_use_sse2()) {
3435         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_sse2_128_16;
3436     }
3437     else
3438 #endif
3439 #if HAVE_ALTIVEC
3440     if (parasail_can_use_altivec()) {
3441         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_altivec_128_16;
3442     }
3443     else
3444 #endif
3445 #if HAVE_NEON
3446     if (parasail_can_use_neon()) {
3447         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_trace_scan_neon_128_16;
3448     }
3449     else
3450 #endif
3451     {
3452         parasail_sg_qx_trace_scan_16_pointer = parasail_sg_qx_scan;
3453     }
3454     return parasail_sg_qx_trace_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3455 }
3456 
3457 parasail_result_t* parasail_sg_qx_trace_scan_8_dispatcher(
3458         const char * const restrict s1, const int s1Len,
3459         const char * const restrict s2, const int s2Len,
3460         const int open, const int gap,
3461         const parasail_matrix_t *matrix)
3462 {
3463 #if HAVE_AVX2
3464     if (parasail_can_use_avx2()) {
3465         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_avx2_256_8;
3466     }
3467     else
3468 #endif
3469 #if HAVE_SSE41
3470     if (parasail_can_use_sse41()) {
3471         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_sse41_128_8;
3472     }
3473     else
3474 #endif
3475 #if HAVE_SSE2
3476     if (parasail_can_use_sse2()) {
3477         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_sse2_128_8;
3478     }
3479     else
3480 #endif
3481 #if HAVE_ALTIVEC
3482     if (parasail_can_use_altivec()) {
3483         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_altivec_128_8;
3484     }
3485     else
3486 #endif
3487 #if HAVE_NEON
3488     if (parasail_can_use_neon()) {
3489         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_trace_scan_neon_128_8;
3490     }
3491     else
3492 #endif
3493     {
3494         parasail_sg_qx_trace_scan_8_pointer = parasail_sg_qx_scan;
3495     }
3496     return parasail_sg_qx_trace_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3497 }
3498 
3499 parasail_result_t* parasail_sg_qx_trace_striped_64_dispatcher(
3500         const char * const restrict s1, const int s1Len,
3501         const char * const restrict s2, const int s2Len,
3502         const int open, const int gap,
3503         const parasail_matrix_t *matrix)
3504 {
3505 #if HAVE_AVX2
3506     if (parasail_can_use_avx2()) {
3507         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_avx2_256_64;
3508     }
3509     else
3510 #endif
3511 #if HAVE_SSE41
3512     if (parasail_can_use_sse41()) {
3513         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_sse41_128_64;
3514     }
3515     else
3516 #endif
3517 #if HAVE_SSE2
3518     if (parasail_can_use_sse2()) {
3519         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_sse2_128_64;
3520     }
3521     else
3522 #endif
3523 #if HAVE_ALTIVEC
3524     if (parasail_can_use_altivec()) {
3525         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_altivec_128_64;
3526     }
3527     else
3528 #endif
3529 #if HAVE_NEON
3530     if (parasail_can_use_neon()) {
3531         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx_trace_striped_neon_128_64;
3532     }
3533     else
3534 #endif
3535     {
3536         parasail_sg_qx_trace_striped_64_pointer = parasail_sg_qx;
3537     }
3538     return parasail_sg_qx_trace_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3539 }
3540 #endif
3541 
parasail_sg_qx_trace_striped_32_dispatcher(const char * const restrict s1,const int s1Len,const char * const restrict s2,const int s2Len,const int open,const int gap,const parasail_matrix_t * matrix)3542 parasail_result_t* parasail_sg_qx_trace_striped_32_dispatcher(
3543         const char * const restrict s1, const int s1Len,
3544         const char * const restrict s2, const int s2Len,
3545         const int open, const int gap,
3546         const parasail_matrix_t *matrix)
3547 {
3548 #if HAVE_AVX2
3549     if (parasail_can_use_avx2()) {
3550         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_avx2_256_32;
3551     }
3552     else
3553 #endif
3554 #if HAVE_SSE41
3555     if (parasail_can_use_sse41()) {
3556         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_sse41_128_32;
3557     }
3558     else
3559 #endif
3560 #if HAVE_SSE2
3561     if (parasail_can_use_sse2()) {
3562         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_sse2_128_32;
3563     }
3564     else
3565 #endif
3566 #if HAVE_ALTIVEC
3567     if (parasail_can_use_altivec()) {
3568         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_altivec_128_32;
3569     }
3570     else
3571 #endif
3572 #if HAVE_NEON
3573     if (parasail_can_use_neon()) {
3574         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx_trace_striped_neon_128_32;
3575     }
3576     else
3577 #endif
3578     {
3579         parasail_sg_qx_trace_striped_32_pointer = parasail_sg_qx;
3580     }
3581     return parasail_sg_qx_trace_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3582 }
3583 
parasail_sg_qx_trace_striped_16_dispatcher(const char * const restrict s1,const int s1Len,const char * const restrict s2,const int s2Len,const int open,const int gap,const parasail_matrix_t * matrix)3584 parasail_result_t* parasail_sg_qx_trace_striped_16_dispatcher(
3585         const char * const restrict s1, const int s1Len,
3586         const char * const restrict s2, const int s2Len,
3587         const int open, const int gap,
3588         const parasail_matrix_t *matrix)
3589 {
3590 #if HAVE_AVX2
3591     if (parasail_can_use_avx2()) {
3592         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_avx2_256_16;
3593     }
3594     else
3595 #endif
3596 #if HAVE_SSE41
3597     if (parasail_can_use_sse41()) {
3598         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_sse41_128_16;
3599     }
3600     else
3601 #endif
3602 #if HAVE_SSE2
3603     if (parasail_can_use_sse2()) {
3604         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_sse2_128_16;
3605     }
3606     else
3607 #endif
3608 #if HAVE_ALTIVEC
3609     if (parasail_can_use_altivec()) {
3610         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_altivec_128_16;
3611     }
3612     else
3613 #endif
3614 #if HAVE_NEON
3615     if (parasail_can_use_neon()) {
3616         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx_trace_striped_neon_128_16;
3617     }
3618     else
3619 #endif
3620     {
3621         parasail_sg_qx_trace_striped_16_pointer = parasail_sg_qx;
3622     }
3623     return parasail_sg_qx_trace_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3624 }
3625 
3626 #if 0
3627 parasail_result_t* parasail_sg_qx_trace_striped_8_dispatcher(
3628         const char * const restrict s1, const int s1Len,
3629         const char * const restrict s2, const int s2Len,
3630         const int open, const int gap,
3631         const parasail_matrix_t *matrix)
3632 {
3633 #if HAVE_AVX2
3634     if (parasail_can_use_avx2()) {
3635         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_avx2_256_8;
3636     }
3637     else
3638 #endif
3639 #if HAVE_SSE41
3640     if (parasail_can_use_sse41()) {
3641         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_sse41_128_8;
3642     }
3643     else
3644 #endif
3645 #if HAVE_SSE2
3646     if (parasail_can_use_sse2()) {
3647         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_sse2_128_8;
3648     }
3649     else
3650 #endif
3651 #if HAVE_ALTIVEC
3652     if (parasail_can_use_altivec()) {
3653         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_altivec_128_8;
3654     }
3655     else
3656 #endif
3657 #if HAVE_NEON
3658     if (parasail_can_use_neon()) {
3659         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx_trace_striped_neon_128_8;
3660     }
3661     else
3662 #endif
3663     {
3664         parasail_sg_qx_trace_striped_8_pointer = parasail_sg_qx;
3665     }
3666     return parasail_sg_qx_trace_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3667 }
3668 
3669 parasail_result_t* parasail_sg_qx_trace_diag_64_dispatcher(
3670         const char * const restrict s1, const int s1Len,
3671         const char * const restrict s2, const int s2Len,
3672         const int open, const int gap,
3673         const parasail_matrix_t *matrix)
3674 {
3675 #if HAVE_AVX2
3676     if (parasail_can_use_avx2()) {
3677         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_avx2_256_64;
3678     }
3679     else
3680 #endif
3681 #if HAVE_SSE41
3682     if (parasail_can_use_sse41()) {
3683         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_sse41_128_64;
3684     }
3685     else
3686 #endif
3687 #if HAVE_SSE2
3688     if (parasail_can_use_sse2()) {
3689         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_sse2_128_64;
3690     }
3691     else
3692 #endif
3693 #if HAVE_ALTIVEC
3694     if (parasail_can_use_altivec()) {
3695         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_altivec_128_64;
3696     }
3697     else
3698 #endif
3699 #if HAVE_NEON
3700     if (parasail_can_use_neon()) {
3701         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx_trace_diag_neon_128_64;
3702     }
3703     else
3704 #endif
3705     {
3706         parasail_sg_qx_trace_diag_64_pointer = parasail_sg_qx;
3707     }
3708     return parasail_sg_qx_trace_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3709 }
3710 
3711 parasail_result_t* parasail_sg_qx_trace_diag_32_dispatcher(
3712         const char * const restrict s1, const int s1Len,
3713         const char * const restrict s2, const int s2Len,
3714         const int open, const int gap,
3715         const parasail_matrix_t *matrix)
3716 {
3717 #if HAVE_AVX2
3718     if (parasail_can_use_avx2()) {
3719         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_avx2_256_32;
3720     }
3721     else
3722 #endif
3723 #if HAVE_SSE41
3724     if (parasail_can_use_sse41()) {
3725         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_sse41_128_32;
3726     }
3727     else
3728 #endif
3729 #if HAVE_SSE2
3730     if (parasail_can_use_sse2()) {
3731         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_sse2_128_32;
3732     }
3733     else
3734 #endif
3735 #if HAVE_ALTIVEC
3736     if (parasail_can_use_altivec()) {
3737         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_altivec_128_32;
3738     }
3739     else
3740 #endif
3741 #if HAVE_NEON
3742     if (parasail_can_use_neon()) {
3743         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx_trace_diag_neon_128_32;
3744     }
3745     else
3746 #endif
3747     {
3748         parasail_sg_qx_trace_diag_32_pointer = parasail_sg_qx;
3749     }
3750     return parasail_sg_qx_trace_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3751 }
3752 
3753 parasail_result_t* parasail_sg_qx_trace_diag_16_dispatcher(
3754         const char * const restrict s1, const int s1Len,
3755         const char * const restrict s2, const int s2Len,
3756         const int open, const int gap,
3757         const parasail_matrix_t *matrix)
3758 {
3759 #if HAVE_AVX2
3760     if (parasail_can_use_avx2()) {
3761         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_avx2_256_16;
3762     }
3763     else
3764 #endif
3765 #if HAVE_SSE41
3766     if (parasail_can_use_sse41()) {
3767         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_sse41_128_16;
3768     }
3769     else
3770 #endif
3771 #if HAVE_SSE2
3772     if (parasail_can_use_sse2()) {
3773         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_sse2_128_16;
3774     }
3775     else
3776 #endif
3777 #if HAVE_ALTIVEC
3778     if (parasail_can_use_altivec()) {
3779         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_altivec_128_16;
3780     }
3781     else
3782 #endif
3783 #if HAVE_NEON
3784     if (parasail_can_use_neon()) {
3785         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx_trace_diag_neon_128_16;
3786     }
3787     else
3788 #endif
3789     {
3790         parasail_sg_qx_trace_diag_16_pointer = parasail_sg_qx;
3791     }
3792     return parasail_sg_qx_trace_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3793 }
3794 
3795 parasail_result_t* parasail_sg_qx_trace_diag_8_dispatcher(
3796         const char * const restrict s1, const int s1Len,
3797         const char * const restrict s2, const int s2Len,
3798         const int open, const int gap,
3799         const parasail_matrix_t *matrix)
3800 {
3801 #if HAVE_AVX2
3802     if (parasail_can_use_avx2()) {
3803         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_avx2_256_8;
3804     }
3805     else
3806 #endif
3807 #if HAVE_SSE41
3808     if (parasail_can_use_sse41()) {
3809         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_sse41_128_8;
3810     }
3811     else
3812 #endif
3813 #if HAVE_SSE2
3814     if (parasail_can_use_sse2()) {
3815         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_sse2_128_8;
3816     }
3817     else
3818 #endif
3819 #if HAVE_ALTIVEC
3820     if (parasail_can_use_altivec()) {
3821         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_altivec_128_8;
3822     }
3823     else
3824 #endif
3825 #if HAVE_NEON
3826     if (parasail_can_use_neon()) {
3827         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx_trace_diag_neon_128_8;
3828     }
3829     else
3830 #endif
3831     {
3832         parasail_sg_qx_trace_diag_8_pointer = parasail_sg_qx;
3833     }
3834     return parasail_sg_qx_trace_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
3835 }
3836 
3837 parasail_result_t* parasail_sg_qx_scan_profile_64_dispatcher(
3838         const parasail_profile_t * const restrict profile,
3839         const char * const restrict s2, const int s2Len,
3840         const int open, const int gap)
3841 {
3842 #if HAVE_AVX2
3843     if (parasail_can_use_avx2()) {
3844         parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_avx2_256_64;
3845     }
3846     else
3847 #endif
3848 #if HAVE_SSE41
3849     if (parasail_can_use_sse41()) {
3850         parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_sse41_128_64;
3851     }
3852     else
3853 #endif
3854 #if HAVE_SSE2
3855     if (parasail_can_use_sse2()) {
3856         parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_sse2_128_64;
3857     }
3858     else
3859 #endif
3860 #if HAVE_ALTIVEC
3861     if (parasail_can_use_altivec()) {
3862         parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_altivec_128_64;
3863     }
3864     else
3865 #endif
3866 #if HAVE_NEON
3867     if (parasail_can_use_neon()) {
3868         parasail_sg_qx_scan_profile_64_pointer = parasail_sg_qx_scan_profile_neon_128_64;
3869     }
3870     else
3871 #endif
3872     {
3873         parasail_sg_qx_scan_profile_64_pointer = NULL;
3874     }
3875     return parasail_sg_qx_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
3876 }
3877 
3878 parasail_result_t* parasail_sg_qx_scan_profile_32_dispatcher(
3879         const parasail_profile_t * const restrict profile,
3880         const char * const restrict s2, const int s2Len,
3881         const int open, const int gap)
3882 {
3883 #if HAVE_AVX2
3884     if (parasail_can_use_avx2()) {
3885         parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_avx2_256_32;
3886     }
3887     else
3888 #endif
3889 #if HAVE_SSE41
3890     if (parasail_can_use_sse41()) {
3891         parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_sse41_128_32;
3892     }
3893     else
3894 #endif
3895 #if HAVE_SSE2
3896     if (parasail_can_use_sse2()) {
3897         parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_sse2_128_32;
3898     }
3899     else
3900 #endif
3901 #if HAVE_ALTIVEC
3902     if (parasail_can_use_altivec()) {
3903         parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_altivec_128_32;
3904     }
3905     else
3906 #endif
3907 #if HAVE_NEON
3908     if (parasail_can_use_neon()) {
3909         parasail_sg_qx_scan_profile_32_pointer = parasail_sg_qx_scan_profile_neon_128_32;
3910     }
3911     else
3912 #endif
3913     {
3914         parasail_sg_qx_scan_profile_32_pointer = NULL;
3915     }
3916     return parasail_sg_qx_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
3917 }
3918 
3919 parasail_result_t* parasail_sg_qx_scan_profile_16_dispatcher(
3920         const parasail_profile_t * const restrict profile,
3921         const char * const restrict s2, const int s2Len,
3922         const int open, const int gap)
3923 {
3924 #if HAVE_AVX2
3925     if (parasail_can_use_avx2()) {
3926         parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_avx2_256_16;
3927     }
3928     else
3929 #endif
3930 #if HAVE_SSE41
3931     if (parasail_can_use_sse41()) {
3932         parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_sse41_128_16;
3933     }
3934     else
3935 #endif
3936 #if HAVE_SSE2
3937     if (parasail_can_use_sse2()) {
3938         parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_sse2_128_16;
3939     }
3940     else
3941 #endif
3942 #if HAVE_ALTIVEC
3943     if (parasail_can_use_altivec()) {
3944         parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_altivec_128_16;
3945     }
3946     else
3947 #endif
3948 #if HAVE_NEON
3949     if (parasail_can_use_neon()) {
3950         parasail_sg_qx_scan_profile_16_pointer = parasail_sg_qx_scan_profile_neon_128_16;
3951     }
3952     else
3953 #endif
3954     {
3955         parasail_sg_qx_scan_profile_16_pointer = NULL;
3956     }
3957     return parasail_sg_qx_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
3958 }
3959 
3960 parasail_result_t* parasail_sg_qx_scan_profile_8_dispatcher(
3961         const parasail_profile_t * const restrict profile,
3962         const char * const restrict s2, const int s2Len,
3963         const int open, const int gap)
3964 {
3965 #if HAVE_AVX2
3966     if (parasail_can_use_avx2()) {
3967         parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_avx2_256_8;
3968     }
3969     else
3970 #endif
3971 #if HAVE_SSE41
3972     if (parasail_can_use_sse41()) {
3973         parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_sse41_128_8;
3974     }
3975     else
3976 #endif
3977 #if HAVE_SSE2
3978     if (parasail_can_use_sse2()) {
3979         parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_sse2_128_8;
3980     }
3981     else
3982 #endif
3983 #if HAVE_ALTIVEC
3984     if (parasail_can_use_altivec()) {
3985         parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_altivec_128_8;
3986     }
3987     else
3988 #endif
3989 #if HAVE_NEON
3990     if (parasail_can_use_neon()) {
3991         parasail_sg_qx_scan_profile_8_pointer = parasail_sg_qx_scan_profile_neon_128_8;
3992     }
3993     else
3994 #endif
3995     {
3996         parasail_sg_qx_scan_profile_8_pointer = NULL;
3997     }
3998     return parasail_sg_qx_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
3999 }
4000 
4001 parasail_result_t* parasail_sg_qx_striped_profile_64_dispatcher(
4002         const parasail_profile_t * const restrict profile,
4003         const char * const restrict s2, const int s2Len,
4004         const int open, const int gap)
4005 {
4006 #if HAVE_AVX2
4007     if (parasail_can_use_avx2()) {
4008         parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_avx2_256_64;
4009     }
4010     else
4011 #endif
4012 #if HAVE_SSE41
4013     if (parasail_can_use_sse41()) {
4014         parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_sse41_128_64;
4015     }
4016     else
4017 #endif
4018 #if HAVE_SSE2
4019     if (parasail_can_use_sse2()) {
4020         parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_sse2_128_64;
4021     }
4022     else
4023 #endif
4024 #if HAVE_ALTIVEC
4025     if (parasail_can_use_altivec()) {
4026         parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_altivec_128_64;
4027     }
4028     else
4029 #endif
4030 #if HAVE_NEON
4031     if (parasail_can_use_neon()) {
4032         parasail_sg_qx_striped_profile_64_pointer = parasail_sg_qx_striped_profile_neon_128_64;
4033     }
4034     else
4035 #endif
4036     {
4037         parasail_sg_qx_striped_profile_64_pointer = NULL;
4038     }
4039     return parasail_sg_qx_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
4040 }
4041 
4042 parasail_result_t* parasail_sg_qx_striped_profile_32_dispatcher(
4043         const parasail_profile_t * const restrict profile,
4044         const char * const restrict s2, const int s2Len,
4045         const int open, const int gap)
4046 {
4047 #if HAVE_AVX2
4048     if (parasail_can_use_avx2()) {
4049         parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_avx2_256_32;
4050     }
4051     else
4052 #endif
4053 #if HAVE_SSE41
4054     if (parasail_can_use_sse41()) {
4055         parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_sse41_128_32;
4056     }
4057     else
4058 #endif
4059 #if HAVE_SSE2
4060     if (parasail_can_use_sse2()) {
4061         parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_sse2_128_32;
4062     }
4063     else
4064 #endif
4065 #if HAVE_ALTIVEC
4066     if (parasail_can_use_altivec()) {
4067         parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_altivec_128_32;
4068     }
4069     else
4070 #endif
4071 #if HAVE_NEON
4072     if (parasail_can_use_neon()) {
4073         parasail_sg_qx_striped_profile_32_pointer = parasail_sg_qx_striped_profile_neon_128_32;
4074     }
4075     else
4076 #endif
4077     {
4078         parasail_sg_qx_striped_profile_32_pointer = NULL;
4079     }
4080     return parasail_sg_qx_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
4081 }
4082 
4083 parasail_result_t* parasail_sg_qx_striped_profile_16_dispatcher(
4084         const parasail_profile_t * const restrict profile,
4085         const char * const restrict s2, const int s2Len,
4086         const int open, const int gap)
4087 {
4088 #if HAVE_AVX2
4089     if (parasail_can_use_avx2()) {
4090         parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_avx2_256_16;
4091     }
4092     else
4093 #endif
4094 #if HAVE_SSE41
4095     if (parasail_can_use_sse41()) {
4096         parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_sse41_128_16;
4097     }
4098     else
4099 #endif
4100 #if HAVE_SSE2
4101     if (parasail_can_use_sse2()) {
4102         parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_sse2_128_16;
4103     }
4104     else
4105 #endif
4106 #if HAVE_ALTIVEC
4107     if (parasail_can_use_altivec()) {
4108         parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_altivec_128_16;
4109     }
4110     else
4111 #endif
4112 #if HAVE_NEON
4113     if (parasail_can_use_neon()) {
4114         parasail_sg_qx_striped_profile_16_pointer = parasail_sg_qx_striped_profile_neon_128_16;
4115     }
4116     else
4117 #endif
4118     {
4119         parasail_sg_qx_striped_profile_16_pointer = NULL;
4120     }
4121     return parasail_sg_qx_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
4122 }
4123 
4124 parasail_result_t* parasail_sg_qx_striped_profile_8_dispatcher(
4125         const parasail_profile_t * const restrict profile,
4126         const char * const restrict s2, const int s2Len,
4127         const int open, const int gap)
4128 {
4129 #if HAVE_AVX2
4130     if (parasail_can_use_avx2()) {
4131         parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_avx2_256_8;
4132     }
4133     else
4134 #endif
4135 #if HAVE_SSE41
4136     if (parasail_can_use_sse41()) {
4137         parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_sse41_128_8;
4138     }
4139     else
4140 #endif
4141 #if HAVE_SSE2
4142     if (parasail_can_use_sse2()) {
4143         parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_sse2_128_8;
4144     }
4145     else
4146 #endif
4147 #if HAVE_ALTIVEC
4148     if (parasail_can_use_altivec()) {
4149         parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_altivec_128_8;
4150     }
4151     else
4152 #endif
4153 #if HAVE_NEON
4154     if (parasail_can_use_neon()) {
4155         parasail_sg_qx_striped_profile_8_pointer = parasail_sg_qx_striped_profile_neon_128_8;
4156     }
4157     else
4158 #endif
4159     {
4160         parasail_sg_qx_striped_profile_8_pointer = NULL;
4161     }
4162     return parasail_sg_qx_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
4163 }
4164 
4165 parasail_result_t* parasail_sg_qx_stats_scan_profile_64_dispatcher(
4166         const parasail_profile_t * const restrict profile,
4167         const char * const restrict s2, const int s2Len,
4168         const int open, const int gap)
4169 {
4170 #if HAVE_AVX2
4171     if (parasail_can_use_avx2()) {
4172         parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_avx2_256_64;
4173     }
4174     else
4175 #endif
4176 #if HAVE_SSE41
4177     if (parasail_can_use_sse41()) {
4178         parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_sse41_128_64;
4179     }
4180     else
4181 #endif
4182 #if HAVE_SSE2
4183     if (parasail_can_use_sse2()) {
4184         parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_sse2_128_64;
4185     }
4186     else
4187 #endif
4188 #if HAVE_ALTIVEC
4189     if (parasail_can_use_altivec()) {
4190         parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_altivec_128_64;
4191     }
4192     else
4193 #endif
4194 #if HAVE_NEON
4195     if (parasail_can_use_neon()) {
4196         parasail_sg_qx_stats_scan_profile_64_pointer = parasail_sg_qx_stats_scan_profile_neon_128_64;
4197     }
4198     else
4199 #endif
4200     {
4201         parasail_sg_qx_stats_scan_profile_64_pointer = NULL;
4202     }
4203     return parasail_sg_qx_stats_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
4204 }
4205 
4206 parasail_result_t* parasail_sg_qx_stats_scan_profile_32_dispatcher(
4207         const parasail_profile_t * const restrict profile,
4208         const char * const restrict s2, const int s2Len,
4209         const int open, const int gap)
4210 {
4211 #if HAVE_AVX2
4212     if (parasail_can_use_avx2()) {
4213         parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_avx2_256_32;
4214     }
4215     else
4216 #endif
4217 #if HAVE_SSE41
4218     if (parasail_can_use_sse41()) {
4219         parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_sse41_128_32;
4220     }
4221     else
4222 #endif
4223 #if HAVE_SSE2
4224     if (parasail_can_use_sse2()) {
4225         parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_sse2_128_32;
4226     }
4227     else
4228 #endif
4229 #if HAVE_ALTIVEC
4230     if (parasail_can_use_altivec()) {
4231         parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_altivec_128_32;
4232     }
4233     else
4234 #endif
4235 #if HAVE_NEON
4236     if (parasail_can_use_neon()) {
4237         parasail_sg_qx_stats_scan_profile_32_pointer = parasail_sg_qx_stats_scan_profile_neon_128_32;
4238     }
4239     else
4240 #endif
4241     {
4242         parasail_sg_qx_stats_scan_profile_32_pointer = NULL;
4243     }
4244     return parasail_sg_qx_stats_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
4245 }
4246 
4247 parasail_result_t* parasail_sg_qx_stats_scan_profile_16_dispatcher(
4248         const parasail_profile_t * const restrict profile,
4249         const char * const restrict s2, const int s2Len,
4250         const int open, const int gap)
4251 {
4252 #if HAVE_AVX2
4253     if (parasail_can_use_avx2()) {
4254         parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_avx2_256_16;
4255     }
4256     else
4257 #endif
4258 #if HAVE_SSE41
4259     if (parasail_can_use_sse41()) {
4260         parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_sse41_128_16;
4261     }
4262     else
4263 #endif
4264 #if HAVE_SSE2
4265     if (parasail_can_use_sse2()) {
4266         parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_sse2_128_16;
4267     }
4268     else
4269 #endif
4270 #if HAVE_ALTIVEC
4271     if (parasail_can_use_altivec()) {
4272         parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_altivec_128_16;
4273     }
4274     else
4275 #endif
4276 #if HAVE_NEON
4277     if (parasail_can_use_neon()) {
4278         parasail_sg_qx_stats_scan_profile_16_pointer = parasail_sg_qx_stats_scan_profile_neon_128_16;
4279     }
4280     else
4281 #endif
4282     {
4283         parasail_sg_qx_stats_scan_profile_16_pointer = NULL;
4284     }
4285     return parasail_sg_qx_stats_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
4286 }
4287 
4288 parasail_result_t* parasail_sg_qx_stats_scan_profile_8_dispatcher(
4289         const parasail_profile_t * const restrict profile,
4290         const char * const restrict s2, const int s2Len,
4291         const int open, const int gap)
4292 {
4293 #if HAVE_AVX2
4294     if (parasail_can_use_avx2()) {
4295         parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_avx2_256_8;
4296     }
4297     else
4298 #endif
4299 #if HAVE_SSE41
4300     if (parasail_can_use_sse41()) {
4301         parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_sse41_128_8;
4302     }
4303     else
4304 #endif
4305 #if HAVE_SSE2
4306     if (parasail_can_use_sse2()) {
4307         parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_sse2_128_8;
4308     }
4309     else
4310 #endif
4311 #if HAVE_ALTIVEC
4312     if (parasail_can_use_altivec()) {
4313         parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_altivec_128_8;
4314     }
4315     else
4316 #endif
4317 #if HAVE_NEON
4318     if (parasail_can_use_neon()) {
4319         parasail_sg_qx_stats_scan_profile_8_pointer = parasail_sg_qx_stats_scan_profile_neon_128_8;
4320     }
4321     else
4322 #endif
4323     {
4324         parasail_sg_qx_stats_scan_profile_8_pointer = NULL;
4325     }
4326     return parasail_sg_qx_stats_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
4327 }
4328 
4329 parasail_result_t* parasail_sg_qx_stats_striped_profile_64_dispatcher(
4330         const parasail_profile_t * const restrict profile,
4331         const char * const restrict s2, const int s2Len,
4332         const int open, const int gap)
4333 {
4334 #if HAVE_AVX2
4335     if (parasail_can_use_avx2()) {
4336         parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_avx2_256_64;
4337     }
4338     else
4339 #endif
4340 #if HAVE_SSE41
4341     if (parasail_can_use_sse41()) {
4342         parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_sse41_128_64;
4343     }
4344     else
4345 #endif
4346 #if HAVE_SSE2
4347     if (parasail_can_use_sse2()) {
4348         parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_sse2_128_64;
4349     }
4350     else
4351 #endif
4352 #if HAVE_ALTIVEC
4353     if (parasail_can_use_altivec()) {
4354         parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_altivec_128_64;
4355     }
4356     else
4357 #endif
4358 #if HAVE_NEON
4359     if (parasail_can_use_neon()) {
4360         parasail_sg_qx_stats_striped_profile_64_pointer = parasail_sg_qx_stats_striped_profile_neon_128_64;
4361     }
4362     else
4363 #endif
4364     {
4365         parasail_sg_qx_stats_striped_profile_64_pointer = NULL;
4366     }
4367     return parasail_sg_qx_stats_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
4368 }
4369 
4370 parasail_result_t* parasail_sg_qx_stats_striped_profile_32_dispatcher(
4371         const parasail_profile_t * const restrict profile,
4372         const char * const restrict s2, const int s2Len,
4373         const int open, const int gap)
4374 {
4375 #if HAVE_AVX2
4376     if (parasail_can_use_avx2()) {
4377         parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_avx2_256_32;
4378     }
4379     else
4380 #endif
4381 #if HAVE_SSE41
4382     if (parasail_can_use_sse41()) {
4383         parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_sse41_128_32;
4384     }
4385     else
4386 #endif
4387 #if HAVE_SSE2
4388     if (parasail_can_use_sse2()) {
4389         parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_sse2_128_32;
4390     }
4391     else
4392 #endif
4393 #if HAVE_ALTIVEC
4394     if (parasail_can_use_altivec()) {
4395         parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_altivec_128_32;
4396     }
4397     else
4398 #endif
4399 #if HAVE_NEON
4400     if (parasail_can_use_neon()) {
4401         parasail_sg_qx_stats_striped_profile_32_pointer = parasail_sg_qx_stats_striped_profile_neon_128_32;
4402     }
4403     else
4404 #endif
4405     {
4406         parasail_sg_qx_stats_striped_profile_32_pointer = NULL;
4407     }
4408     return parasail_sg_qx_stats_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
4409 }
4410 
4411 parasail_result_t* parasail_sg_qx_stats_striped_profile_16_dispatcher(
4412         const parasail_profile_t * const restrict profile,
4413         const char * const restrict s2, const int s2Len,
4414         const int open, const int gap)
4415 {
4416 #if HAVE_AVX2
4417     if (parasail_can_use_avx2()) {
4418         parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_avx2_256_16;
4419     }
4420     else
4421 #endif
4422 #if HAVE_SSE41
4423     if (parasail_can_use_sse41()) {
4424         parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_sse41_128_16;
4425     }
4426     else
4427 #endif
4428 #if HAVE_SSE2
4429     if (parasail_can_use_sse2()) {
4430         parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_sse2_128_16;
4431     }
4432     else
4433 #endif
4434 #if HAVE_ALTIVEC
4435     if (parasail_can_use_altivec()) {
4436         parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_altivec_128_16;
4437     }
4438     else
4439 #endif
4440 #if HAVE_NEON
4441     if (parasail_can_use_neon()) {
4442         parasail_sg_qx_stats_striped_profile_16_pointer = parasail_sg_qx_stats_striped_profile_neon_128_16;
4443     }
4444     else
4445 #endif
4446     {
4447         parasail_sg_qx_stats_striped_profile_16_pointer = NULL;
4448     }
4449     return parasail_sg_qx_stats_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
4450 }
4451 
4452 parasail_result_t* parasail_sg_qx_stats_striped_profile_8_dispatcher(
4453         const parasail_profile_t * const restrict profile,
4454         const char * const restrict s2, const int s2Len,
4455         const int open, const int gap)
4456 {
4457 #if HAVE_AVX2
4458     if (parasail_can_use_avx2()) {
4459         parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_avx2_256_8;
4460     }
4461     else
4462 #endif
4463 #if HAVE_SSE41
4464     if (parasail_can_use_sse41()) {
4465         parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_sse41_128_8;
4466     }
4467     else
4468 #endif
4469 #if HAVE_SSE2
4470     if (parasail_can_use_sse2()) {
4471         parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_sse2_128_8;
4472     }
4473     else
4474 #endif
4475 #if HAVE_ALTIVEC
4476     if (parasail_can_use_altivec()) {
4477         parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_altivec_128_8;
4478     }
4479     else
4480 #endif
4481 #if HAVE_NEON
4482     if (parasail_can_use_neon()) {
4483         parasail_sg_qx_stats_striped_profile_8_pointer = parasail_sg_qx_stats_striped_profile_neon_128_8;
4484     }
4485     else
4486 #endif
4487     {
4488         parasail_sg_qx_stats_striped_profile_8_pointer = NULL;
4489     }
4490     return parasail_sg_qx_stats_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
4491 }
4492 
4493 parasail_result_t* parasail_sg_qx_table_scan_profile_64_dispatcher(
4494         const parasail_profile_t * const restrict profile,
4495         const char * const restrict s2, const int s2Len,
4496         const int open, const int gap)
4497 {
4498 #if HAVE_AVX2
4499     if (parasail_can_use_avx2()) {
4500         parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_avx2_256_64;
4501     }
4502     else
4503 #endif
4504 #if HAVE_SSE41
4505     if (parasail_can_use_sse41()) {
4506         parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_sse41_128_64;
4507     }
4508     else
4509 #endif
4510 #if HAVE_SSE2
4511     if (parasail_can_use_sse2()) {
4512         parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_sse2_128_64;
4513     }
4514     else
4515 #endif
4516 #if HAVE_ALTIVEC
4517     if (parasail_can_use_altivec()) {
4518         parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_altivec_128_64;
4519     }
4520     else
4521 #endif
4522 #if HAVE_NEON
4523     if (parasail_can_use_neon()) {
4524         parasail_sg_qx_table_scan_profile_64_pointer = parasail_sg_qx_table_scan_profile_neon_128_64;
4525     }
4526     else
4527 #endif
4528     {
4529         parasail_sg_qx_table_scan_profile_64_pointer = NULL;
4530     }
4531     return parasail_sg_qx_table_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
4532 }
4533 
4534 parasail_result_t* parasail_sg_qx_table_scan_profile_32_dispatcher(
4535         const parasail_profile_t * const restrict profile,
4536         const char * const restrict s2, const int s2Len,
4537         const int open, const int gap)
4538 {
4539 #if HAVE_AVX2
4540     if (parasail_can_use_avx2()) {
4541         parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_avx2_256_32;
4542     }
4543     else
4544 #endif
4545 #if HAVE_SSE41
4546     if (parasail_can_use_sse41()) {
4547         parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_sse41_128_32;
4548     }
4549     else
4550 #endif
4551 #if HAVE_SSE2
4552     if (parasail_can_use_sse2()) {
4553         parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_sse2_128_32;
4554     }
4555     else
4556 #endif
4557 #if HAVE_ALTIVEC
4558     if (parasail_can_use_altivec()) {
4559         parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_altivec_128_32;
4560     }
4561     else
4562 #endif
4563 #if HAVE_NEON
4564     if (parasail_can_use_neon()) {
4565         parasail_sg_qx_table_scan_profile_32_pointer = parasail_sg_qx_table_scan_profile_neon_128_32;
4566     }
4567     else
4568 #endif
4569     {
4570         parasail_sg_qx_table_scan_profile_32_pointer = NULL;
4571     }
4572     return parasail_sg_qx_table_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
4573 }
4574 
4575 parasail_result_t* parasail_sg_qx_table_scan_profile_16_dispatcher(
4576         const parasail_profile_t * const restrict profile,
4577         const char * const restrict s2, const int s2Len,
4578         const int open, const int gap)
4579 {
4580 #if HAVE_AVX2
4581     if (parasail_can_use_avx2()) {
4582         parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_avx2_256_16;
4583     }
4584     else
4585 #endif
4586 #if HAVE_SSE41
4587     if (parasail_can_use_sse41()) {
4588         parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_sse41_128_16;
4589     }
4590     else
4591 #endif
4592 #if HAVE_SSE2
4593     if (parasail_can_use_sse2()) {
4594         parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_sse2_128_16;
4595     }
4596     else
4597 #endif
4598 #if HAVE_ALTIVEC
4599     if (parasail_can_use_altivec()) {
4600         parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_altivec_128_16;
4601     }
4602     else
4603 #endif
4604 #if HAVE_NEON
4605     if (parasail_can_use_neon()) {
4606         parasail_sg_qx_table_scan_profile_16_pointer = parasail_sg_qx_table_scan_profile_neon_128_16;
4607     }
4608     else
4609 #endif
4610     {
4611         parasail_sg_qx_table_scan_profile_16_pointer = NULL;
4612     }
4613     return parasail_sg_qx_table_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
4614 }
4615 
4616 parasail_result_t* parasail_sg_qx_table_scan_profile_8_dispatcher(
4617         const parasail_profile_t * const restrict profile,
4618         const char * const restrict s2, const int s2Len,
4619         const int open, const int gap)
4620 {
4621 #if HAVE_AVX2
4622     if (parasail_can_use_avx2()) {
4623         parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_avx2_256_8;
4624     }
4625     else
4626 #endif
4627 #if HAVE_SSE41
4628     if (parasail_can_use_sse41()) {
4629         parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_sse41_128_8;
4630     }
4631     else
4632 #endif
4633 #if HAVE_SSE2
4634     if (parasail_can_use_sse2()) {
4635         parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_sse2_128_8;
4636     }
4637     else
4638 #endif
4639 #if HAVE_ALTIVEC
4640     if (parasail_can_use_altivec()) {
4641         parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_altivec_128_8;
4642     }
4643     else
4644 #endif
4645 #if HAVE_NEON
4646     if (parasail_can_use_neon()) {
4647         parasail_sg_qx_table_scan_profile_8_pointer = parasail_sg_qx_table_scan_profile_neon_128_8;
4648     }
4649     else
4650 #endif
4651     {
4652         parasail_sg_qx_table_scan_profile_8_pointer = NULL;
4653     }
4654     return parasail_sg_qx_table_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
4655 }
4656 
4657 parasail_result_t* parasail_sg_qx_table_striped_profile_64_dispatcher(
4658         const parasail_profile_t * const restrict profile,
4659         const char * const restrict s2, const int s2Len,
4660         const int open, const int gap)
4661 {
4662 #if HAVE_AVX2
4663     if (parasail_can_use_avx2()) {
4664         parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_avx2_256_64;
4665     }
4666     else
4667 #endif
4668 #if HAVE_SSE41
4669     if (parasail_can_use_sse41()) {
4670         parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_sse41_128_64;
4671     }
4672     else
4673 #endif
4674 #if HAVE_SSE2
4675     if (parasail_can_use_sse2()) {
4676         parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_sse2_128_64;
4677     }
4678     else
4679 #endif
4680 #if HAVE_ALTIVEC
4681     if (parasail_can_use_altivec()) {
4682         parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_altivec_128_64;
4683     }
4684     else
4685 #endif
4686 #if HAVE_NEON
4687     if (parasail_can_use_neon()) {
4688         parasail_sg_qx_table_striped_profile_64_pointer = parasail_sg_qx_table_striped_profile_neon_128_64;
4689     }
4690     else
4691 #endif
4692     {
4693         parasail_sg_qx_table_striped_profile_64_pointer = NULL;
4694     }
4695     return parasail_sg_qx_table_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
4696 }
4697 
4698 parasail_result_t* parasail_sg_qx_table_striped_profile_32_dispatcher(
4699         const parasail_profile_t * const restrict profile,
4700         const char * const restrict s2, const int s2Len,
4701         const int open, const int gap)
4702 {
4703 #if HAVE_AVX2
4704     if (parasail_can_use_avx2()) {
4705         parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_avx2_256_32;
4706     }
4707     else
4708 #endif
4709 #if HAVE_SSE41
4710     if (parasail_can_use_sse41()) {
4711         parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_sse41_128_32;
4712     }
4713     else
4714 #endif
4715 #if HAVE_SSE2
4716     if (parasail_can_use_sse2()) {
4717         parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_sse2_128_32;
4718     }
4719     else
4720 #endif
4721 #if HAVE_ALTIVEC
4722     if (parasail_can_use_altivec()) {
4723         parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_altivec_128_32;
4724     }
4725     else
4726 #endif
4727 #if HAVE_NEON
4728     if (parasail_can_use_neon()) {
4729         parasail_sg_qx_table_striped_profile_32_pointer = parasail_sg_qx_table_striped_profile_neon_128_32;
4730     }
4731     else
4732 #endif
4733     {
4734         parasail_sg_qx_table_striped_profile_32_pointer = NULL;
4735     }
4736     return parasail_sg_qx_table_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
4737 }
4738 
4739 parasail_result_t* parasail_sg_qx_table_striped_profile_16_dispatcher(
4740         const parasail_profile_t * const restrict profile,
4741         const char * const restrict s2, const int s2Len,
4742         const int open, const int gap)
4743 {
4744 #if HAVE_AVX2
4745     if (parasail_can_use_avx2()) {
4746         parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_avx2_256_16;
4747     }
4748     else
4749 #endif
4750 #if HAVE_SSE41
4751     if (parasail_can_use_sse41()) {
4752         parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_sse41_128_16;
4753     }
4754     else
4755 #endif
4756 #if HAVE_SSE2
4757     if (parasail_can_use_sse2()) {
4758         parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_sse2_128_16;
4759     }
4760     else
4761 #endif
4762 #if HAVE_ALTIVEC
4763     if (parasail_can_use_altivec()) {
4764         parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_altivec_128_16;
4765     }
4766     else
4767 #endif
4768 #if HAVE_NEON
4769     if (parasail_can_use_neon()) {
4770         parasail_sg_qx_table_striped_profile_16_pointer = parasail_sg_qx_table_striped_profile_neon_128_16;
4771     }
4772     else
4773 #endif
4774     {
4775         parasail_sg_qx_table_striped_profile_16_pointer = NULL;
4776     }
4777     return parasail_sg_qx_table_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
4778 }
4779 
4780 parasail_result_t* parasail_sg_qx_table_striped_profile_8_dispatcher(
4781         const parasail_profile_t * const restrict profile,
4782         const char * const restrict s2, const int s2Len,
4783         const int open, const int gap)
4784 {
4785 #if HAVE_AVX2
4786     if (parasail_can_use_avx2()) {
4787         parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_avx2_256_8;
4788     }
4789     else
4790 #endif
4791 #if HAVE_SSE41
4792     if (parasail_can_use_sse41()) {
4793         parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_sse41_128_8;
4794     }
4795     else
4796 #endif
4797 #if HAVE_SSE2
4798     if (parasail_can_use_sse2()) {
4799         parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_sse2_128_8;
4800     }
4801     else
4802 #endif
4803 #if HAVE_ALTIVEC
4804     if (parasail_can_use_altivec()) {
4805         parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_altivec_128_8;
4806     }
4807     else
4808 #endif
4809 #if HAVE_NEON
4810     if (parasail_can_use_neon()) {
4811         parasail_sg_qx_table_striped_profile_8_pointer = parasail_sg_qx_table_striped_profile_neon_128_8;
4812     }
4813     else
4814 #endif
4815     {
4816         parasail_sg_qx_table_striped_profile_8_pointer = NULL;
4817     }
4818     return parasail_sg_qx_table_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
4819 }
4820 
4821 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_64_dispatcher(
4822         const parasail_profile_t * const restrict profile,
4823         const char * const restrict s2, const int s2Len,
4824         const int open, const int gap)
4825 {
4826 #if HAVE_AVX2
4827     if (parasail_can_use_avx2()) {
4828         parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_avx2_256_64;
4829     }
4830     else
4831 #endif
4832 #if HAVE_SSE41
4833     if (parasail_can_use_sse41()) {
4834         parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_sse41_128_64;
4835     }
4836     else
4837 #endif
4838 #if HAVE_SSE2
4839     if (parasail_can_use_sse2()) {
4840         parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_sse2_128_64;
4841     }
4842     else
4843 #endif
4844 #if HAVE_ALTIVEC
4845     if (parasail_can_use_altivec()) {
4846         parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_altivec_128_64;
4847     }
4848     else
4849 #endif
4850 #if HAVE_NEON
4851     if (parasail_can_use_neon()) {
4852         parasail_sg_qx_stats_table_scan_profile_64_pointer = parasail_sg_qx_stats_table_scan_profile_neon_128_64;
4853     }
4854     else
4855 #endif
4856     {
4857         parasail_sg_qx_stats_table_scan_profile_64_pointer = NULL;
4858     }
4859     return parasail_sg_qx_stats_table_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
4860 }
4861 
4862 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_32_dispatcher(
4863         const parasail_profile_t * const restrict profile,
4864         const char * const restrict s2, const int s2Len,
4865         const int open, const int gap)
4866 {
4867 #if HAVE_AVX2
4868     if (parasail_can_use_avx2()) {
4869         parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_avx2_256_32;
4870     }
4871     else
4872 #endif
4873 #if HAVE_SSE41
4874     if (parasail_can_use_sse41()) {
4875         parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_sse41_128_32;
4876     }
4877     else
4878 #endif
4879 #if HAVE_SSE2
4880     if (parasail_can_use_sse2()) {
4881         parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_sse2_128_32;
4882     }
4883     else
4884 #endif
4885 #if HAVE_ALTIVEC
4886     if (parasail_can_use_altivec()) {
4887         parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_altivec_128_32;
4888     }
4889     else
4890 #endif
4891 #if HAVE_NEON
4892     if (parasail_can_use_neon()) {
4893         parasail_sg_qx_stats_table_scan_profile_32_pointer = parasail_sg_qx_stats_table_scan_profile_neon_128_32;
4894     }
4895     else
4896 #endif
4897     {
4898         parasail_sg_qx_stats_table_scan_profile_32_pointer = NULL;
4899     }
4900     return parasail_sg_qx_stats_table_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
4901 }
4902 
4903 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_16_dispatcher(
4904         const parasail_profile_t * const restrict profile,
4905         const char * const restrict s2, const int s2Len,
4906         const int open, const int gap)
4907 {
4908 #if HAVE_AVX2
4909     if (parasail_can_use_avx2()) {
4910         parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_avx2_256_16;
4911     }
4912     else
4913 #endif
4914 #if HAVE_SSE41
4915     if (parasail_can_use_sse41()) {
4916         parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_sse41_128_16;
4917     }
4918     else
4919 #endif
4920 #if HAVE_SSE2
4921     if (parasail_can_use_sse2()) {
4922         parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_sse2_128_16;
4923     }
4924     else
4925 #endif
4926 #if HAVE_ALTIVEC
4927     if (parasail_can_use_altivec()) {
4928         parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_altivec_128_16;
4929     }
4930     else
4931 #endif
4932 #if HAVE_NEON
4933     if (parasail_can_use_neon()) {
4934         parasail_sg_qx_stats_table_scan_profile_16_pointer = parasail_sg_qx_stats_table_scan_profile_neon_128_16;
4935     }
4936     else
4937 #endif
4938     {
4939         parasail_sg_qx_stats_table_scan_profile_16_pointer = NULL;
4940     }
4941     return parasail_sg_qx_stats_table_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
4942 }
4943 
4944 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_8_dispatcher(
4945         const parasail_profile_t * const restrict profile,
4946         const char * const restrict s2, const int s2Len,
4947         const int open, const int gap)
4948 {
4949 #if HAVE_AVX2
4950     if (parasail_can_use_avx2()) {
4951         parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_avx2_256_8;
4952     }
4953     else
4954 #endif
4955 #if HAVE_SSE41
4956     if (parasail_can_use_sse41()) {
4957         parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_sse41_128_8;
4958     }
4959     else
4960 #endif
4961 #if HAVE_SSE2
4962     if (parasail_can_use_sse2()) {
4963         parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_sse2_128_8;
4964     }
4965     else
4966 #endif
4967 #if HAVE_ALTIVEC
4968     if (parasail_can_use_altivec()) {
4969         parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_altivec_128_8;
4970     }
4971     else
4972 #endif
4973 #if HAVE_NEON
4974     if (parasail_can_use_neon()) {
4975         parasail_sg_qx_stats_table_scan_profile_8_pointer = parasail_sg_qx_stats_table_scan_profile_neon_128_8;
4976     }
4977     else
4978 #endif
4979     {
4980         parasail_sg_qx_stats_table_scan_profile_8_pointer = NULL;
4981     }
4982     return parasail_sg_qx_stats_table_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
4983 }
4984 
4985 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_64_dispatcher(
4986         const parasail_profile_t * const restrict profile,
4987         const char * const restrict s2, const int s2Len,
4988         const int open, const int gap)
4989 {
4990 #if HAVE_AVX2
4991     if (parasail_can_use_avx2()) {
4992         parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_avx2_256_64;
4993     }
4994     else
4995 #endif
4996 #if HAVE_SSE41
4997     if (parasail_can_use_sse41()) {
4998         parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_sse41_128_64;
4999     }
5000     else
5001 #endif
5002 #if HAVE_SSE2
5003     if (parasail_can_use_sse2()) {
5004         parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_sse2_128_64;
5005     }
5006     else
5007 #endif
5008 #if HAVE_ALTIVEC
5009     if (parasail_can_use_altivec()) {
5010         parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_altivec_128_64;
5011     }
5012     else
5013 #endif
5014 #if HAVE_NEON
5015     if (parasail_can_use_neon()) {
5016         parasail_sg_qx_stats_table_striped_profile_64_pointer = parasail_sg_qx_stats_table_striped_profile_neon_128_64;
5017     }
5018     else
5019 #endif
5020     {
5021         parasail_sg_qx_stats_table_striped_profile_64_pointer = NULL;
5022     }
5023     return parasail_sg_qx_stats_table_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
5024 }
5025 
5026 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_32_dispatcher(
5027         const parasail_profile_t * const restrict profile,
5028         const char * const restrict s2, const int s2Len,
5029         const int open, const int gap)
5030 {
5031 #if HAVE_AVX2
5032     if (parasail_can_use_avx2()) {
5033         parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_avx2_256_32;
5034     }
5035     else
5036 #endif
5037 #if HAVE_SSE41
5038     if (parasail_can_use_sse41()) {
5039         parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_sse41_128_32;
5040     }
5041     else
5042 #endif
5043 #if HAVE_SSE2
5044     if (parasail_can_use_sse2()) {
5045         parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_sse2_128_32;
5046     }
5047     else
5048 #endif
5049 #if HAVE_ALTIVEC
5050     if (parasail_can_use_altivec()) {
5051         parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_altivec_128_32;
5052     }
5053     else
5054 #endif
5055 #if HAVE_NEON
5056     if (parasail_can_use_neon()) {
5057         parasail_sg_qx_stats_table_striped_profile_32_pointer = parasail_sg_qx_stats_table_striped_profile_neon_128_32;
5058     }
5059     else
5060 #endif
5061     {
5062         parasail_sg_qx_stats_table_striped_profile_32_pointer = NULL;
5063     }
5064     return parasail_sg_qx_stats_table_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
5065 }
5066 
5067 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_16_dispatcher(
5068         const parasail_profile_t * const restrict profile,
5069         const char * const restrict s2, const int s2Len,
5070         const int open, const int gap)
5071 {
5072 #if HAVE_AVX2
5073     if (parasail_can_use_avx2()) {
5074         parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_avx2_256_16;
5075     }
5076     else
5077 #endif
5078 #if HAVE_SSE41
5079     if (parasail_can_use_sse41()) {
5080         parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_sse41_128_16;
5081     }
5082     else
5083 #endif
5084 #if HAVE_SSE2
5085     if (parasail_can_use_sse2()) {
5086         parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_sse2_128_16;
5087     }
5088     else
5089 #endif
5090 #if HAVE_ALTIVEC
5091     if (parasail_can_use_altivec()) {
5092         parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_altivec_128_16;
5093     }
5094     else
5095 #endif
5096 #if HAVE_NEON
5097     if (parasail_can_use_neon()) {
5098         parasail_sg_qx_stats_table_striped_profile_16_pointer = parasail_sg_qx_stats_table_striped_profile_neon_128_16;
5099     }
5100     else
5101 #endif
5102     {
5103         parasail_sg_qx_stats_table_striped_profile_16_pointer = NULL;
5104     }
5105     return parasail_sg_qx_stats_table_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
5106 }
5107 
5108 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_8_dispatcher(
5109         const parasail_profile_t * const restrict profile,
5110         const char * const restrict s2, const int s2Len,
5111         const int open, const int gap)
5112 {
5113 #if HAVE_AVX2
5114     if (parasail_can_use_avx2()) {
5115         parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_avx2_256_8;
5116     }
5117     else
5118 #endif
5119 #if HAVE_SSE41
5120     if (parasail_can_use_sse41()) {
5121         parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_sse41_128_8;
5122     }
5123     else
5124 #endif
5125 #if HAVE_SSE2
5126     if (parasail_can_use_sse2()) {
5127         parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_sse2_128_8;
5128     }
5129     else
5130 #endif
5131 #if HAVE_ALTIVEC
5132     if (parasail_can_use_altivec()) {
5133         parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_altivec_128_8;
5134     }
5135     else
5136 #endif
5137 #if HAVE_NEON
5138     if (parasail_can_use_neon()) {
5139         parasail_sg_qx_stats_table_striped_profile_8_pointer = parasail_sg_qx_stats_table_striped_profile_neon_128_8;
5140     }
5141     else
5142 #endif
5143     {
5144         parasail_sg_qx_stats_table_striped_profile_8_pointer = NULL;
5145     }
5146     return parasail_sg_qx_stats_table_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
5147 }
5148 
5149 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_64_dispatcher(
5150         const parasail_profile_t * const restrict profile,
5151         const char * const restrict s2, const int s2Len,
5152         const int open, const int gap)
5153 {
5154 #if HAVE_AVX2
5155     if (parasail_can_use_avx2()) {
5156         parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_avx2_256_64;
5157     }
5158     else
5159 #endif
5160 #if HAVE_SSE41
5161     if (parasail_can_use_sse41()) {
5162         parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_sse41_128_64;
5163     }
5164     else
5165 #endif
5166 #if HAVE_SSE2
5167     if (parasail_can_use_sse2()) {
5168         parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_sse2_128_64;
5169     }
5170     else
5171 #endif
5172 #if HAVE_ALTIVEC
5173     if (parasail_can_use_altivec()) {
5174         parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_altivec_128_64;
5175     }
5176     else
5177 #endif
5178 #if HAVE_NEON
5179     if (parasail_can_use_neon()) {
5180         parasail_sg_qx_rowcol_scan_profile_64_pointer = parasail_sg_qx_rowcol_scan_profile_neon_128_64;
5181     }
5182     else
5183 #endif
5184     {
5185         parasail_sg_qx_rowcol_scan_profile_64_pointer = NULL;
5186     }
5187     return parasail_sg_qx_rowcol_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
5188 }
5189 
5190 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_32_dispatcher(
5191         const parasail_profile_t * const restrict profile,
5192         const char * const restrict s2, const int s2Len,
5193         const int open, const int gap)
5194 {
5195 #if HAVE_AVX2
5196     if (parasail_can_use_avx2()) {
5197         parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_avx2_256_32;
5198     }
5199     else
5200 #endif
5201 #if HAVE_SSE41
5202     if (parasail_can_use_sse41()) {
5203         parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_sse41_128_32;
5204     }
5205     else
5206 #endif
5207 #if HAVE_SSE2
5208     if (parasail_can_use_sse2()) {
5209         parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_sse2_128_32;
5210     }
5211     else
5212 #endif
5213 #if HAVE_ALTIVEC
5214     if (parasail_can_use_altivec()) {
5215         parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_altivec_128_32;
5216     }
5217     else
5218 #endif
5219 #if HAVE_NEON
5220     if (parasail_can_use_neon()) {
5221         parasail_sg_qx_rowcol_scan_profile_32_pointer = parasail_sg_qx_rowcol_scan_profile_neon_128_32;
5222     }
5223     else
5224 #endif
5225     {
5226         parasail_sg_qx_rowcol_scan_profile_32_pointer = NULL;
5227     }
5228     return parasail_sg_qx_rowcol_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
5229 }
5230 
5231 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_16_dispatcher(
5232         const parasail_profile_t * const restrict profile,
5233         const char * const restrict s2, const int s2Len,
5234         const int open, const int gap)
5235 {
5236 #if HAVE_AVX2
5237     if (parasail_can_use_avx2()) {
5238         parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_avx2_256_16;
5239     }
5240     else
5241 #endif
5242 #if HAVE_SSE41
5243     if (parasail_can_use_sse41()) {
5244         parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_sse41_128_16;
5245     }
5246     else
5247 #endif
5248 #if HAVE_SSE2
5249     if (parasail_can_use_sse2()) {
5250         parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_sse2_128_16;
5251     }
5252     else
5253 #endif
5254 #if HAVE_ALTIVEC
5255     if (parasail_can_use_altivec()) {
5256         parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_altivec_128_16;
5257     }
5258     else
5259 #endif
5260 #if HAVE_NEON
5261     if (parasail_can_use_neon()) {
5262         parasail_sg_qx_rowcol_scan_profile_16_pointer = parasail_sg_qx_rowcol_scan_profile_neon_128_16;
5263     }
5264     else
5265 #endif
5266     {
5267         parasail_sg_qx_rowcol_scan_profile_16_pointer = NULL;
5268     }
5269     return parasail_sg_qx_rowcol_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
5270 }
5271 
5272 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_8_dispatcher(
5273         const parasail_profile_t * const restrict profile,
5274         const char * const restrict s2, const int s2Len,
5275         const int open, const int gap)
5276 {
5277 #if HAVE_AVX2
5278     if (parasail_can_use_avx2()) {
5279         parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_avx2_256_8;
5280     }
5281     else
5282 #endif
5283 #if HAVE_SSE41
5284     if (parasail_can_use_sse41()) {
5285         parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_sse41_128_8;
5286     }
5287     else
5288 #endif
5289 #if HAVE_SSE2
5290     if (parasail_can_use_sse2()) {
5291         parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_sse2_128_8;
5292     }
5293     else
5294 #endif
5295 #if HAVE_ALTIVEC
5296     if (parasail_can_use_altivec()) {
5297         parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_altivec_128_8;
5298     }
5299     else
5300 #endif
5301 #if HAVE_NEON
5302     if (parasail_can_use_neon()) {
5303         parasail_sg_qx_rowcol_scan_profile_8_pointer = parasail_sg_qx_rowcol_scan_profile_neon_128_8;
5304     }
5305     else
5306 #endif
5307     {
5308         parasail_sg_qx_rowcol_scan_profile_8_pointer = NULL;
5309     }
5310     return parasail_sg_qx_rowcol_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
5311 }
5312 
5313 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_64_dispatcher(
5314         const parasail_profile_t * const restrict profile,
5315         const char * const restrict s2, const int s2Len,
5316         const int open, const int gap)
5317 {
5318 #if HAVE_AVX2
5319     if (parasail_can_use_avx2()) {
5320         parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_avx2_256_64;
5321     }
5322     else
5323 #endif
5324 #if HAVE_SSE41
5325     if (parasail_can_use_sse41()) {
5326         parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_sse41_128_64;
5327     }
5328     else
5329 #endif
5330 #if HAVE_SSE2
5331     if (parasail_can_use_sse2()) {
5332         parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_sse2_128_64;
5333     }
5334     else
5335 #endif
5336 #if HAVE_ALTIVEC
5337     if (parasail_can_use_altivec()) {
5338         parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_altivec_128_64;
5339     }
5340     else
5341 #endif
5342 #if HAVE_NEON
5343     if (parasail_can_use_neon()) {
5344         parasail_sg_qx_rowcol_striped_profile_64_pointer = parasail_sg_qx_rowcol_striped_profile_neon_128_64;
5345     }
5346     else
5347 #endif
5348     {
5349         parasail_sg_qx_rowcol_striped_profile_64_pointer = NULL;
5350     }
5351     return parasail_sg_qx_rowcol_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
5352 }
5353 
5354 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_32_dispatcher(
5355         const parasail_profile_t * const restrict profile,
5356         const char * const restrict s2, const int s2Len,
5357         const int open, const int gap)
5358 {
5359 #if HAVE_AVX2
5360     if (parasail_can_use_avx2()) {
5361         parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_avx2_256_32;
5362     }
5363     else
5364 #endif
5365 #if HAVE_SSE41
5366     if (parasail_can_use_sse41()) {
5367         parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_sse41_128_32;
5368     }
5369     else
5370 #endif
5371 #if HAVE_SSE2
5372     if (parasail_can_use_sse2()) {
5373         parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_sse2_128_32;
5374     }
5375     else
5376 #endif
5377 #if HAVE_ALTIVEC
5378     if (parasail_can_use_altivec()) {
5379         parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_altivec_128_32;
5380     }
5381     else
5382 #endif
5383 #if HAVE_NEON
5384     if (parasail_can_use_neon()) {
5385         parasail_sg_qx_rowcol_striped_profile_32_pointer = parasail_sg_qx_rowcol_striped_profile_neon_128_32;
5386     }
5387     else
5388 #endif
5389     {
5390         parasail_sg_qx_rowcol_striped_profile_32_pointer = NULL;
5391     }
5392     return parasail_sg_qx_rowcol_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
5393 }
5394 
5395 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_16_dispatcher(
5396         const parasail_profile_t * const restrict profile,
5397         const char * const restrict s2, const int s2Len,
5398         const int open, const int gap)
5399 {
5400 #if HAVE_AVX2
5401     if (parasail_can_use_avx2()) {
5402         parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_avx2_256_16;
5403     }
5404     else
5405 #endif
5406 #if HAVE_SSE41
5407     if (parasail_can_use_sse41()) {
5408         parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_sse41_128_16;
5409     }
5410     else
5411 #endif
5412 #if HAVE_SSE2
5413     if (parasail_can_use_sse2()) {
5414         parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_sse2_128_16;
5415     }
5416     else
5417 #endif
5418 #if HAVE_ALTIVEC
5419     if (parasail_can_use_altivec()) {
5420         parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_altivec_128_16;
5421     }
5422     else
5423 #endif
5424 #if HAVE_NEON
5425     if (parasail_can_use_neon()) {
5426         parasail_sg_qx_rowcol_striped_profile_16_pointer = parasail_sg_qx_rowcol_striped_profile_neon_128_16;
5427     }
5428     else
5429 #endif
5430     {
5431         parasail_sg_qx_rowcol_striped_profile_16_pointer = NULL;
5432     }
5433     return parasail_sg_qx_rowcol_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
5434 }
5435 
5436 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_8_dispatcher(
5437         const parasail_profile_t * const restrict profile,
5438         const char * const restrict s2, const int s2Len,
5439         const int open, const int gap)
5440 {
5441 #if HAVE_AVX2
5442     if (parasail_can_use_avx2()) {
5443         parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_avx2_256_8;
5444     }
5445     else
5446 #endif
5447 #if HAVE_SSE41
5448     if (parasail_can_use_sse41()) {
5449         parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_sse41_128_8;
5450     }
5451     else
5452 #endif
5453 #if HAVE_SSE2
5454     if (parasail_can_use_sse2()) {
5455         parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_sse2_128_8;
5456     }
5457     else
5458 #endif
5459 #if HAVE_ALTIVEC
5460     if (parasail_can_use_altivec()) {
5461         parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_altivec_128_8;
5462     }
5463     else
5464 #endif
5465 #if HAVE_NEON
5466     if (parasail_can_use_neon()) {
5467         parasail_sg_qx_rowcol_striped_profile_8_pointer = parasail_sg_qx_rowcol_striped_profile_neon_128_8;
5468     }
5469     else
5470 #endif
5471     {
5472         parasail_sg_qx_rowcol_striped_profile_8_pointer = NULL;
5473     }
5474     return parasail_sg_qx_rowcol_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
5475 }
5476 
5477 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_64_dispatcher(
5478         const parasail_profile_t * const restrict profile,
5479         const char * const restrict s2, const int s2Len,
5480         const int open, const int gap)
5481 {
5482 #if HAVE_AVX2
5483     if (parasail_can_use_avx2()) {
5484         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_avx2_256_64;
5485     }
5486     else
5487 #endif
5488 #if HAVE_SSE41
5489     if (parasail_can_use_sse41()) {
5490         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse41_128_64;
5491     }
5492     else
5493 #endif
5494 #if HAVE_SSE2
5495     if (parasail_can_use_sse2()) {
5496         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse2_128_64;
5497     }
5498     else
5499 #endif
5500 #if HAVE_ALTIVEC
5501     if (parasail_can_use_altivec()) {
5502         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_altivec_128_64;
5503     }
5504     else
5505 #endif
5506 #if HAVE_NEON
5507     if (parasail_can_use_neon()) {
5508         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = parasail_sg_qx_stats_rowcol_scan_profile_neon_128_64;
5509     }
5510     else
5511 #endif
5512     {
5513         parasail_sg_qx_stats_rowcol_scan_profile_64_pointer = NULL;
5514     }
5515     return parasail_sg_qx_stats_rowcol_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
5516 }
5517 
5518 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_32_dispatcher(
5519         const parasail_profile_t * const restrict profile,
5520         const char * const restrict s2, const int s2Len,
5521         const int open, const int gap)
5522 {
5523 #if HAVE_AVX2
5524     if (parasail_can_use_avx2()) {
5525         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_avx2_256_32;
5526     }
5527     else
5528 #endif
5529 #if HAVE_SSE41
5530     if (parasail_can_use_sse41()) {
5531         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse41_128_32;
5532     }
5533     else
5534 #endif
5535 #if HAVE_SSE2
5536     if (parasail_can_use_sse2()) {
5537         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse2_128_32;
5538     }
5539     else
5540 #endif
5541 #if HAVE_ALTIVEC
5542     if (parasail_can_use_altivec()) {
5543         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_altivec_128_32;
5544     }
5545     else
5546 #endif
5547 #if HAVE_NEON
5548     if (parasail_can_use_neon()) {
5549         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = parasail_sg_qx_stats_rowcol_scan_profile_neon_128_32;
5550     }
5551     else
5552 #endif
5553     {
5554         parasail_sg_qx_stats_rowcol_scan_profile_32_pointer = NULL;
5555     }
5556     return parasail_sg_qx_stats_rowcol_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
5557 }
5558 
5559 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_16_dispatcher(
5560         const parasail_profile_t * const restrict profile,
5561         const char * const restrict s2, const int s2Len,
5562         const int open, const int gap)
5563 {
5564 #if HAVE_AVX2
5565     if (parasail_can_use_avx2()) {
5566         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_avx2_256_16;
5567     }
5568     else
5569 #endif
5570 #if HAVE_SSE41
5571     if (parasail_can_use_sse41()) {
5572         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse41_128_16;
5573     }
5574     else
5575 #endif
5576 #if HAVE_SSE2
5577     if (parasail_can_use_sse2()) {
5578         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse2_128_16;
5579     }
5580     else
5581 #endif
5582 #if HAVE_ALTIVEC
5583     if (parasail_can_use_altivec()) {
5584         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_altivec_128_16;
5585     }
5586     else
5587 #endif
5588 #if HAVE_NEON
5589     if (parasail_can_use_neon()) {
5590         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = parasail_sg_qx_stats_rowcol_scan_profile_neon_128_16;
5591     }
5592     else
5593 #endif
5594     {
5595         parasail_sg_qx_stats_rowcol_scan_profile_16_pointer = NULL;
5596     }
5597     return parasail_sg_qx_stats_rowcol_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
5598 }
5599 
5600 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_8_dispatcher(
5601         const parasail_profile_t * const restrict profile,
5602         const char * const restrict s2, const int s2Len,
5603         const int open, const int gap)
5604 {
5605 #if HAVE_AVX2
5606     if (parasail_can_use_avx2()) {
5607         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_avx2_256_8;
5608     }
5609     else
5610 #endif
5611 #if HAVE_SSE41
5612     if (parasail_can_use_sse41()) {
5613         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse41_128_8;
5614     }
5615     else
5616 #endif
5617 #if HAVE_SSE2
5618     if (parasail_can_use_sse2()) {
5619         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_sse2_128_8;
5620     }
5621     else
5622 #endif
5623 #if HAVE_ALTIVEC
5624     if (parasail_can_use_altivec()) {
5625         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_altivec_128_8;
5626     }
5627     else
5628 #endif
5629 #if HAVE_NEON
5630     if (parasail_can_use_neon()) {
5631         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = parasail_sg_qx_stats_rowcol_scan_profile_neon_128_8;
5632     }
5633     else
5634 #endif
5635     {
5636         parasail_sg_qx_stats_rowcol_scan_profile_8_pointer = NULL;
5637     }
5638     return parasail_sg_qx_stats_rowcol_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
5639 }
5640 
5641 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_64_dispatcher(
5642         const parasail_profile_t * const restrict profile,
5643         const char * const restrict s2, const int s2Len,
5644         const int open, const int gap)
5645 {
5646 #if HAVE_AVX2
5647     if (parasail_can_use_avx2()) {
5648         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_avx2_256_64;
5649     }
5650     else
5651 #endif
5652 #if HAVE_SSE41
5653     if (parasail_can_use_sse41()) {
5654         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse41_128_64;
5655     }
5656     else
5657 #endif
5658 #if HAVE_SSE2
5659     if (parasail_can_use_sse2()) {
5660         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse2_128_64;
5661     }
5662     else
5663 #endif
5664 #if HAVE_ALTIVEC
5665     if (parasail_can_use_altivec()) {
5666         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_altivec_128_64;
5667     }
5668     else
5669 #endif
5670 #if HAVE_NEON
5671     if (parasail_can_use_neon()) {
5672         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = parasail_sg_qx_stats_rowcol_striped_profile_neon_128_64;
5673     }
5674     else
5675 #endif
5676     {
5677         parasail_sg_qx_stats_rowcol_striped_profile_64_pointer = NULL;
5678     }
5679     return parasail_sg_qx_stats_rowcol_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
5680 }
5681 
5682 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_32_dispatcher(
5683         const parasail_profile_t * const restrict profile,
5684         const char * const restrict s2, const int s2Len,
5685         const int open, const int gap)
5686 {
5687 #if HAVE_AVX2
5688     if (parasail_can_use_avx2()) {
5689         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_avx2_256_32;
5690     }
5691     else
5692 #endif
5693 #if HAVE_SSE41
5694     if (parasail_can_use_sse41()) {
5695         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse41_128_32;
5696     }
5697     else
5698 #endif
5699 #if HAVE_SSE2
5700     if (parasail_can_use_sse2()) {
5701         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse2_128_32;
5702     }
5703     else
5704 #endif
5705 #if HAVE_ALTIVEC
5706     if (parasail_can_use_altivec()) {
5707         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_altivec_128_32;
5708     }
5709     else
5710 #endif
5711 #if HAVE_NEON
5712     if (parasail_can_use_neon()) {
5713         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = parasail_sg_qx_stats_rowcol_striped_profile_neon_128_32;
5714     }
5715     else
5716 #endif
5717     {
5718         parasail_sg_qx_stats_rowcol_striped_profile_32_pointer = NULL;
5719     }
5720     return parasail_sg_qx_stats_rowcol_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
5721 }
5722 
5723 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_16_dispatcher(
5724         const parasail_profile_t * const restrict profile,
5725         const char * const restrict s2, const int s2Len,
5726         const int open, const int gap)
5727 {
5728 #if HAVE_AVX2
5729     if (parasail_can_use_avx2()) {
5730         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_avx2_256_16;
5731     }
5732     else
5733 #endif
5734 #if HAVE_SSE41
5735     if (parasail_can_use_sse41()) {
5736         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse41_128_16;
5737     }
5738     else
5739 #endif
5740 #if HAVE_SSE2
5741     if (parasail_can_use_sse2()) {
5742         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse2_128_16;
5743     }
5744     else
5745 #endif
5746 #if HAVE_ALTIVEC
5747     if (parasail_can_use_altivec()) {
5748         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_altivec_128_16;
5749     }
5750     else
5751 #endif
5752 #if HAVE_NEON
5753     if (parasail_can_use_neon()) {
5754         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = parasail_sg_qx_stats_rowcol_striped_profile_neon_128_16;
5755     }
5756     else
5757 #endif
5758     {
5759         parasail_sg_qx_stats_rowcol_striped_profile_16_pointer = NULL;
5760     }
5761     return parasail_sg_qx_stats_rowcol_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
5762 }
5763 
5764 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_8_dispatcher(
5765         const parasail_profile_t * const restrict profile,
5766         const char * const restrict s2, const int s2Len,
5767         const int open, const int gap)
5768 {
5769 #if HAVE_AVX2
5770     if (parasail_can_use_avx2()) {
5771         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_avx2_256_8;
5772     }
5773     else
5774 #endif
5775 #if HAVE_SSE41
5776     if (parasail_can_use_sse41()) {
5777         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse41_128_8;
5778     }
5779     else
5780 #endif
5781 #if HAVE_SSE2
5782     if (parasail_can_use_sse2()) {
5783         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_sse2_128_8;
5784     }
5785     else
5786 #endif
5787 #if HAVE_ALTIVEC
5788     if (parasail_can_use_altivec()) {
5789         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_altivec_128_8;
5790     }
5791     else
5792 #endif
5793 #if HAVE_NEON
5794     if (parasail_can_use_neon()) {
5795         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = parasail_sg_qx_stats_rowcol_striped_profile_neon_128_8;
5796     }
5797     else
5798 #endif
5799     {
5800         parasail_sg_qx_stats_rowcol_striped_profile_8_pointer = NULL;
5801     }
5802     return parasail_sg_qx_stats_rowcol_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
5803 }
5804 
5805 parasail_result_t* parasail_sg_qx_trace_scan_profile_64_dispatcher(
5806         const parasail_profile_t * const restrict profile,
5807         const char * const restrict s2, const int s2Len,
5808         const int open, const int gap)
5809 {
5810 #if HAVE_AVX2
5811     if (parasail_can_use_avx2()) {
5812         parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_avx2_256_64;
5813     }
5814     else
5815 #endif
5816 #if HAVE_SSE41
5817     if (parasail_can_use_sse41()) {
5818         parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_sse41_128_64;
5819     }
5820     else
5821 #endif
5822 #if HAVE_SSE2
5823     if (parasail_can_use_sse2()) {
5824         parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_sse2_128_64;
5825     }
5826     else
5827 #endif
5828 #if HAVE_ALTIVEC
5829     if (parasail_can_use_altivec()) {
5830         parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_altivec_128_64;
5831     }
5832     else
5833 #endif
5834 #if HAVE_NEON
5835     if (parasail_can_use_neon()) {
5836         parasail_sg_qx_trace_scan_profile_64_pointer = parasail_sg_qx_trace_scan_profile_neon_128_64;
5837     }
5838     else
5839 #endif
5840     {
5841         parasail_sg_qx_trace_scan_profile_64_pointer = NULL;
5842     }
5843     return parasail_sg_qx_trace_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
5844 }
5845 
5846 parasail_result_t* parasail_sg_qx_trace_scan_profile_32_dispatcher(
5847         const parasail_profile_t * const restrict profile,
5848         const char * const restrict s2, const int s2Len,
5849         const int open, const int gap)
5850 {
5851 #if HAVE_AVX2
5852     if (parasail_can_use_avx2()) {
5853         parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_avx2_256_32;
5854     }
5855     else
5856 #endif
5857 #if HAVE_SSE41
5858     if (parasail_can_use_sse41()) {
5859         parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_sse41_128_32;
5860     }
5861     else
5862 #endif
5863 #if HAVE_SSE2
5864     if (parasail_can_use_sse2()) {
5865         parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_sse2_128_32;
5866     }
5867     else
5868 #endif
5869 #if HAVE_ALTIVEC
5870     if (parasail_can_use_altivec()) {
5871         parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_altivec_128_32;
5872     }
5873     else
5874 #endif
5875 #if HAVE_NEON
5876     if (parasail_can_use_neon()) {
5877         parasail_sg_qx_trace_scan_profile_32_pointer = parasail_sg_qx_trace_scan_profile_neon_128_32;
5878     }
5879     else
5880 #endif
5881     {
5882         parasail_sg_qx_trace_scan_profile_32_pointer = NULL;
5883     }
5884     return parasail_sg_qx_trace_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
5885 }
5886 
5887 parasail_result_t* parasail_sg_qx_trace_scan_profile_16_dispatcher(
5888         const parasail_profile_t * const restrict profile,
5889         const char * const restrict s2, const int s2Len,
5890         const int open, const int gap)
5891 {
5892 #if HAVE_AVX2
5893     if (parasail_can_use_avx2()) {
5894         parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_avx2_256_16;
5895     }
5896     else
5897 #endif
5898 #if HAVE_SSE41
5899     if (parasail_can_use_sse41()) {
5900         parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_sse41_128_16;
5901     }
5902     else
5903 #endif
5904 #if HAVE_SSE2
5905     if (parasail_can_use_sse2()) {
5906         parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_sse2_128_16;
5907     }
5908     else
5909 #endif
5910 #if HAVE_ALTIVEC
5911     if (parasail_can_use_altivec()) {
5912         parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_altivec_128_16;
5913     }
5914     else
5915 #endif
5916 #if HAVE_NEON
5917     if (parasail_can_use_neon()) {
5918         parasail_sg_qx_trace_scan_profile_16_pointer = parasail_sg_qx_trace_scan_profile_neon_128_16;
5919     }
5920     else
5921 #endif
5922     {
5923         parasail_sg_qx_trace_scan_profile_16_pointer = NULL;
5924     }
5925     return parasail_sg_qx_trace_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
5926 }
5927 
5928 parasail_result_t* parasail_sg_qx_trace_scan_profile_8_dispatcher(
5929         const parasail_profile_t * const restrict profile,
5930         const char * const restrict s2, const int s2Len,
5931         const int open, const int gap)
5932 {
5933 #if HAVE_AVX2
5934     if (parasail_can_use_avx2()) {
5935         parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_avx2_256_8;
5936     }
5937     else
5938 #endif
5939 #if HAVE_SSE41
5940     if (parasail_can_use_sse41()) {
5941         parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_sse41_128_8;
5942     }
5943     else
5944 #endif
5945 #if HAVE_SSE2
5946     if (parasail_can_use_sse2()) {
5947         parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_sse2_128_8;
5948     }
5949     else
5950 #endif
5951 #if HAVE_ALTIVEC
5952     if (parasail_can_use_altivec()) {
5953         parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_altivec_128_8;
5954     }
5955     else
5956 #endif
5957 #if HAVE_NEON
5958     if (parasail_can_use_neon()) {
5959         parasail_sg_qx_trace_scan_profile_8_pointer = parasail_sg_qx_trace_scan_profile_neon_128_8;
5960     }
5961     else
5962 #endif
5963     {
5964         parasail_sg_qx_trace_scan_profile_8_pointer = NULL;
5965     }
5966     return parasail_sg_qx_trace_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
5967 }
5968 
5969 parasail_result_t* parasail_sg_qx_trace_striped_profile_64_dispatcher(
5970         const parasail_profile_t * const restrict profile,
5971         const char * const restrict s2, const int s2Len,
5972         const int open, const int gap)
5973 {
5974 #if HAVE_AVX2
5975     if (parasail_can_use_avx2()) {
5976         parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_avx2_256_64;
5977     }
5978     else
5979 #endif
5980 #if HAVE_SSE41
5981     if (parasail_can_use_sse41()) {
5982         parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_sse41_128_64;
5983     }
5984     else
5985 #endif
5986 #if HAVE_SSE2
5987     if (parasail_can_use_sse2()) {
5988         parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_sse2_128_64;
5989     }
5990     else
5991 #endif
5992 #if HAVE_ALTIVEC
5993     if (parasail_can_use_altivec()) {
5994         parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_altivec_128_64;
5995     }
5996     else
5997 #endif
5998 #if HAVE_NEON
5999     if (parasail_can_use_neon()) {
6000         parasail_sg_qx_trace_striped_profile_64_pointer = parasail_sg_qx_trace_striped_profile_neon_128_64;
6001     }
6002     else
6003 #endif
6004     {
6005         parasail_sg_qx_trace_striped_profile_64_pointer = NULL;
6006     }
6007     return parasail_sg_qx_trace_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
6008 }
6009 
6010 parasail_result_t* parasail_sg_qx_trace_striped_profile_32_dispatcher(
6011         const parasail_profile_t * const restrict profile,
6012         const char * const restrict s2, const int s2Len,
6013         const int open, const int gap)
6014 {
6015 #if HAVE_AVX2
6016     if (parasail_can_use_avx2()) {
6017         parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_avx2_256_32;
6018     }
6019     else
6020 #endif
6021 #if HAVE_SSE41
6022     if (parasail_can_use_sse41()) {
6023         parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_sse41_128_32;
6024     }
6025     else
6026 #endif
6027 #if HAVE_SSE2
6028     if (parasail_can_use_sse2()) {
6029         parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_sse2_128_32;
6030     }
6031     else
6032 #endif
6033 #if HAVE_ALTIVEC
6034     if (parasail_can_use_altivec()) {
6035         parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_altivec_128_32;
6036     }
6037     else
6038 #endif
6039 #if HAVE_NEON
6040     if (parasail_can_use_neon()) {
6041         parasail_sg_qx_trace_striped_profile_32_pointer = parasail_sg_qx_trace_striped_profile_neon_128_32;
6042     }
6043     else
6044 #endif
6045     {
6046         parasail_sg_qx_trace_striped_profile_32_pointer = NULL;
6047     }
6048     return parasail_sg_qx_trace_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
6049 }
6050 
6051 parasail_result_t* parasail_sg_qx_trace_striped_profile_16_dispatcher(
6052         const parasail_profile_t * const restrict profile,
6053         const char * const restrict s2, const int s2Len,
6054         const int open, const int gap)
6055 {
6056 #if HAVE_AVX2
6057     if (parasail_can_use_avx2()) {
6058         parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_avx2_256_16;
6059     }
6060     else
6061 #endif
6062 #if HAVE_SSE41
6063     if (parasail_can_use_sse41()) {
6064         parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_sse41_128_16;
6065     }
6066     else
6067 #endif
6068 #if HAVE_SSE2
6069     if (parasail_can_use_sse2()) {
6070         parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_sse2_128_16;
6071     }
6072     else
6073 #endif
6074 #if HAVE_ALTIVEC
6075     if (parasail_can_use_altivec()) {
6076         parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_altivec_128_16;
6077     }
6078     else
6079 #endif
6080 #if HAVE_NEON
6081     if (parasail_can_use_neon()) {
6082         parasail_sg_qx_trace_striped_profile_16_pointer = parasail_sg_qx_trace_striped_profile_neon_128_16;
6083     }
6084     else
6085 #endif
6086     {
6087         parasail_sg_qx_trace_striped_profile_16_pointer = NULL;
6088     }
6089     return parasail_sg_qx_trace_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
6090 }
6091 
6092 parasail_result_t* parasail_sg_qx_trace_striped_profile_8_dispatcher(
6093         const parasail_profile_t * const restrict profile,
6094         const char * const restrict s2, const int s2Len,
6095         const int open, const int gap)
6096 {
6097 #if HAVE_AVX2
6098     if (parasail_can_use_avx2()) {
6099         parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_avx2_256_8;
6100     }
6101     else
6102 #endif
6103 #if HAVE_SSE41
6104     if (parasail_can_use_sse41()) {
6105         parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_sse41_128_8;
6106     }
6107     else
6108 #endif
6109 #if HAVE_SSE2
6110     if (parasail_can_use_sse2()) {
6111         parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_sse2_128_8;
6112     }
6113     else
6114 #endif
6115 #if HAVE_ALTIVEC
6116     if (parasail_can_use_altivec()) {
6117         parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_altivec_128_8;
6118     }
6119     else
6120 #endif
6121 #if HAVE_NEON
6122     if (parasail_can_use_neon()) {
6123         parasail_sg_qx_trace_striped_profile_8_pointer = parasail_sg_qx_trace_striped_profile_neon_128_8;
6124     }
6125     else
6126 #endif
6127     {
6128         parasail_sg_qx_trace_striped_profile_8_pointer = NULL;
6129     }
6130     return parasail_sg_qx_trace_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
6131 }
6132 #endif
6133 
6134 /* implementation which simply calls the pointer,
6135  * first time it's the dispatcher, otherwise it's correct impl */
6136 
6137 #if 0
6138 parasail_result_t* parasail_sg_qx_scan_64(
6139         const char * const restrict s1, const int s1Len,
6140         const char * const restrict s2, const int s2Len,
6141         const int open, const int gap,
6142         const parasail_matrix_t *matrix)
6143 {
6144     return parasail_sg_qx_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6145 }
6146 
6147 parasail_result_t* parasail_sg_qx_scan_32(
6148         const char * const restrict s1, const int s1Len,
6149         const char * const restrict s2, const int s2Len,
6150         const int open, const int gap,
6151         const parasail_matrix_t *matrix)
6152 {
6153     return parasail_sg_qx_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6154 }
6155 
6156 parasail_result_t* parasail_sg_qx_scan_16(
6157         const char * const restrict s1, const int s1Len,
6158         const char * const restrict s2, const int s2Len,
6159         const int open, const int gap,
6160         const parasail_matrix_t *matrix)
6161 {
6162     return parasail_sg_qx_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6163 }
6164 
6165 parasail_result_t* parasail_sg_qx_scan_8(
6166         const char * const restrict s1, const int s1Len,
6167         const char * const restrict s2, const int s2Len,
6168         const int open, const int gap,
6169         const parasail_matrix_t *matrix)
6170 {
6171     return parasail_sg_qx_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6172 }
6173 
6174 parasail_result_t* parasail_sg_qx_striped_64(
6175         const char * const restrict s1, const int s1Len,
6176         const char * const restrict s2, const int s2Len,
6177         const int open, const int gap,
6178         const parasail_matrix_t *matrix)
6179 {
6180     return parasail_sg_qx_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6181 }
6182 
6183 parasail_result_t* parasail_sg_qx_striped_32(
6184         const char * const restrict s1, const int s1Len,
6185         const char * const restrict s2, const int s2Len,
6186         const int open, const int gap,
6187         const parasail_matrix_t *matrix)
6188 {
6189     return parasail_sg_qx_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6190 }
6191 
6192 parasail_result_t* parasail_sg_qx_striped_16(
6193         const char * const restrict s1, const int s1Len,
6194         const char * const restrict s2, const int s2Len,
6195         const int open, const int gap,
6196         const parasail_matrix_t *matrix)
6197 {
6198     return parasail_sg_qx_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6199 }
6200 
6201 parasail_result_t* parasail_sg_qx_striped_8(
6202         const char * const restrict s1, const int s1Len,
6203         const char * const restrict s2, const int s2Len,
6204         const int open, const int gap,
6205         const parasail_matrix_t *matrix)
6206 {
6207     return parasail_sg_qx_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6208 }
6209 
6210 parasail_result_t* parasail_sg_qx_diag_64(
6211         const char * const restrict s1, const int s1Len,
6212         const char * const restrict s2, const int s2Len,
6213         const int open, const int gap,
6214         const parasail_matrix_t *matrix)
6215 {
6216     return parasail_sg_qx_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6217 }
6218 
6219 parasail_result_t* parasail_sg_qx_diag_32(
6220         const char * const restrict s1, const int s1Len,
6221         const char * const restrict s2, const int s2Len,
6222         const int open, const int gap,
6223         const parasail_matrix_t *matrix)
6224 {
6225     return parasail_sg_qx_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6226 }
6227 
6228 parasail_result_t* parasail_sg_qx_diag_16(
6229         const char * const restrict s1, const int s1Len,
6230         const char * const restrict s2, const int s2Len,
6231         const int open, const int gap,
6232         const parasail_matrix_t *matrix)
6233 {
6234     return parasail_sg_qx_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6235 }
6236 
6237 parasail_result_t* parasail_sg_qx_diag_8(
6238         const char * const restrict s1, const int s1Len,
6239         const char * const restrict s2, const int s2Len,
6240         const int open, const int gap,
6241         const parasail_matrix_t *matrix)
6242 {
6243     return parasail_sg_qx_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6244 }
6245 
6246 parasail_result_t* parasail_sg_qx_stats_scan_64(
6247         const char * const restrict s1, const int s1Len,
6248         const char * const restrict s2, const int s2Len,
6249         const int open, const int gap,
6250         const parasail_matrix_t *matrix)
6251 {
6252     return parasail_sg_qx_stats_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6253 }
6254 
6255 parasail_result_t* parasail_sg_qx_stats_scan_32(
6256         const char * const restrict s1, const int s1Len,
6257         const char * const restrict s2, const int s2Len,
6258         const int open, const int gap,
6259         const parasail_matrix_t *matrix)
6260 {
6261     return parasail_sg_qx_stats_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6262 }
6263 
6264 parasail_result_t* parasail_sg_qx_stats_scan_16(
6265         const char * const restrict s1, const int s1Len,
6266         const char * const restrict s2, const int s2Len,
6267         const int open, const int gap,
6268         const parasail_matrix_t *matrix)
6269 {
6270     return parasail_sg_qx_stats_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6271 }
6272 
6273 parasail_result_t* parasail_sg_qx_stats_scan_8(
6274         const char * const restrict s1, const int s1Len,
6275         const char * const restrict s2, const int s2Len,
6276         const int open, const int gap,
6277         const parasail_matrix_t *matrix)
6278 {
6279     return parasail_sg_qx_stats_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6280 }
6281 
6282 parasail_result_t* parasail_sg_qx_stats_striped_64(
6283         const char * const restrict s1, const int s1Len,
6284         const char * const restrict s2, const int s2Len,
6285         const int open, const int gap,
6286         const parasail_matrix_t *matrix)
6287 {
6288     return parasail_sg_qx_stats_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6289 }
6290 
6291 parasail_result_t* parasail_sg_qx_stats_striped_32(
6292         const char * const restrict s1, const int s1Len,
6293         const char * const restrict s2, const int s2Len,
6294         const int open, const int gap,
6295         const parasail_matrix_t *matrix)
6296 {
6297     return parasail_sg_qx_stats_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6298 }
6299 
6300 parasail_result_t* parasail_sg_qx_stats_striped_16(
6301         const char * const restrict s1, const int s1Len,
6302         const char * const restrict s2, const int s2Len,
6303         const int open, const int gap,
6304         const parasail_matrix_t *matrix)
6305 {
6306     return parasail_sg_qx_stats_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6307 }
6308 
6309 parasail_result_t* parasail_sg_qx_stats_striped_8(
6310         const char * const restrict s1, const int s1Len,
6311         const char * const restrict s2, const int s2Len,
6312         const int open, const int gap,
6313         const parasail_matrix_t *matrix)
6314 {
6315     return parasail_sg_qx_stats_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6316 }
6317 
6318 parasail_result_t* parasail_sg_qx_stats_diag_64(
6319         const char * const restrict s1, const int s1Len,
6320         const char * const restrict s2, const int s2Len,
6321         const int open, const int gap,
6322         const parasail_matrix_t *matrix)
6323 {
6324     return parasail_sg_qx_stats_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6325 }
6326 
6327 parasail_result_t* parasail_sg_qx_stats_diag_32(
6328         const char * const restrict s1, const int s1Len,
6329         const char * const restrict s2, const int s2Len,
6330         const int open, const int gap,
6331         const parasail_matrix_t *matrix)
6332 {
6333     return parasail_sg_qx_stats_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6334 }
6335 
6336 parasail_result_t* parasail_sg_qx_stats_diag_16(
6337         const char * const restrict s1, const int s1Len,
6338         const char * const restrict s2, const int s2Len,
6339         const int open, const int gap,
6340         const parasail_matrix_t *matrix)
6341 {
6342     return parasail_sg_qx_stats_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6343 }
6344 
6345 parasail_result_t* parasail_sg_qx_stats_diag_8(
6346         const char * const restrict s1, const int s1Len,
6347         const char * const restrict s2, const int s2Len,
6348         const int open, const int gap,
6349         const parasail_matrix_t *matrix)
6350 {
6351     return parasail_sg_qx_stats_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6352 }
6353 
6354 parasail_result_t* parasail_sg_qx_table_scan_64(
6355         const char * const restrict s1, const int s1Len,
6356         const char * const restrict s2, const int s2Len,
6357         const int open, const int gap,
6358         const parasail_matrix_t *matrix)
6359 {
6360     return parasail_sg_qx_table_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6361 }
6362 
6363 parasail_result_t* parasail_sg_qx_table_scan_32(
6364         const char * const restrict s1, const int s1Len,
6365         const char * const restrict s2, const int s2Len,
6366         const int open, const int gap,
6367         const parasail_matrix_t *matrix)
6368 {
6369     return parasail_sg_qx_table_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6370 }
6371 
6372 parasail_result_t* parasail_sg_qx_table_scan_16(
6373         const char * const restrict s1, const int s1Len,
6374         const char * const restrict s2, const int s2Len,
6375         const int open, const int gap,
6376         const parasail_matrix_t *matrix)
6377 {
6378     return parasail_sg_qx_table_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6379 }
6380 
6381 parasail_result_t* parasail_sg_qx_table_scan_8(
6382         const char * const restrict s1, const int s1Len,
6383         const char * const restrict s2, const int s2Len,
6384         const int open, const int gap,
6385         const parasail_matrix_t *matrix)
6386 {
6387     return parasail_sg_qx_table_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6388 }
6389 
6390 parasail_result_t* parasail_sg_qx_table_striped_64(
6391         const char * const restrict s1, const int s1Len,
6392         const char * const restrict s2, const int s2Len,
6393         const int open, const int gap,
6394         const parasail_matrix_t *matrix)
6395 {
6396     return parasail_sg_qx_table_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6397 }
6398 
6399 parasail_result_t* parasail_sg_qx_table_striped_32(
6400         const char * const restrict s1, const int s1Len,
6401         const char * const restrict s2, const int s2Len,
6402         const int open, const int gap,
6403         const parasail_matrix_t *matrix)
6404 {
6405     return parasail_sg_qx_table_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6406 }
6407 
6408 parasail_result_t* parasail_sg_qx_table_striped_16(
6409         const char * const restrict s1, const int s1Len,
6410         const char * const restrict s2, const int s2Len,
6411         const int open, const int gap,
6412         const parasail_matrix_t *matrix)
6413 {
6414     return parasail_sg_qx_table_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6415 }
6416 
6417 parasail_result_t* parasail_sg_qx_table_striped_8(
6418         const char * const restrict s1, const int s1Len,
6419         const char * const restrict s2, const int s2Len,
6420         const int open, const int gap,
6421         const parasail_matrix_t *matrix)
6422 {
6423     return parasail_sg_qx_table_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6424 }
6425 
6426 parasail_result_t* parasail_sg_qx_table_diag_64(
6427         const char * const restrict s1, const int s1Len,
6428         const char * const restrict s2, const int s2Len,
6429         const int open, const int gap,
6430         const parasail_matrix_t *matrix)
6431 {
6432     return parasail_sg_qx_table_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6433 }
6434 
6435 parasail_result_t* parasail_sg_qx_table_diag_32(
6436         const char * const restrict s1, const int s1Len,
6437         const char * const restrict s2, const int s2Len,
6438         const int open, const int gap,
6439         const parasail_matrix_t *matrix)
6440 {
6441     return parasail_sg_qx_table_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6442 }
6443 
6444 parasail_result_t* parasail_sg_qx_table_diag_16(
6445         const char * const restrict s1, const int s1Len,
6446         const char * const restrict s2, const int s2Len,
6447         const int open, const int gap,
6448         const parasail_matrix_t *matrix)
6449 {
6450     return parasail_sg_qx_table_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6451 }
6452 
6453 parasail_result_t* parasail_sg_qx_table_diag_8(
6454         const char * const restrict s1, const int s1Len,
6455         const char * const restrict s2, const int s2Len,
6456         const int open, const int gap,
6457         const parasail_matrix_t *matrix)
6458 {
6459     return parasail_sg_qx_table_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6460 }
6461 
6462 parasail_result_t* parasail_sg_qx_stats_table_scan_64(
6463         const char * const restrict s1, const int s1Len,
6464         const char * const restrict s2, const int s2Len,
6465         const int open, const int gap,
6466         const parasail_matrix_t *matrix)
6467 {
6468     return parasail_sg_qx_stats_table_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6469 }
6470 
6471 parasail_result_t* parasail_sg_qx_stats_table_scan_32(
6472         const char * const restrict s1, const int s1Len,
6473         const char * const restrict s2, const int s2Len,
6474         const int open, const int gap,
6475         const parasail_matrix_t *matrix)
6476 {
6477     return parasail_sg_qx_stats_table_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6478 }
6479 
6480 parasail_result_t* parasail_sg_qx_stats_table_scan_16(
6481         const char * const restrict s1, const int s1Len,
6482         const char * const restrict s2, const int s2Len,
6483         const int open, const int gap,
6484         const parasail_matrix_t *matrix)
6485 {
6486     return parasail_sg_qx_stats_table_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6487 }
6488 
6489 parasail_result_t* parasail_sg_qx_stats_table_scan_8(
6490         const char * const restrict s1, const int s1Len,
6491         const char * const restrict s2, const int s2Len,
6492         const int open, const int gap,
6493         const parasail_matrix_t *matrix)
6494 {
6495     return parasail_sg_qx_stats_table_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6496 }
6497 
6498 parasail_result_t* parasail_sg_qx_stats_table_striped_64(
6499         const char * const restrict s1, const int s1Len,
6500         const char * const restrict s2, const int s2Len,
6501         const int open, const int gap,
6502         const parasail_matrix_t *matrix)
6503 {
6504     return parasail_sg_qx_stats_table_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6505 }
6506 
6507 parasail_result_t* parasail_sg_qx_stats_table_striped_32(
6508         const char * const restrict s1, const int s1Len,
6509         const char * const restrict s2, const int s2Len,
6510         const int open, const int gap,
6511         const parasail_matrix_t *matrix)
6512 {
6513     return parasail_sg_qx_stats_table_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6514 }
6515 
6516 parasail_result_t* parasail_sg_qx_stats_table_striped_16(
6517         const char * const restrict s1, const int s1Len,
6518         const char * const restrict s2, const int s2Len,
6519         const int open, const int gap,
6520         const parasail_matrix_t *matrix)
6521 {
6522     return parasail_sg_qx_stats_table_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6523 }
6524 
6525 parasail_result_t* parasail_sg_qx_stats_table_striped_8(
6526         const char * const restrict s1, const int s1Len,
6527         const char * const restrict s2, const int s2Len,
6528         const int open, const int gap,
6529         const parasail_matrix_t *matrix)
6530 {
6531     return parasail_sg_qx_stats_table_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6532 }
6533 
6534 parasail_result_t* parasail_sg_qx_stats_table_diag_64(
6535         const char * const restrict s1, const int s1Len,
6536         const char * const restrict s2, const int s2Len,
6537         const int open, const int gap,
6538         const parasail_matrix_t *matrix)
6539 {
6540     return parasail_sg_qx_stats_table_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6541 }
6542 
6543 parasail_result_t* parasail_sg_qx_stats_table_diag_32(
6544         const char * const restrict s1, const int s1Len,
6545         const char * const restrict s2, const int s2Len,
6546         const int open, const int gap,
6547         const parasail_matrix_t *matrix)
6548 {
6549     return parasail_sg_qx_stats_table_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6550 }
6551 
6552 parasail_result_t* parasail_sg_qx_stats_table_diag_16(
6553         const char * const restrict s1, const int s1Len,
6554         const char * const restrict s2, const int s2Len,
6555         const int open, const int gap,
6556         const parasail_matrix_t *matrix)
6557 {
6558     return parasail_sg_qx_stats_table_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6559 }
6560 
6561 parasail_result_t* parasail_sg_qx_stats_table_diag_8(
6562         const char * const restrict s1, const int s1Len,
6563         const char * const restrict s2, const int s2Len,
6564         const int open, const int gap,
6565         const parasail_matrix_t *matrix)
6566 {
6567     return parasail_sg_qx_stats_table_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6568 }
6569 
6570 parasail_result_t* parasail_sg_qx_rowcol_scan_64(
6571         const char * const restrict s1, const int s1Len,
6572         const char * const restrict s2, const int s2Len,
6573         const int open, const int gap,
6574         const parasail_matrix_t *matrix)
6575 {
6576     return parasail_sg_qx_rowcol_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6577 }
6578 
6579 parasail_result_t* parasail_sg_qx_rowcol_scan_32(
6580         const char * const restrict s1, const int s1Len,
6581         const char * const restrict s2, const int s2Len,
6582         const int open, const int gap,
6583         const parasail_matrix_t *matrix)
6584 {
6585     return parasail_sg_qx_rowcol_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6586 }
6587 
6588 parasail_result_t* parasail_sg_qx_rowcol_scan_16(
6589         const char * const restrict s1, const int s1Len,
6590         const char * const restrict s2, const int s2Len,
6591         const int open, const int gap,
6592         const parasail_matrix_t *matrix)
6593 {
6594     return parasail_sg_qx_rowcol_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6595 }
6596 
6597 parasail_result_t* parasail_sg_qx_rowcol_scan_8(
6598         const char * const restrict s1, const int s1Len,
6599         const char * const restrict s2, const int s2Len,
6600         const int open, const int gap,
6601         const parasail_matrix_t *matrix)
6602 {
6603     return parasail_sg_qx_rowcol_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6604 }
6605 
6606 parasail_result_t* parasail_sg_qx_rowcol_striped_64(
6607         const char * const restrict s1, const int s1Len,
6608         const char * const restrict s2, const int s2Len,
6609         const int open, const int gap,
6610         const parasail_matrix_t *matrix)
6611 {
6612     return parasail_sg_qx_rowcol_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6613 }
6614 
6615 parasail_result_t* parasail_sg_qx_rowcol_striped_32(
6616         const char * const restrict s1, const int s1Len,
6617         const char * const restrict s2, const int s2Len,
6618         const int open, const int gap,
6619         const parasail_matrix_t *matrix)
6620 {
6621     return parasail_sg_qx_rowcol_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6622 }
6623 
6624 parasail_result_t* parasail_sg_qx_rowcol_striped_16(
6625         const char * const restrict s1, const int s1Len,
6626         const char * const restrict s2, const int s2Len,
6627         const int open, const int gap,
6628         const parasail_matrix_t *matrix)
6629 {
6630     return parasail_sg_qx_rowcol_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6631 }
6632 
6633 parasail_result_t* parasail_sg_qx_rowcol_striped_8(
6634         const char * const restrict s1, const int s1Len,
6635         const char * const restrict s2, const int s2Len,
6636         const int open, const int gap,
6637         const parasail_matrix_t *matrix)
6638 {
6639     return parasail_sg_qx_rowcol_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6640 }
6641 
6642 parasail_result_t* parasail_sg_qx_rowcol_diag_64(
6643         const char * const restrict s1, const int s1Len,
6644         const char * const restrict s2, const int s2Len,
6645         const int open, const int gap,
6646         const parasail_matrix_t *matrix)
6647 {
6648     return parasail_sg_qx_rowcol_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6649 }
6650 
6651 parasail_result_t* parasail_sg_qx_rowcol_diag_32(
6652         const char * const restrict s1, const int s1Len,
6653         const char * const restrict s2, const int s2Len,
6654         const int open, const int gap,
6655         const parasail_matrix_t *matrix)
6656 {
6657     return parasail_sg_qx_rowcol_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6658 }
6659 
6660 parasail_result_t* parasail_sg_qx_rowcol_diag_16(
6661         const char * const restrict s1, const int s1Len,
6662         const char * const restrict s2, const int s2Len,
6663         const int open, const int gap,
6664         const parasail_matrix_t *matrix)
6665 {
6666     return parasail_sg_qx_rowcol_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6667 }
6668 
6669 parasail_result_t* parasail_sg_qx_rowcol_diag_8(
6670         const char * const restrict s1, const int s1Len,
6671         const char * const restrict s2, const int s2Len,
6672         const int open, const int gap,
6673         const parasail_matrix_t *matrix)
6674 {
6675     return parasail_sg_qx_rowcol_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6676 }
6677 
6678 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_64(
6679         const char * const restrict s1, const int s1Len,
6680         const char * const restrict s2, const int s2Len,
6681         const int open, const int gap,
6682         const parasail_matrix_t *matrix)
6683 {
6684     return parasail_sg_qx_stats_rowcol_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6685 }
6686 
6687 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_32(
6688         const char * const restrict s1, const int s1Len,
6689         const char * const restrict s2, const int s2Len,
6690         const int open, const int gap,
6691         const parasail_matrix_t *matrix)
6692 {
6693     return parasail_sg_qx_stats_rowcol_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6694 }
6695 
6696 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_16(
6697         const char * const restrict s1, const int s1Len,
6698         const char * const restrict s2, const int s2Len,
6699         const int open, const int gap,
6700         const parasail_matrix_t *matrix)
6701 {
6702     return parasail_sg_qx_stats_rowcol_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6703 }
6704 
6705 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_8(
6706         const char * const restrict s1, const int s1Len,
6707         const char * const restrict s2, const int s2Len,
6708         const int open, const int gap,
6709         const parasail_matrix_t *matrix)
6710 {
6711     return parasail_sg_qx_stats_rowcol_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6712 }
6713 
6714 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_64(
6715         const char * const restrict s1, const int s1Len,
6716         const char * const restrict s2, const int s2Len,
6717         const int open, const int gap,
6718         const parasail_matrix_t *matrix)
6719 {
6720     return parasail_sg_qx_stats_rowcol_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6721 }
6722 
6723 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_32(
6724         const char * const restrict s1, const int s1Len,
6725         const char * const restrict s2, const int s2Len,
6726         const int open, const int gap,
6727         const parasail_matrix_t *matrix)
6728 {
6729     return parasail_sg_qx_stats_rowcol_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6730 }
6731 
6732 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_16(
6733         const char * const restrict s1, const int s1Len,
6734         const char * const restrict s2, const int s2Len,
6735         const int open, const int gap,
6736         const parasail_matrix_t *matrix)
6737 {
6738     return parasail_sg_qx_stats_rowcol_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6739 }
6740 
6741 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_8(
6742         const char * const restrict s1, const int s1Len,
6743         const char * const restrict s2, const int s2Len,
6744         const int open, const int gap,
6745         const parasail_matrix_t *matrix)
6746 {
6747     return parasail_sg_qx_stats_rowcol_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6748 }
6749 
6750 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_64(
6751         const char * const restrict s1, const int s1Len,
6752         const char * const restrict s2, const int s2Len,
6753         const int open, const int gap,
6754         const parasail_matrix_t *matrix)
6755 {
6756     return parasail_sg_qx_stats_rowcol_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6757 }
6758 
6759 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_32(
6760         const char * const restrict s1, const int s1Len,
6761         const char * const restrict s2, const int s2Len,
6762         const int open, const int gap,
6763         const parasail_matrix_t *matrix)
6764 {
6765     return parasail_sg_qx_stats_rowcol_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6766 }
6767 
6768 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_16(
6769         const char * const restrict s1, const int s1Len,
6770         const char * const restrict s2, const int s2Len,
6771         const int open, const int gap,
6772         const parasail_matrix_t *matrix)
6773 {
6774     return parasail_sg_qx_stats_rowcol_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6775 }
6776 
6777 parasail_result_t* parasail_sg_qx_stats_rowcol_diag_8(
6778         const char * const restrict s1, const int s1Len,
6779         const char * const restrict s2, const int s2Len,
6780         const int open, const int gap,
6781         const parasail_matrix_t *matrix)
6782 {
6783     return parasail_sg_qx_stats_rowcol_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6784 }
6785 
6786 parasail_result_t* parasail_sg_qx_trace_scan_64(
6787         const char * const restrict s1, const int s1Len,
6788         const char * const restrict s2, const int s2Len,
6789         const int open, const int gap,
6790         const parasail_matrix_t *matrix)
6791 {
6792     return parasail_sg_qx_trace_scan_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6793 }
6794 
6795 parasail_result_t* parasail_sg_qx_trace_scan_32(
6796         const char * const restrict s1, const int s1Len,
6797         const char * const restrict s2, const int s2Len,
6798         const int open, const int gap,
6799         const parasail_matrix_t *matrix)
6800 {
6801     return parasail_sg_qx_trace_scan_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6802 }
6803 
6804 parasail_result_t* parasail_sg_qx_trace_scan_16(
6805         const char * const restrict s1, const int s1Len,
6806         const char * const restrict s2, const int s2Len,
6807         const int open, const int gap,
6808         const parasail_matrix_t *matrix)
6809 {
6810     return parasail_sg_qx_trace_scan_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6811 }
6812 
6813 parasail_result_t* parasail_sg_qx_trace_scan_8(
6814         const char * const restrict s1, const int s1Len,
6815         const char * const restrict s2, const int s2Len,
6816         const int open, const int gap,
6817         const parasail_matrix_t *matrix)
6818 {
6819     return parasail_sg_qx_trace_scan_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6820 }
6821 
6822 parasail_result_t* parasail_sg_qx_trace_striped_64(
6823         const char * const restrict s1, const int s1Len,
6824         const char * const restrict s2, const int s2Len,
6825         const int open, const int gap,
6826         const parasail_matrix_t *matrix)
6827 {
6828     return parasail_sg_qx_trace_striped_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6829 }
6830 #endif
6831 
parasail_sg_qx_trace_striped_32(const char * const restrict s1,const int s1Len,const char * const restrict s2,const int s2Len,const int open,const int gap,const parasail_matrix_t * matrix)6832 parasail_result_t* parasail_sg_qx_trace_striped_32(
6833         const char * const restrict s1, const int s1Len,
6834         const char * const restrict s2, const int s2Len,
6835         const int open, const int gap,
6836         const parasail_matrix_t *matrix)
6837 {
6838     return parasail_sg_qx_trace_striped_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6839 }
6840 
parasail_sg_qx_trace_striped_16(const char * const restrict s1,const int s1Len,const char * const restrict s2,const int s2Len,const int open,const int gap,const parasail_matrix_t * matrix)6841 parasail_result_t* parasail_sg_qx_trace_striped_16(
6842         const char * const restrict s1, const int s1Len,
6843         const char * const restrict s2, const int s2Len,
6844         const int open, const int gap,
6845         const parasail_matrix_t *matrix)
6846 {
6847     return parasail_sg_qx_trace_striped_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6848 }
6849 
6850 #if 0
6851 parasail_result_t* parasail_sg_qx_trace_striped_8(
6852         const char * const restrict s1, const int s1Len,
6853         const char * const restrict s2, const int s2Len,
6854         const int open, const int gap,
6855         const parasail_matrix_t *matrix)
6856 {
6857     return parasail_sg_qx_trace_striped_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6858 }
6859 
6860 parasail_result_t* parasail_sg_qx_trace_diag_64(
6861         const char * const restrict s1, const int s1Len,
6862         const char * const restrict s2, const int s2Len,
6863         const int open, const int gap,
6864         const parasail_matrix_t *matrix)
6865 {
6866     return parasail_sg_qx_trace_diag_64_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6867 }
6868 
6869 parasail_result_t* parasail_sg_qx_trace_diag_32(
6870         const char * const restrict s1, const int s1Len,
6871         const char * const restrict s2, const int s2Len,
6872         const int open, const int gap,
6873         const parasail_matrix_t *matrix)
6874 {
6875     return parasail_sg_qx_trace_diag_32_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6876 }
6877 
6878 parasail_result_t* parasail_sg_qx_trace_diag_16(
6879         const char * const restrict s1, const int s1Len,
6880         const char * const restrict s2, const int s2Len,
6881         const int open, const int gap,
6882         const parasail_matrix_t *matrix)
6883 {
6884     return parasail_sg_qx_trace_diag_16_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6885 }
6886 
6887 parasail_result_t* parasail_sg_qx_trace_diag_8(
6888         const char * const restrict s1, const int s1Len,
6889         const char * const restrict s2, const int s2Len,
6890         const int open, const int gap,
6891         const parasail_matrix_t *matrix)
6892 {
6893     return parasail_sg_qx_trace_diag_8_pointer(s1, s1Len, s2, s2Len, open, gap, matrix);
6894 }
6895 
6896 parasail_result_t* parasail_sg_qx_scan_profile_64(
6897         const parasail_profile_t * const restrict profile,
6898         const char * const restrict s2, const int s2Len,
6899         const int open, const int gap)
6900 {
6901     return parasail_sg_qx_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
6902 }
6903 
6904 parasail_result_t* parasail_sg_qx_scan_profile_32(
6905         const parasail_profile_t * const restrict profile,
6906         const char * const restrict s2, const int s2Len,
6907         const int open, const int gap)
6908 {
6909     return parasail_sg_qx_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
6910 }
6911 
6912 parasail_result_t* parasail_sg_qx_scan_profile_16(
6913         const parasail_profile_t * const restrict profile,
6914         const char * const restrict s2, const int s2Len,
6915         const int open, const int gap)
6916 {
6917     return parasail_sg_qx_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
6918 }
6919 
6920 parasail_result_t* parasail_sg_qx_scan_profile_8(
6921         const parasail_profile_t * const restrict profile,
6922         const char * const restrict s2, const int s2Len,
6923         const int open, const int gap)
6924 {
6925     return parasail_sg_qx_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
6926 }
6927 
6928 parasail_result_t* parasail_sg_qx_striped_profile_64(
6929         const parasail_profile_t * const restrict profile,
6930         const char * const restrict s2, const int s2Len,
6931         const int open, const int gap)
6932 {
6933     return parasail_sg_qx_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
6934 }
6935 
6936 parasail_result_t* parasail_sg_qx_striped_profile_32(
6937         const parasail_profile_t * const restrict profile,
6938         const char * const restrict s2, const int s2Len,
6939         const int open, const int gap)
6940 {
6941     return parasail_sg_qx_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
6942 }
6943 
6944 parasail_result_t* parasail_sg_qx_striped_profile_16(
6945         const parasail_profile_t * const restrict profile,
6946         const char * const restrict s2, const int s2Len,
6947         const int open, const int gap)
6948 {
6949     return parasail_sg_qx_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
6950 }
6951 
6952 parasail_result_t* parasail_sg_qx_striped_profile_8(
6953         const parasail_profile_t * const restrict profile,
6954         const char * const restrict s2, const int s2Len,
6955         const int open, const int gap)
6956 {
6957     return parasail_sg_qx_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
6958 }
6959 
6960 parasail_result_t* parasail_sg_qx_stats_scan_profile_64(
6961         const parasail_profile_t * const restrict profile,
6962         const char * const restrict s2, const int s2Len,
6963         const int open, const int gap)
6964 {
6965     return parasail_sg_qx_stats_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
6966 }
6967 
6968 parasail_result_t* parasail_sg_qx_stats_scan_profile_32(
6969         const parasail_profile_t * const restrict profile,
6970         const char * const restrict s2, const int s2Len,
6971         const int open, const int gap)
6972 {
6973     return parasail_sg_qx_stats_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
6974 }
6975 
6976 parasail_result_t* parasail_sg_qx_stats_scan_profile_16(
6977         const parasail_profile_t * const restrict profile,
6978         const char * const restrict s2, const int s2Len,
6979         const int open, const int gap)
6980 {
6981     return parasail_sg_qx_stats_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
6982 }
6983 
6984 parasail_result_t* parasail_sg_qx_stats_scan_profile_8(
6985         const parasail_profile_t * const restrict profile,
6986         const char * const restrict s2, const int s2Len,
6987         const int open, const int gap)
6988 {
6989     return parasail_sg_qx_stats_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
6990 }
6991 
6992 parasail_result_t* parasail_sg_qx_stats_striped_profile_64(
6993         const parasail_profile_t * const restrict profile,
6994         const char * const restrict s2, const int s2Len,
6995         const int open, const int gap)
6996 {
6997     return parasail_sg_qx_stats_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
6998 }
6999 
7000 parasail_result_t* parasail_sg_qx_stats_striped_profile_32(
7001         const parasail_profile_t * const restrict profile,
7002         const char * const restrict s2, const int s2Len,
7003         const int open, const int gap)
7004 {
7005     return parasail_sg_qx_stats_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7006 }
7007 
7008 parasail_result_t* parasail_sg_qx_stats_striped_profile_16(
7009         const parasail_profile_t * const restrict profile,
7010         const char * const restrict s2, const int s2Len,
7011         const int open, const int gap)
7012 {
7013     return parasail_sg_qx_stats_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7014 }
7015 
7016 parasail_result_t* parasail_sg_qx_stats_striped_profile_8(
7017         const parasail_profile_t * const restrict profile,
7018         const char * const restrict s2, const int s2Len,
7019         const int open, const int gap)
7020 {
7021     return parasail_sg_qx_stats_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7022 }
7023 
7024 parasail_result_t* parasail_sg_qx_table_scan_profile_64(
7025         const parasail_profile_t * const restrict profile,
7026         const char * const restrict s2, const int s2Len,
7027         const int open, const int gap)
7028 {
7029     return parasail_sg_qx_table_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
7030 }
7031 
7032 parasail_result_t* parasail_sg_qx_table_scan_profile_32(
7033         const parasail_profile_t * const restrict profile,
7034         const char * const restrict s2, const int s2Len,
7035         const int open, const int gap)
7036 {
7037     return parasail_sg_qx_table_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
7038 }
7039 
7040 parasail_result_t* parasail_sg_qx_table_scan_profile_16(
7041         const parasail_profile_t * const restrict profile,
7042         const char * const restrict s2, const int s2Len,
7043         const int open, const int gap)
7044 {
7045     return parasail_sg_qx_table_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
7046 }
7047 
7048 parasail_result_t* parasail_sg_qx_table_scan_profile_8(
7049         const parasail_profile_t * const restrict profile,
7050         const char * const restrict s2, const int s2Len,
7051         const int open, const int gap)
7052 {
7053     return parasail_sg_qx_table_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
7054 }
7055 
7056 parasail_result_t* parasail_sg_qx_table_striped_profile_64(
7057         const parasail_profile_t * const restrict profile,
7058         const char * const restrict s2, const int s2Len,
7059         const int open, const int gap)
7060 {
7061     return parasail_sg_qx_table_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
7062 }
7063 
7064 parasail_result_t* parasail_sg_qx_table_striped_profile_32(
7065         const parasail_profile_t * const restrict profile,
7066         const char * const restrict s2, const int s2Len,
7067         const int open, const int gap)
7068 {
7069     return parasail_sg_qx_table_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7070 }
7071 
7072 parasail_result_t* parasail_sg_qx_table_striped_profile_16(
7073         const parasail_profile_t * const restrict profile,
7074         const char * const restrict s2, const int s2Len,
7075         const int open, const int gap)
7076 {
7077     return parasail_sg_qx_table_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7078 }
7079 
7080 parasail_result_t* parasail_sg_qx_table_striped_profile_8(
7081         const parasail_profile_t * const restrict profile,
7082         const char * const restrict s2, const int s2Len,
7083         const int open, const int gap)
7084 {
7085     return parasail_sg_qx_table_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7086 }
7087 
7088 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_64(
7089         const parasail_profile_t * const restrict profile,
7090         const char * const restrict s2, const int s2Len,
7091         const int open, const int gap)
7092 {
7093     return parasail_sg_qx_stats_table_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
7094 }
7095 
7096 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_32(
7097         const parasail_profile_t * const restrict profile,
7098         const char * const restrict s2, const int s2Len,
7099         const int open, const int gap)
7100 {
7101     return parasail_sg_qx_stats_table_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
7102 }
7103 
7104 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_16(
7105         const parasail_profile_t * const restrict profile,
7106         const char * const restrict s2, const int s2Len,
7107         const int open, const int gap)
7108 {
7109     return parasail_sg_qx_stats_table_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
7110 }
7111 
7112 parasail_result_t* parasail_sg_qx_stats_table_scan_profile_8(
7113         const parasail_profile_t * const restrict profile,
7114         const char * const restrict s2, const int s2Len,
7115         const int open, const int gap)
7116 {
7117     return parasail_sg_qx_stats_table_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
7118 }
7119 
7120 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_64(
7121         const parasail_profile_t * const restrict profile,
7122         const char * const restrict s2, const int s2Len,
7123         const int open, const int gap)
7124 {
7125     return parasail_sg_qx_stats_table_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
7126 }
7127 
7128 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_32(
7129         const parasail_profile_t * const restrict profile,
7130         const char * const restrict s2, const int s2Len,
7131         const int open, const int gap)
7132 {
7133     return parasail_sg_qx_stats_table_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7134 }
7135 
7136 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_16(
7137         const parasail_profile_t * const restrict profile,
7138         const char * const restrict s2, const int s2Len,
7139         const int open, const int gap)
7140 {
7141     return parasail_sg_qx_stats_table_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7142 }
7143 
7144 parasail_result_t* parasail_sg_qx_stats_table_striped_profile_8(
7145         const parasail_profile_t * const restrict profile,
7146         const char * const restrict s2, const int s2Len,
7147         const int open, const int gap)
7148 {
7149     return parasail_sg_qx_stats_table_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7150 }
7151 
7152 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_64(
7153         const parasail_profile_t * const restrict profile,
7154         const char * const restrict s2, const int s2Len,
7155         const int open, const int gap)
7156 {
7157     return parasail_sg_qx_rowcol_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
7158 }
7159 
7160 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_32(
7161         const parasail_profile_t * const restrict profile,
7162         const char * const restrict s2, const int s2Len,
7163         const int open, const int gap)
7164 {
7165     return parasail_sg_qx_rowcol_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
7166 }
7167 
7168 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_16(
7169         const parasail_profile_t * const restrict profile,
7170         const char * const restrict s2, const int s2Len,
7171         const int open, const int gap)
7172 {
7173     return parasail_sg_qx_rowcol_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
7174 }
7175 
7176 parasail_result_t* parasail_sg_qx_rowcol_scan_profile_8(
7177         const parasail_profile_t * const restrict profile,
7178         const char * const restrict s2, const int s2Len,
7179         const int open, const int gap)
7180 {
7181     return parasail_sg_qx_rowcol_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
7182 }
7183 
7184 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_64(
7185         const parasail_profile_t * const restrict profile,
7186         const char * const restrict s2, const int s2Len,
7187         const int open, const int gap)
7188 {
7189     return parasail_sg_qx_rowcol_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
7190 }
7191 
7192 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_32(
7193         const parasail_profile_t * const restrict profile,
7194         const char * const restrict s2, const int s2Len,
7195         const int open, const int gap)
7196 {
7197     return parasail_sg_qx_rowcol_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7198 }
7199 
7200 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_16(
7201         const parasail_profile_t * const restrict profile,
7202         const char * const restrict s2, const int s2Len,
7203         const int open, const int gap)
7204 {
7205     return parasail_sg_qx_rowcol_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7206 }
7207 
7208 parasail_result_t* parasail_sg_qx_rowcol_striped_profile_8(
7209         const parasail_profile_t * const restrict profile,
7210         const char * const restrict s2, const int s2Len,
7211         const int open, const int gap)
7212 {
7213     return parasail_sg_qx_rowcol_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7214 }
7215 
7216 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_64(
7217         const parasail_profile_t * const restrict profile,
7218         const char * const restrict s2, const int s2Len,
7219         const int open, const int gap)
7220 {
7221     return parasail_sg_qx_stats_rowcol_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
7222 }
7223 
7224 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_32(
7225         const parasail_profile_t * const restrict profile,
7226         const char * const restrict s2, const int s2Len,
7227         const int open, const int gap)
7228 {
7229     return parasail_sg_qx_stats_rowcol_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
7230 }
7231 
7232 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_16(
7233         const parasail_profile_t * const restrict profile,
7234         const char * const restrict s2, const int s2Len,
7235         const int open, const int gap)
7236 {
7237     return parasail_sg_qx_stats_rowcol_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
7238 }
7239 
7240 parasail_result_t* parasail_sg_qx_stats_rowcol_scan_profile_8(
7241         const parasail_profile_t * const restrict profile,
7242         const char * const restrict s2, const int s2Len,
7243         const int open, const int gap)
7244 {
7245     return parasail_sg_qx_stats_rowcol_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
7246 }
7247 
7248 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_64(
7249         const parasail_profile_t * const restrict profile,
7250         const char * const restrict s2, const int s2Len,
7251         const int open, const int gap)
7252 {
7253     return parasail_sg_qx_stats_rowcol_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
7254 }
7255 
7256 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_32(
7257         const parasail_profile_t * const restrict profile,
7258         const char * const restrict s2, const int s2Len,
7259         const int open, const int gap)
7260 {
7261     return parasail_sg_qx_stats_rowcol_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7262 }
7263 
7264 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_16(
7265         const parasail_profile_t * const restrict profile,
7266         const char * const restrict s2, const int s2Len,
7267         const int open, const int gap)
7268 {
7269     return parasail_sg_qx_stats_rowcol_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7270 }
7271 
7272 parasail_result_t* parasail_sg_qx_stats_rowcol_striped_profile_8(
7273         const parasail_profile_t * const restrict profile,
7274         const char * const restrict s2, const int s2Len,
7275         const int open, const int gap)
7276 {
7277     return parasail_sg_qx_stats_rowcol_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7278 }
7279 
7280 parasail_result_t* parasail_sg_qx_trace_scan_profile_64(
7281         const parasail_profile_t * const restrict profile,
7282         const char * const restrict s2, const int s2Len,
7283         const int open, const int gap)
7284 {
7285     return parasail_sg_qx_trace_scan_profile_64_pointer(profile, s2, s2Len, open, gap);
7286 }
7287 
7288 parasail_result_t* parasail_sg_qx_trace_scan_profile_32(
7289         const parasail_profile_t * const restrict profile,
7290         const char * const restrict s2, const int s2Len,
7291         const int open, const int gap)
7292 {
7293     return parasail_sg_qx_trace_scan_profile_32_pointer(profile, s2, s2Len, open, gap);
7294 }
7295 
7296 parasail_result_t* parasail_sg_qx_trace_scan_profile_16(
7297         const parasail_profile_t * const restrict profile,
7298         const char * const restrict s2, const int s2Len,
7299         const int open, const int gap)
7300 {
7301     return parasail_sg_qx_trace_scan_profile_16_pointer(profile, s2, s2Len, open, gap);
7302 }
7303 
7304 parasail_result_t* parasail_sg_qx_trace_scan_profile_8(
7305         const parasail_profile_t * const restrict profile,
7306         const char * const restrict s2, const int s2Len,
7307         const int open, const int gap)
7308 {
7309     return parasail_sg_qx_trace_scan_profile_8_pointer(profile, s2, s2Len, open, gap);
7310 }
7311 
7312 parasail_result_t* parasail_sg_qx_trace_striped_profile_64(
7313         const parasail_profile_t * const restrict profile,
7314         const char * const restrict s2, const int s2Len,
7315         const int open, const int gap)
7316 {
7317     return parasail_sg_qx_trace_striped_profile_64_pointer(profile, s2, s2Len, open, gap);
7318 }
7319 
7320 parasail_result_t* parasail_sg_qx_trace_striped_profile_32(
7321         const parasail_profile_t * const restrict profile,
7322         const char * const restrict s2, const int s2Len,
7323         const int open, const int gap)
7324 {
7325     return parasail_sg_qx_trace_striped_profile_32_pointer(profile, s2, s2Len, open, gap);
7326 }
7327 
7328 parasail_result_t* parasail_sg_qx_trace_striped_profile_16(
7329         const parasail_profile_t * const restrict profile,
7330         const char * const restrict s2, const int s2Len,
7331         const int open, const int gap)
7332 {
7333     return parasail_sg_qx_trace_striped_profile_16_pointer(profile, s2, s2Len, open, gap);
7334 }
7335 
7336 parasail_result_t* parasail_sg_qx_trace_striped_profile_8(
7337         const parasail_profile_t * const restrict profile,
7338         const char * const restrict s2, const int s2Len,
7339         const int open, const int gap)
7340 {
7341     return parasail_sg_qx_trace_striped_profile_8_pointer(profile, s2, s2Len, open, gap);
7342 }
7343 #endif
7344