Вопрос заключается в том, как сделать clang
распечатать информацию о том, какие петли (или другие части кода) были векторизованы. Для этого GCC
имеет переключатель командной строки с именем -ftree-vectorizer-verbose=6
, но я не мог найти ничего подобного для clang
. Поддерживает ли clang
это или мой единственный вариант - заглянуть в разборку?
Эквивалент -ftree-vectorizer-verbose для clang
Ответ 1
clang имеет следующие параметры для печати диагностики, связанной с векторизации:
-Rpass=loop-vectorize identifies loops that were successfully vectorized.
-Rpass-missed=loop-vectorize identifies loops that failed vectorization and indicates if vectorization was specified.
-Rpass-analysis=loop-vectorize identifies the statements that caused vectorization to fail.
Источник: http://llvm.org/docs/Vectorizers.html
Ответ 2
Просматривая исходный код clang, в Transforms/Vectorize проходят пару векторизации:
- BBVectorize
- LoopVectorize
- SLPVectorize
Последние три не имеют аргументов, которые будут печатать вещи. Но внутри BBVectorize есть несколько вариантов печати вещей, когда clang встроен в отладку:
- bb-vectorize-debug-instruction-exam - Когда включена отладка, выводится информация о процессе проверки инструкций
- bb-vectorize-debug-choice-selection - Когда включена отладка, выводить информацию о процессе выбора кандидата
- bb-vectorize-debug-pair-selection - Когда включена отладка, выводится информация о процессе выбора пары
- bb-vectorize-debug-cycle-check - Когда включена отладка, выводится информация о процессе проверки цикла.
- bb-vectorize-debug-print-after-every-pair -Когда отладка включена, выгрузите базовый блок после того, как каждая пара сработает
Это похоже на это.