Как отключить векторизацию в Clang ++?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как отключить векторизацию в Clang ++?

Сообщение Anonymous »

Рассмотрим следующую небольшую функцию поиска: < /p>

Код: Выделить всё

template 
int32_t countsearch(const uint32_t *base, uint32_t needle) {
uint32_t count = 0;
// #pragma clang loop vectorize(disable)
for (const uint32_t *probe = base; probe < base + N; probe++) {
if (*probe < needle)
count++;
}
return count;
}
at -o2 или выше, Clang векторизует этот поиск, например,. в результате кода, подобное этому (для 10 элементов): < /p>

Код: Выделить всё

int countsearch(unsigned int const*, unsigned int):            # @int countsearch(unsigned int const*, unsigned int)
vmovd   xmm0, esi
vpbroadcastd    ymm0, xmm0
vpbroadcastd    ymm1, dword ptr [rip + .LCPI0_0] # ymm1 = [2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648]
vpxor   ymm2, ymm1, ymmword ptr [rdi]
vpxor   ymm0, ymm0, ymm1
vpcmpgtd        ymm0, ymm0, ymm2
cmp     dword ptr [rdi + 32], esi
vpsrld  ymm1, ymm0, 31
vextracti128    xmm1, ymm1, 1
vpsubd  ymm0, ymm1, ymm0
vpshufd xmm1, xmm0, 78          # xmm1 = xmm0[2,3,0,1]
vpaddd  ymm0, ymm0, ymm1
vphaddd ymm0, ymm0, ymm0
vmovd   eax, xmm0
adc     eax, 0
cmp     dword ptr [rdi + 36], esi
adc     eax, 0
vzeroupper
ret
Как я могу отключить эту векторизацию в командной строке или использовать #pragma в коде?

Код: Выделить всё

-disable-loop-vectorization
-disable-vectorization
-fno-vectorize
-fno-tree-vectorize
Я также попробовал #pragma clang Loop Vectorize (Disable) выше цикла, как показано (прокомментировано) в коде выше, без удачи.

Подробнее здесь: https://stackoverflow.com/questions/514 ... n-in-clang
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»