Сборник синтаксиса для ввенных векторных инструкций Intel AVX-512

StackOverflow https://stackoverflow.com//questions/21032395

Вопрос

Для целей тестирования я пишу с короткими сборочными франдами для Xeon Intel Xeon PHI с помощью ACC ICC.Теперь я хотел использовать в маске векторные инструкции, но я не терпию их кормить их на встроенный ассемблер.

для кода, как это:

vmovapd  -64(%%r14, %%r10), %%zmm0{%%k1} 
.

Я получаю сообщение об ошибке

/tmp/icpc5115IWas_.s: Assembler messages:
/tmp/icpc5115IWas_.s:563: Error: junk `%k1' after register
.

Я попробовал много разных комбинаций, но ничего не работал.Версия компилятора - Intel64 / 13.1UP03 под Linux, используя газовый синтаксис.

Редактирование: код выше фактически работает с неэкстраданным ассемблером.Так что это:

__asm__("vmovapd  -64(%r14, %r10), %zmm0{%k1} ")
.

работает, а следующее не:

__asm__("vmovapd  -64(%[src], %%r10), %%zmm0{%%k1} "
    :
    : [src]"r"(src)
    :)
.

Я думаю, что он имеет отношение к необходимости использовать двойную% до регистра регистра в расширенном режиме.Но нет, один% для K тоже не работает.

Это было полезно?

Решение

Я задавал тот же вопрос в зоне разработчиков Intel http://software.intel.com/en-us/forums/topic/499145#Comment-1776563 , ответ, что для того, чтобы использовать регистры маски на Xeon Phi в расширенном встроенном ассемблере, вам нужноИспользуйте двойные фигурные скобки вокруг модификатора регистра регистра маски.

vmovapd     %%zmm30,         (%%r15,    %%r10){{%%k1}}
.

Другие советы

Я думаю, вам нужно использовать в маске вариант инструкции: vmaskmovpd

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top