mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-21 04:34:47 +03:00
SIMD Filter. consider last pixel in AVX
This commit is contained in:
parent
9f53dfef57
commit
92c591016e
|
@ -374,6 +374,21 @@ ImagingFilter3x3(Imaging imOut, Imaging im, const float* kernel,
|
||||||
|
|
||||||
MM256_PERMUTE(0, 0, 1, 0x21);
|
MM256_PERMUTE(0, 0, 1, 0x21);
|
||||||
}
|
}
|
||||||
|
for (; x < im->xsize-1; x++) {
|
||||||
|
__m128 pix00, pix10, pix20;
|
||||||
|
__m128 ss = _mm_set1_ps(offset);
|
||||||
|
__m128i ssi0;
|
||||||
|
MM_KERNEL1x3_LOAD(0, x-1);
|
||||||
|
MM_KERNEL1x3_SUM(0, 0);
|
||||||
|
MM_KERNEL1x3_LOAD(0, x+0);
|
||||||
|
MM_KERNEL1x3_SUM(0, 1);
|
||||||
|
MM_KERNEL1x3_LOAD(0, x+1);
|
||||||
|
MM_KERNEL1x3_SUM(0, 2);
|
||||||
|
ssi0 = _mm_cvtps_epi32(ss);
|
||||||
|
ssi0 = _mm_packs_epi32(ssi0, ssi0);
|
||||||
|
ssi0 = _mm_packus_epi16(ssi0, ssi0);
|
||||||
|
out[x] = _mm_cvtsi128_si32(ssi0);
|
||||||
|
}
|
||||||
out[x] = in0[x];
|
out[x] = in0[x];
|
||||||
#else
|
#else
|
||||||
__m128 pix00, pix10, pix20;
|
__m128 pix00, pix10, pix20;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user