Я ожидал ускорения от векторов SIMD, но не получил прироста скорости. нада

Я запускаю это на M3 с Xcode 16, Clang/LLVM 16, с
Код: Выделить всё
-Ofast -fomit-frame-pointer -ffast-math
Это всего лишь простые инструкции, и, или, сдвиг... на 64 битах
Я не понимаю... как мне запрограммировать этот метод для повышения скорости?
исходный код:
Код: Выделить всё
unsigned long long RXBitBoard::get_legal_moves(const unsigned long long p_discs, const unsigned long long o_discs) {
const unsigned long long inner_o_discs = o_discs & 0x7E7E7E7E7E7E7E7EULL;
/* direction W */
unsigned long long
flipped = (p_discs >> 1) & inner_o_discs;
flipped |= (flipped >> 1) & inner_o_discs;
unsigned long long adjacent_o_discs = inner_o_discs & (inner_o_discs >> 1);
flipped |= (flipped >> 2) & adjacent_o_discs;
flipped |= (flipped >> 2) & adjacent_o_discs;
unsigned long long legals = flipped >> 1;
// /* direction _E*/
// flipped = (p_discs > 16) & adjacent_o_discs;
flipped |= (flipped >> 16) & adjacent_o_discs;
legals |= flipped >> 8;
/* direction N */
flipped = (p_discs 7);
flipped |= (flipped >> 14) & adjacent_o_discs;
flipped |= (flipped >> 14) & adjacent_o_discs;
legals |= flipped >> 7;
/* direction SW */
flipped = (p_discs 9);
flipped |= (flipped >> 18) & adjacent_o_discs;
flipped |= (flipped >> 18) & adjacent_o_discs;
legals |= flipped >> 9;
/* direction SE */
flipped = (p_discs
Подробнее здесь: [url]https://stackoverflow.com/questions/79079623/why-arm-neon-intrinsics-are-not-faster-than-plain-c-for-finding-legal-othello[/url]