@@ -129,7 +129,7 @@ void spatialGradient( InputArray _src, OutputArray _dx, OutputArray _dy,
129
129
130
130
int i_start = 0 ;
131
131
int j_start = 0 ;
132
- #if CV_SIMD128 && CV_SSE2
132
+ #if CV_SIMD128
133
133
if (hasSIMD128 ())
134
134
{
135
135
uchar *m_src;
@@ -160,18 +160,13 @@ void spatialGradient( InputArray _src, OutputArray _dx, OutputArray _dy,
160
160
n_dx = dx.ptr <short >(i+1 );
161
161
n_dy = dy.ptr <short >(i+1 );
162
162
163
- v_uint8x16 v_select_m = v_uint8x16 (0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
164
- 0 , 0 , 0 , 0xFF );
165
-
166
163
// Process rest of columns 16-column chunks at a time
167
164
for ( j = 1 ; j < W - 16 ; j += 16 )
168
165
{
169
166
// Load top row for 3x3 Sobel filter
170
167
v_uint8x16 v_um = v_load (&p_src[j-1 ]);
168
+ v_uint8x16 v_un = v_load (&p_src[j]);
171
169
v_uint8x16 v_up = v_load (&p_src[j+1 ]);
172
- // TODO: Replace _mm_slli_si128 with hal method
173
- v_uint8x16 v_un = v_select (v_select_m, v_uint8x16 (_mm_slli_si128 (v_up.val , 1 )),
174
- v_uint8x16 (_mm_srli_si128 (v_um.val , 1 )));
175
170
v_uint16x8 v_um1, v_um2, v_un1, v_un2, v_up1, v_up2;
176
171
v_expand (v_um, v_um1, v_um2);
177
172
v_expand (v_un, v_un1, v_un2);
@@ -185,10 +180,8 @@ void spatialGradient( InputArray _src, OutputArray _dx, OutputArray _dy,
185
180
186
181
// Load second row for 3x3 Sobel filter
187
182
v_um = v_load (&c_src[j-1 ]);
183
+ v_un = v_load (&c_src[j]);
188
184
v_up = v_load (&c_src[j+1 ]);
189
- // TODO: Replace _mm_slli_si128 with hal method
190
- v_un = v_select (v_select_m, v_uint8x16 (_mm_slli_si128 (v_up.val , 1 )),
191
- v_uint8x16 (_mm_srli_si128 (v_um.val , 1 )));
192
185
v_expand (v_um, v_um1, v_um2);
193
186
v_expand (v_un, v_un1, v_un2);
194
187
v_expand (v_up, v_up1, v_up2);
@@ -201,10 +194,8 @@ void spatialGradient( InputArray _src, OutputArray _dx, OutputArray _dy,
201
194
202
195
// Load third row for 3x3 Sobel filter
203
196
v_um = v_load (&n_src[j-1 ]);
197
+ v_un = v_load (&n_src[j]);
204
198
v_up = v_load (&n_src[j+1 ]);
205
- // TODO: Replace _mm_slli_si128 with hal method
206
- v_un = v_select (v_select_m, v_uint8x16 (_mm_slli_si128 (v_up.val , 1 )),
207
- v_uint8x16 (_mm_srli_si128 (v_um.val , 1 )));
208
199
v_expand (v_um, v_um1, v_um2);
209
200
v_expand (v_un, v_un1, v_un2);
210
201
v_expand (v_up, v_up1, v_up2);
@@ -236,10 +227,8 @@ void spatialGradient( InputArray _src, OutputArray _dx, OutputArray _dy,
236
227
237
228
// Load fourth row for 3x3 Sobel filter
238
229
v_um = v_load (&m_src[j-1 ]);
230
+ v_un = v_load (&m_src[j]);
239
231
v_up = v_load (&m_src[j+1 ]);
240
- // TODO: Replace _mm_slli_si128 with hal method
241
- v_un = v_select (v_select_m, v_uint8x16 (_mm_slli_si128 (v_up.val , 1 )),
242
- v_uint8x16 (_mm_srli_si128 (v_um.val , 1 )));
243
232
v_expand (v_um, v_um1, v_um2);
244
233
v_expand (v_un, v_un1, v_un2);
245
234
v_expand (v_up, v_up1, v_up2);
0 commit comments