Технически два 64-битных значения могут привести к 128-битовому результату. Вот почему есть следующие функции int64*int32+int32
, но не один, который принимает два 64-битных входных значения.
int64x2_t vmlal_s32 (int64x2_t, int32x2_t, int32x2_t);
int64x2_t vqdmlal_s32 (int64x2_t, int32x2_t, int32x2_t);
Если те не работают для вас, то вам нужно использовать скалярные 64 * 64 операций с последующим vaddq_s64
.
Примечания: Visual Studio реализует _mul128
, __umul128
, _mulh
и __umulh
для всех архитектур, включая ARM для обработки полного 64 * 64 = 128 бит сценария.