KleidiCV Coverage Report


Directory: ./
File: kleidicv/src/filters/median_blur_sorting_network_7x7.h
Date: 2025-09-25 14:13:34
Exec Total Coverage
Lines: 290 290 100.0%
Functions: 28 28 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 // SPDX-FileCopyrightText: 2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 #ifndef KLEIDICV_MEDIAN_BLUR_SORTING_NETWORK_7X7_H
6 #define KLEIDICV_MEDIAN_BLUR_SORTING_NETWORK_7X7_H
7
8 #include <algorithm>
9
10 #include "kleidicv/kleidicv.h"
11 #include "kleidicv/traits.h"
12
13 namespace KLEIDICV_TARGET_NAMESPACE {
14 // A. Adams, "Fast Median Filters using Separable Sorting Networks,"
15 // available at: https://andrew.adams.pub/fast_median_filters.pdf
16 template <class Comparator, typename KernelWindowFunctor, typename T,
17 typename ContextType>
18 189568 void sorting_network7x7(KernelWindowFunctor& KernelWindow, T& output_vec,
19 ContextType& context) KLEIDICV_STREAMING {
20 189568 Comparator::compare_and_swap(KernelWindow(0, 0), KernelWindow(6, 0), context);
21 189568 Comparator::compare_and_swap(KernelWindow(2, 0), KernelWindow(3, 0), context);
22 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(5, 0), context);
23 189568 Comparator::compare_and_swap(KernelWindow(0, 0), KernelWindow(2, 0), context);
24 189568 Comparator::compare_and_swap(KernelWindow(1, 0), KernelWindow(4, 0), context);
25 189568 Comparator::compare_and_swap(KernelWindow(3, 0), KernelWindow(6, 0), context);
26 189568 Comparator::compare_and_swap(KernelWindow(0, 0), KernelWindow(1, 0), context);
27 189568 Comparator::compare_and_swap(KernelWindow(2, 0), KernelWindow(5, 0), context);
28 189568 Comparator::compare_and_swap(KernelWindow(3, 0), KernelWindow(4, 0), context);
29 189568 Comparator::compare_and_swap(KernelWindow(1, 0), KernelWindow(2, 0), context);
30 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(6, 0), context);
31 189568 Comparator::compare_and_swap(KernelWindow(2, 0), KernelWindow(3, 0), context);
32 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(5, 0), context);
33 189568 Comparator::compare_and_swap(KernelWindow(1, 0), KernelWindow(2, 0), context);
34 189568 Comparator::compare_and_swap(KernelWindow(3, 0), KernelWindow(4, 0), context);
35 189568 Comparator::compare_and_swap(KernelWindow(5, 0), KernelWindow(6, 0), context);
36
37 189568 Comparator::compare_and_swap(KernelWindow(0, 1), KernelWindow(6, 1), context);
38 189568 Comparator::compare_and_swap(KernelWindow(2, 1), KernelWindow(3, 1), context);
39 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(5, 1), context);
40 189568 Comparator::compare_and_swap(KernelWindow(0, 1), KernelWindow(2, 1), context);
41 189568 Comparator::compare_and_swap(KernelWindow(1, 1), KernelWindow(4, 1), context);
42 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(6, 1), context);
43 189568 Comparator::compare_and_swap(KernelWindow(0, 1), KernelWindow(1, 1), context);
44 189568 Comparator::compare_and_swap(KernelWindow(2, 1), KernelWindow(5, 1), context);
45 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(4, 1), context);
46 189568 Comparator::compare_and_swap(KernelWindow(1, 1), KernelWindow(2, 1), context);
47 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(6, 1), context);
48 189568 Comparator::compare_and_swap(KernelWindow(2, 1), KernelWindow(3, 1), context);
49 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(5, 1), context);
50 189568 Comparator::compare_and_swap(KernelWindow(1, 1), KernelWindow(2, 1), context);
51 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(4, 1), context);
52 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(6, 1), context);
53
54 189568 Comparator::compare_and_swap(KernelWindow(0, 2), KernelWindow(6, 2), context);
55 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(3, 2), context);
56 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(5, 2), context);
57 189568 Comparator::compare_and_swap(KernelWindow(0, 2), KernelWindow(2, 2), context);
58 189568 Comparator::compare_and_swap(KernelWindow(1, 2), KernelWindow(4, 2), context);
59 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(6, 2), context);
60 189568 Comparator::compare_and_swap(KernelWindow(0, 2), KernelWindow(1, 2), context);
61 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(5, 2), context);
62 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(4, 2), context);
63 189568 Comparator::compare_and_swap(KernelWindow(1, 2), KernelWindow(2, 2), context);
64 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(6, 2), context);
65 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(3, 2), context);
66 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(5, 2), context);
67 189568 Comparator::compare_and_swap(KernelWindow(1, 2), KernelWindow(2, 2), context);
68 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(4, 2), context);
69 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(6, 2), context);
70
71 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(6, 3), context);
72 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(3, 3), context);
73 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(5, 3), context);
74 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(2, 3), context);
75 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(4, 3), context);
76 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(6, 3), context);
77 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(1, 3), context);
78 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(5, 3), context);
79 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(4, 3), context);
80 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(2, 3), context);
81 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(6, 3), context);
82 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(3, 3), context);
83 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(5, 3), context);
84 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(2, 3), context);
85 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(4, 3), context);
86 189568 Comparator::compare_and_swap(KernelWindow(5, 3), KernelWindow(6, 3), context);
87
88 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(6, 4), context);
89 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(3, 4), context);
90 189568 Comparator::compare_and_swap(KernelWindow(4, 4), KernelWindow(5, 4), context);
91 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(2, 4), context);
92 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(4, 4), context);
93 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(6, 4), context);
94 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(1, 4), context);
95 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(5, 4), context);
96 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(4, 4), context);
97 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(2, 4), context);
98 189568 Comparator::compare_and_swap(KernelWindow(4, 4), KernelWindow(6, 4), context);
99 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(3, 4), context);
100 189568 Comparator::compare_and_swap(KernelWindow(4, 4), KernelWindow(5, 4), context);
101 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(2, 4), context);
102 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(4, 4), context);
103 189568 Comparator::compare_and_swap(KernelWindow(5, 4), KernelWindow(6, 4), context);
104
105 189568 Comparator::compare_and_swap(KernelWindow(0, 5), KernelWindow(6, 5), context);
106 189568 Comparator::compare_and_swap(KernelWindow(2, 5), KernelWindow(3, 5), context);
107 189568 Comparator::compare_and_swap(KernelWindow(4, 5), KernelWindow(5, 5), context);
108 189568 Comparator::compare_and_swap(KernelWindow(0, 5), KernelWindow(2, 5), context);
109 189568 Comparator::compare_and_swap(KernelWindow(1, 5), KernelWindow(4, 5), context);
110 189568 Comparator::compare_and_swap(KernelWindow(3, 5), KernelWindow(6, 5), context);
111 189568 Comparator::compare_and_swap(KernelWindow(0, 5), KernelWindow(1, 5), context);
112 189568 Comparator::compare_and_swap(KernelWindow(2, 5), KernelWindow(5, 5), context);
113 189568 Comparator::compare_and_swap(KernelWindow(3, 5), KernelWindow(4, 5), context);
114 189568 Comparator::compare_and_swap(KernelWindow(1, 5), KernelWindow(2, 5), context);
115 189568 Comparator::compare_and_swap(KernelWindow(4, 5), KernelWindow(6, 5), context);
116 189568 Comparator::compare_and_swap(KernelWindow(2, 5), KernelWindow(3, 5), context);
117 189568 Comparator::compare_and_swap(KernelWindow(4, 5), KernelWindow(5, 5), context);
118 189568 Comparator::compare_and_swap(KernelWindow(1, 5), KernelWindow(2, 5), context);
119 189568 Comparator::compare_and_swap(KernelWindow(3, 5), KernelWindow(4, 5), context);
120 189568 Comparator::compare_and_swap(KernelWindow(5, 5), KernelWindow(6, 5), context);
121
122 189568 Comparator::compare_and_swap(KernelWindow(0, 6), KernelWindow(6, 6), context);
123 189568 Comparator::compare_and_swap(KernelWindow(2, 6), KernelWindow(3, 6), context);
124 189568 Comparator::compare_and_swap(KernelWindow(4, 6), KernelWindow(5, 6), context);
125 189568 Comparator::compare_and_swap(KernelWindow(0, 6), KernelWindow(2, 6), context);
126 189568 Comparator::compare_and_swap(KernelWindow(1, 6), KernelWindow(4, 6), context);
127 189568 Comparator::compare_and_swap(KernelWindow(3, 6), KernelWindow(6, 6), context);
128 189568 Comparator::compare_and_swap(KernelWindow(0, 6), KernelWindow(1, 6), context);
129 189568 Comparator::compare_and_swap(KernelWindow(2, 6), KernelWindow(5, 6), context);
130 189568 Comparator::compare_and_swap(KernelWindow(3, 6), KernelWindow(4, 6), context);
131 189568 Comparator::compare_and_swap(KernelWindow(1, 6), KernelWindow(2, 6), context);
132 189568 Comparator::compare_and_swap(KernelWindow(4, 6), KernelWindow(6, 6), context);
133 189568 Comparator::compare_and_swap(KernelWindow(2, 6), KernelWindow(3, 6), context);
134 189568 Comparator::compare_and_swap(KernelWindow(4, 6), KernelWindow(5, 6), context);
135 189568 Comparator::compare_and_swap(KernelWindow(1, 6), KernelWindow(2, 6), context);
136 189568 Comparator::compare_and_swap(KernelWindow(3, 6), KernelWindow(4, 6), context);
137 189568 Comparator::compare_and_swap(KernelWindow(5, 6), KernelWindow(6, 6), context);
138
139 // sort row 0 for element 4, 5, 6
140 189568 Comparator::compare_and_swap(KernelWindow(0, 0), KernelWindow(0, 6), context);
141 189568 Comparator::compare_and_swap(KernelWindow(0, 2), KernelWindow(0, 3), context);
142 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(0, 5), context);
143 189568 Comparator::compare_and_swap(KernelWindow(0, 0), KernelWindow(0, 2), context);
144 189568 Comparator::compare_and_swap(KernelWindow(0, 1), KernelWindow(0, 4), context);
145 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(0, 6), context);
146 189568 Comparator::max(KernelWindow(0, 0), KernelWindow(0, 1), context);
147 189568 Comparator::compare_and_swap(KernelWindow(0, 2), KernelWindow(0, 5), context);
148 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(0, 4), context);
149 189568 Comparator::max(KernelWindow(0, 1), KernelWindow(0, 2), context);
150 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(0, 6), context);
151 189568 Comparator::max(KernelWindow(0, 2), KernelWindow(0, 3), context);
152 189568 Comparator::compare_and_swap(KernelWindow(0, 4), KernelWindow(0, 5), context);
153 189568 Comparator::compare_and_swap(KernelWindow(0, 3), KernelWindow(0, 4), context);
154 189568 Comparator::compare_and_swap(KernelWindow(0, 5), KernelWindow(0, 6), context);
155 // sort row 1 for element 3, 4, 5, 6
156 189568 Comparator::compare_and_swap(KernelWindow(1, 0), KernelWindow(1, 6), context);
157 189568 Comparator::compare_and_swap(KernelWindow(1, 2), KernelWindow(1, 3), context);
158 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(1, 5), context);
159 189568 Comparator::compare_and_swap(KernelWindow(1, 1), KernelWindow(1, 4), context);
160 189568 Comparator::compare_and_swap(KernelWindow(1, 0), KernelWindow(1, 2), context);
161 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(1, 6), context);
162 189568 Comparator::max(KernelWindow(1, 0), KernelWindow(1, 1), context);
163 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(1, 4), context);
164 189568 Comparator::compare_and_swap(KernelWindow(1, 2), KernelWindow(1, 5), context);
165 189568 Comparator::max(KernelWindow(1, 1), KernelWindow(1, 2), context);
166 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(1, 6), context);
167 189568 Comparator::max(KernelWindow(1, 2), KernelWindow(1, 3), context);
168 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(1, 5), context);
169 189568 Comparator::compare_and_swap(KernelWindow(1, 3), KernelWindow(1, 4), context);
170 189568 Comparator::compare_and_swap(KernelWindow(1, 5), KernelWindow(1, 6), context);
171 // sort row 2 for element 2, 3, 4, 5, 6
172 189568 Comparator::compare_and_swap(KernelWindow(2, 0), KernelWindow(2, 6), context);
173 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(2, 3), context);
174 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(2, 5), context);
175 189568 Comparator::compare_and_swap(KernelWindow(2, 1), KernelWindow(2, 4), context);
176 189568 Comparator::compare_and_swap(KernelWindow(2, 0), KernelWindow(2, 2), context);
177 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(2, 6), context);
178 189568 Comparator::max(KernelWindow(2, 0), KernelWindow(2, 1), context);
179 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(2, 4), context);
180 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(2, 5), context);
181 189568 Comparator::compare_and_swap(KernelWindow(2, 1), KernelWindow(2, 2), context);
182 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(2, 6), context);
183 189568 Comparator::compare_and_swap(KernelWindow(2, 2), KernelWindow(2, 3), context);
184 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(2, 5), context);
185 189568 Comparator::max(KernelWindow(2, 1), KernelWindow(2, 2), context);
186 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(2, 4), context);
187 189568 Comparator::compare_and_swap(KernelWindow(2, 5), KernelWindow(2, 6), context);
188 // sort row 3 for element 1, 2, 3, 4, 5
189 189568 Comparator::compare_and_swap(KernelWindow(3, 0), KernelWindow(3, 6), context);
190 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(3, 3), context);
191 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(3, 5), context);
192 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(3, 4), context);
193 189568 Comparator::compare_and_swap(KernelWindow(3, 0), KernelWindow(3, 2), context);
194 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(3, 6), context);
195 189568 Comparator::max(KernelWindow(3, 0), KernelWindow(3, 1), context);
196 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(3, 4), context);
197 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(3, 5), context);
198 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(3, 2), context);
199 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(3, 6), context);
200 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(3, 3), context);
201 189568 Comparator::compare_and_swap(KernelWindow(3, 4), KernelWindow(3, 5), context);
202 189568 Comparator::compare_and_swap(KernelWindow(3, 1), KernelWindow(3, 2), context);
203 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(3, 4), context);
204 189568 Comparator::min(KernelWindow(3, 5), KernelWindow(3, 6), context);
205 // sort row 4 for element 0, 1, 2, 3, 4
206 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(4, 6), context);
207 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(4, 3), context);
208 189568 Comparator::compare_and_swap(KernelWindow(4, 4), KernelWindow(4, 5), context);
209 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(4, 4), context);
210 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(4, 2), context);
211 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(4, 6), context);
212 189568 Comparator::compare_and_swap(KernelWindow(4, 0), KernelWindow(4, 1), context);
213 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(4, 4), context);
214 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(4, 5), context);
215 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(4, 2), context);
216 189568 Comparator::min(KernelWindow(4, 4), KernelWindow(4, 6), context);
217 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(4, 3), context);
218 189568 Comparator::min(KernelWindow(4, 4), KernelWindow(4, 5), context);
219 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(4, 2), context);
220 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(4, 4), context);
221 // sort row 5 for element 0, 1, 2, 3
222 189568 Comparator::compare_and_swap(KernelWindow(5, 0), KernelWindow(5, 6), context);
223 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(5, 3), context);
224 189568 Comparator::compare_and_swap(KernelWindow(5, 4), KernelWindow(5, 5), context);
225 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(5, 4), context);
226 189568 Comparator::compare_and_swap(KernelWindow(5, 0), KernelWindow(5, 2), context);
227 189568 Comparator::compare_and_swap(KernelWindow(5, 3), KernelWindow(5, 6), context);
228 189568 Comparator::compare_and_swap(KernelWindow(5, 0), KernelWindow(5, 1), context);
229 189568 Comparator::compare_and_swap(KernelWindow(5, 3), KernelWindow(5, 4), context);
230 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(5, 5), context);
231 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(5, 2), context);
232 189568 Comparator::min(KernelWindow(5, 4), KernelWindow(5, 6), context);
233 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(5, 3), context);
234 189568 Comparator::min(KernelWindow(5, 4), KernelWindow(5, 5), context);
235 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(5, 2), context);
236 189568 Comparator::min(KernelWindow(5, 3), KernelWindow(5, 4), context);
237 // sort row 6 for element 0, 1, 2
238 189568 Comparator::compare_and_swap(KernelWindow(6, 0), KernelWindow(6, 6), context);
239 189568 Comparator::compare_and_swap(KernelWindow(6, 2), KernelWindow(6, 3), context);
240 189568 Comparator::compare_and_swap(KernelWindow(6, 4), KernelWindow(6, 5), context);
241 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(6, 4), context);
242 189568 Comparator::compare_and_swap(KernelWindow(6, 0), KernelWindow(6, 2), context);
243 189568 Comparator::min(KernelWindow(6, 3), KernelWindow(6, 6), context);
244 189568 Comparator::compare_and_swap(KernelWindow(6, 0), KernelWindow(6, 1), context);
245 189568 Comparator::min(KernelWindow(6, 3), KernelWindow(6, 4), context);
246 189568 Comparator::min(KernelWindow(6, 2), KernelWindow(6, 5), context);
247 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(6, 2), context);
248 189568 Comparator::min(KernelWindow(6, 2), KernelWindow(6, 3), context);
249 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(6, 2), context);
250
251 // sort digonal 0
252 189568 Comparator::max(KernelWindow(1, 3), KernelWindow(2, 2), context);
253 189568 Comparator::max(KernelWindow(3, 1), KernelWindow(4, 0), context);
254 189568 Comparator::max(KernelWindow(2, 2), KernelWindow(4, 0), context);
255 189568 Comparator::max(KernelWindow(4, 0), KernelWindow(0, 4), context);
256 // sort digonal 1
257 189568 Comparator::compare_and_swap(KernelWindow(4, 1), KernelWindow(2, 3), context);
258 189568 Comparator::compare_and_swap(KernelWindow(5, 0), KernelWindow(0, 5), context);
259 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(1, 4), context);
260 189568 Comparator::max(KernelWindow(4, 1), KernelWindow(3, 2), context);
261 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(1, 4), context);
262 189568 Comparator::max(KernelWindow(5, 0), KernelWindow(2, 3), context);
263 189568 Comparator::compare_and_swap(KernelWindow(3, 2), KernelWindow(0, 5), context);
264 189568 Comparator::max(KernelWindow(3, 2), KernelWindow(2, 3), context);
265 189568 Comparator::compare_and_swap(KernelWindow(1, 4), KernelWindow(0, 5), context);
266 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(1, 4), context);
267 // sort digonal 2
268 189568 Comparator::compare_and_swap(KernelWindow(6, 0), KernelWindow(0, 6), context);
269 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(3, 3), context);
270 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(1, 5), context);
271 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(2, 4), context);
272 189568 Comparator::compare_and_swap(KernelWindow(6, 0), KernelWindow(4, 2), context);
273 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(0, 6), context);
274 189568 Comparator::max(KernelWindow(6, 0), KernelWindow(5, 1), context);
275 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(2, 4), context);
276 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(1, 5), context);
277 189568 Comparator::compare_and_swap(KernelWindow(5, 1), KernelWindow(4, 2), context);
278 189568 Comparator::min(KernelWindow(2, 4), KernelWindow(0, 6), context);
279 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(3, 3), context);
280 189568 Comparator::min(KernelWindow(2, 4), KernelWindow(1, 5), context);
281 189568 Comparator::max(KernelWindow(5, 1), KernelWindow(4, 2), context);
282 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(2, 4), context);
283 // sort digonal 3
284 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(3, 4), context);
285 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(1, 6), context);
286 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(2, 5), context);
287 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(4, 3), context);
288 189568 Comparator::min(KernelWindow(3, 4), KernelWindow(2, 5), context);
289 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(3, 4), context);
290 189568 Comparator::min(KernelWindow(4, 3), KernelWindow(1, 6), context);
291 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(5, 2), context);
292 189568 Comparator::min(KernelWindow(4, 3), KernelWindow(3, 4), context);
293 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(4, 3), context);
294 // sort digonal 4
295 189568 Comparator::min(KernelWindow(5, 3), KernelWindow(4, 4), context);
296 189568 Comparator::min(KernelWindow(3, 5), KernelWindow(2, 6), context);
297 189568 Comparator::min(KernelWindow(5, 3), KernelWindow(3, 5), context);
298 189568 Comparator::min(KernelWindow(6, 2), KernelWindow(5, 3), context);
299
300 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(0, 4), context);
301 189568 Comparator::compare_and_swap(KernelWindow(6, 2), KernelWindow(2, 3), context);
302 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(4, 3), context);
303 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(2, 4), context);
304 189568 Comparator::compare_and_swap(KernelWindow(3, 3), KernelWindow(1, 4), context);
305 189568 Comparator::compare_and_swap(KernelWindow(6, 1), KernelWindow(6, 2), context);
306 189568 Comparator::compare_and_swap(KernelWindow(4, 2), KernelWindow(3, 3), context);
307 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(0, 5), context);
308 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(0, 4), context);
309 189568 Comparator::compare_and_swap(KernelWindow(2, 4), KernelWindow(1, 4), context);
310 189568 Comparator::compare_and_swap(KernelWindow(6, 2), KernelWindow(4, 2), context);
311 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(3, 3), context);
312 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(2, 4), context);
313 189568 Comparator::min(KernelWindow(1, 4), KernelWindow(0, 5), context);
314 189568 Comparator::max(KernelWindow(6, 1), KernelWindow(4, 3), context);
315 189568 Comparator::compare_and_swap(KernelWindow(6, 2), KernelWindow(5, 2), context);
316 189568 Comparator::max(KernelWindow(4, 2), KernelWindow(2, 4), context);
317 189568 Comparator::min(KernelWindow(3, 3), KernelWindow(0, 4), context);
318 189568 Comparator::compare_and_swap(KernelWindow(2, 3), KernelWindow(1, 4), context);
319 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(2, 3), context);
320 189568 Comparator::compare_and_swap(KernelWindow(4, 3), KernelWindow(3, 3), context);
321 189568 Comparator::min(KernelWindow(2, 4), KernelWindow(1, 4), context);
322 189568 Comparator::compare_and_swap(KernelWindow(5, 2), KernelWindow(4, 3), context);
323 189568 Comparator::max(KernelWindow(4, 2), KernelWindow(2, 3), context);
324 189568 Comparator::min(KernelWindow(3, 3), KernelWindow(2, 4), context);
325 189568 Comparator::max(KernelWindow(4, 2), KernelWindow(4, 3), context);
326 189568 Comparator::min(KernelWindow(3, 3), KernelWindow(2, 3), context);
327 189568 Comparator::max(KernelWindow(4, 3), KernelWindow(3, 3), context);
328
329 189568 output_vec = KernelWindow(3, 3);
330 189568 }
331 } // namespace KLEIDICV_TARGET_NAMESPACE
332
333 #endif // KLEIDICV_MEDIAN_BLUR_SORTING_NETWORK_7X7_H
334