Преобразовать встроенные функции SSE в читаемый код C / C ++?

Я унаследовал некоторый высоко оптимизированный (SSE4), но некомментированный код c. Существуют ли какие-либо инструменты или утилиты, которые преобразуют встроенные функции SSE в более читаемый код или псевдокод? Это было бы в первую очередь для удобочитаемости, чтобы я мог лучше понять код, прежде чем копаться и вносить изменения.

1

Решение

Я не знаю ни одного такого инструмента.

Но это, скорее всего, не очень поможет в любом случае. Если код SSE хорошо оптимизирован, сложная часть, вероятно, не расшифровывает встроенные функции. Трудная часть состоит в том, чтобы следовать всем трюкам, чтобы улучшить локальность и устранить внутри-итерационные зависимости данных (стриминг, преобразования многогранного цикла и т. Д.)

Однако я могу предложить вам следующее: всегда иметь хорошо прокомментированную скалярную версию той же самой подпрограммы, написанную самым простым способом. Этот «ссылочный код» должен заботиться только о читабельности и корректности, а не о скорости … Так что в нем должно быть множество утверждений. Также есть набор тестов, который может использовать как скалярную версию, так и оптимизированные варианты.

Независимо от того, реализуете ли вы подпрограмму впервые или обновляете существующую подпрограмму, всегда начинайте со справочного кода и набора тестов. Необязательно в этом порядке.

Такой подход более дорогой заранее, но намного дешевле в долгосрочной перспективе.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]