ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
801242 Топик полностью
Nikolay_Po (11.12.2017 15:34, просмотров: 179) ответил SciFi на Если там можно применить SIMD, то лучше ручками, компилятор сам вряд ли догадается.
Пример кода от ARM. За счёт встроенных функций, это больше ассемблер, чем Си. Цикл фильтра функции arm_fir_fast_q15() для Cortex-M4 (комментарии вырезаны для наглядности). Из сишных остались лишь инкремент, декремент и условие цикла:  while(tapCnt > 0) { c0 = *__SIMD32(pb)++; acc0 = __SMLAD(x0, c0, acc0); acc2 = __SMLAD(x2, c0, acc2); x1 = __PKHBT(x0, x2, 0); x0 = _SIMD32_OFFSET(px); acc1 = __SMLADX(x1, c0, acc1); x1 = __PKHBT(x2, x0, 0); acc3 = __SMLADX(x1, c0, acc3); c0 = *__SIMD32(pb)++; acc0 = __SMLAD(x2, c0, acc0); x2 = _SIMD32_OFFSET(px + 2u); acc2 = __SMLAD(x0, c0, acc2); acc1 = __SMLADX(x1, c0, acc1); x1 = __PKHBT(x0, x2, 0); acc3 = __SMLADX(x1, c0, acc3); px += 4u; tapCnt--; } Код из дистрибутива ARM, CMSIS\DSP_Lib\Source\FilteringFunctions\arm_fir_fast_q15.c