Skip to content

Commit e86d6c8

Browse files
committed
This completes the AVX512 code.
1 parent 1383f9b commit e86d6c8

File tree

3 files changed

+716
-193
lines changed

3 files changed

+716
-193
lines changed

src/core/transform/ojph_transform_avx2.cpp

Lines changed: 2 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -371,34 +371,6 @@ namespace ojph {
371371
else
372372
for (ui32 i = repeat; i > 0; --i)
373373
*dst++ += (b + a * (*src1++ + *src2++)) >> e;
374-
375-
// int i = (int)repeat;
376-
// if (synthesis)
377-
// for (; i > 0; i -= 4, dst += 4, src1 += 4, src2 += 4)
378-
// {
379-
// __m256i s1 = _mm256_load_si256((__m256i*)src1);
380-
// __m256i s2 = _mm256_load_si256((__m256i*)src2);
381-
// __m256i d = _mm256_load_si256((__m256i*)dst);
382-
// __m256i t = _mm256_add_epi64(s1, s2);
383-
// __m256i u = _mm256_mullo_epi64(va, t);
384-
// __m256i v = _mm256_add_epi64(vb, u);
385-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
386-
// d = _mm256_sub_epi64(d, w);
387-
// _mm256_store_si256((__m256i*)dst, d);
388-
// }
389-
// else
390-
// for (; i > 0; i -= 4, dst += 4, src1 += 4, src2 += 4)
391-
// {
392-
// __m256i s1 = _mm256_load_si256((__m256i*)src1);
393-
// __m256i s2 = _mm256_load_si256((__m256i*)src2);
394-
// __m256i d = _mm256_load_si256((__m256i*)dst);
395-
// __m256i t = _mm256_add_epi64(s1, s2);
396-
// __m256i u = _mm256_mullo_epi64(va, t);
397-
// __m256i v = _mm256_add_epi64(vb, u);
398-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
399-
// d = _mm256_add_epi64(d, w);
400-
// _mm256_store_si256((__m256i*)dst, d);
401-
// }
402374
}
403375
}
404376

@@ -433,7 +405,7 @@ namespace ojph {
433405
{
434406
if (width > 1)
435407
{
436-
// combine both lsrc and hsrc into dst
408+
// split src into ldst and hdst
437409
{
438410
float* dpl = even ? ldst->f32 : hdst->f32;
439411
float* dph = even ? hdst->f32 : ldst->f32;
@@ -601,7 +573,7 @@ namespace ojph {
601573
{
602574
if (width > 1)
603575
{
604-
// combine both lsrc and hsrc into dst
576+
// split src into ldst and hdst
605577
{
606578
double* dpl = (double*)(even ? ldst->p : hdst->p);
607579
double* dph = (double*)(even ? hdst->p : ldst->p);
@@ -726,34 +698,6 @@ namespace ojph {
726698
else
727699
for (ui32 i = h_width; i > 0; --i, sp++, dp++)
728700
*dp += (b + a * (sp[-1] + sp[0])) >> e;
729-
730-
// int i = (int)h_width;
731-
// if (even)
732-
// for (; i > 0; i -= 4, sp += 4, dp += 4)
733-
// {
734-
// __m256i s1 = _mm256_load_si256((__m256i*)sp);
735-
// __m256i s2 = _mm256_loadu_si256((__m256i*)(sp + 1));
736-
// __m256i d = _mm256_load_si256((__m256i*)dp);
737-
// __m256i t = _mm256_add_epi64(s1, s2);
738-
// __m256i u = _mm256_mullo_epi64(va, t);
739-
// __m256i v = _mm256_add_epi64(vb, u);
740-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
741-
// d = _mm256_add_epi64(d, w);
742-
// _mm256_store_si256((__m256i*)dp, d);
743-
// }
744-
// else
745-
// for (; i > 0; i -= 4, sp += 4, dp += 4)
746-
// {
747-
// __m256i s1 = _mm256_load_si256((__m256i*)sp);
748-
// __m256i s2 = _mm256_loadu_si256((__m256i*)(sp - 1));
749-
// __m256i d = _mm256_load_si256((__m256i*)dp);
750-
// __m256i t = _mm256_add_epi64(s1, s2);
751-
// __m256i u = _mm256_mullo_epi64(va, t);
752-
// __m256i v = _mm256_add_epi64(vb, u);
753-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
754-
// d = _mm256_add_epi64(d, w);
755-
// _mm256_store_si256((__m256i*)dp, d);
756-
// }
757701
}
758702

759703
// swap buffers
@@ -1082,34 +1026,6 @@ namespace ojph {
10821026
else
10831027
for (ui32 i = aug_width; i > 0; --i, sp++, dp++)
10841028
*dp -= (b + a * (sp[0] + sp[1])) >> e;
1085-
1086-
// int i = (int)aug_width;
1087-
// if (ev)
1088-
// for (; i > 0; i -= 4, sp += 4, dp += 4)
1089-
// {
1090-
// __m256i s1 = _mm256_load_si256((__m256i*)sp);
1091-
// __m256i s2 = _mm256_loadu_si256((__m256i*)(sp - 1));
1092-
// __m256i d = _mm256_load_si256((__m256i*)dp);
1093-
// __m256i t = _mm256_add_epi64(s1, s2);
1094-
// __m256i u = _mm256_mullo_epi64(va, t);
1095-
// __m256i v = _mm256_add_epi64(vb, u);
1096-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
1097-
// d = _mm256_sub_epi64(d, w);
1098-
// _mm256_store_si256((__m256i*)dp, d);
1099-
// }
1100-
// else
1101-
// for (; i > 0; i -= 4, sp += 4, dp += 4)
1102-
// {
1103-
// __m256i s1 = _mm256_load_si256((__m256i*)sp);
1104-
// __m256i s2 = _mm256_loadu_si256((__m256i*)(sp + 1));
1105-
// __m256i d = _mm256_load_si256((__m256i*)dp);
1106-
// __m256i t = _mm256_add_epi64(s1, s2);
1107-
// __m256i u = _mm256_mullo_epi64(va, t);
1108-
// __m256i v = _mm256_add_epi64(vb, u);
1109-
// __m256i w = avx2_mm256_srai_epi64(v, e, ve);
1110-
// d = _mm256_sub_epi64(d, w);
1111-
// _mm256_store_si256((__m256i*)dp, d);
1112-
// }
11131029
}
11141030

11151031
// swap buffers

0 commit comments

Comments
 (0)