Возможно ли сделать это сейчас в D из коробки? Я использую компилятор LDC2, если это может помочь. Меня интересует использование встроенных функций AVX.
Явный код simd в D
Ответы (3)
На данный момент DMD не имеет встроенных функций AVX. Учитывая, что все компиляторы D используют интерфейс DMD, а также druntime и phobos, я бы сказал, что единственный способ сделать то, что вы хотите, — это использовать встроенную сборку, как это предлагает BCS.
Я бы посоветовал вам время от времени проверять модуль core.simd
и смотреть, добавлены ли встроенные функции AVX.
person
DejanLekic
schedule
23.12.2012
Есть встроенный ASM. Я думаю, что DMD поддерживает SIMD-инструкции. Не уверен, что история для LDC.
person
BCS
schedule
22.12.2012
Встроенный ASM совершенно невозможен из-за ручного распределения регистров.
- person Stringer; 23.12.2012
Если вам не нужен asm, то что вам нужно для «явного»? Что-то, что гарантирует их использование? Я полагаю, вы проверили список встроенных функций? Остается только компилятор, обещающий использовать их в операциях с массивами.
- person BCS; 23.12.2012
Под явным я подразумеваю использование встроенных функций, таких как
_mm256_load_ps
, и объявление __m256
переменных и т. д., как вы делаете с gcc или clang. Все равно спасибо.
- person Stringer; 23.12.2012
В LDC модуль ldc.gccbuiltins_x86
содержит встроенные функции в стиле GCC, такие как __builtin_ia32_vfnmaddps256
.
(есть и ldc.gccbuiltins_arm
, и ldc.gccbuiltins_ppc
,...)
person
johan
schedule
29.07.2017