Power8 vsldoi встроенный или замена

Я пытаюсь перенести некоторый код ASM на C/C++, используя встроенные модули. код ASM содержит:

+  # Unpack a-h data from the packed vector to a vector register each
+  
+  vsldoi 10, 9, 9, 12
+  vsldoi 11, 9, 9, 8
+  vsldoi 12, 9, 9, 4

Я не могу найти встроенную версию для vec_vsldoi. При поиске на сайте IBM я получаю 0 результатов. Я думаю vec_sldw близок, но принимает 3 аргумента вместо 4.

Мой первый вопрос, есть ли встроенный для vec_vsldoi? если нет, используем ли мы vec_sldw или что-то еще?

Мы поддерживаем GCC 4.8 в дополнение к XL C/C++. GCC, похоже, не имеет обоих внутренних свойств. Думаю, у меня есть замена, но у меня есть свои оговорки. Тестовая программа показывает, что ассемблер может собрать vsldoi.

// GCC 4.8 is missing vec_sldw and vec_vsldoi
#if defined(XLC_VERSION)
# define VEC_VSLDOI(a,b,c) vec_vsldoi(a,b,c)
#elif defined(GCC_VERSION)
# define VEC_VSLDOI(a,b,c) VEC_VSLDOI_TEMPLATE<c>(a,b)
template<unsigned int C>
uint8x16_p8 VEC_VSLDOI_TEMPLATE(uint8x16_p8 a, const uint8x16_p8& b)
{
    uint8x16_p8 r;
    __asm
    (
        "vsldoi %0, %1, %2, %3    \t\n"
        : "=v" (t) : "v" (a), "v" (b), "I" (C) : "cc"
    );
    return r;
}
#endif

Мой второй вопрос: верен ли расширенный GCC ASM, или мы должны делать что-то еще?


person jww    schedule 15.09.2017    source источник


Ответы (1)


Соответствует ли vec_sld вашим потребностям? https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.cbcpx01/bif_vec_sld.htm (по общему признанию, это не ссылка на "POWER", но, тем не менее, актуальная).

$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -c vec_sld.c
$ objdump -d vec_sld.o | grep vsl
  4c:   2c 09 00 10     vsldoi  v0,v0,v1,4
person ThinkOpenly    schedule 18.09.2017
comment
Обратите внимание, что встроенный vec_sld можно найти в спецификации 64-битного ELF V2 ABI: документ Power Architecture по адресу openpowerfoundation.org/ - person ThinkOpenly; 18.09.2017
comment
Спасибо, Павел, я думаю, что это все. Я скоро вернусь к проблеме (реализация AES/GCM. У меня есть AES, я работаю над GCM). - person jww; 19.09.2017