Для начала работы некоторого алгоритма необходимо подготовить массив из 128-ми void*, заполненный нулями. Массив выделяется при помощи aligned_alloc, поэтому гарантированно выравнен по sizeof(void*[128]).
При этом алгоритм будет обращаться к элементам этого массива по хитро вычисляемым индексам и подавляющее большинство обращений пойдёт к первым 8 элементам, остальные 120 будут использоваться крайне редко.
Поскольку данные хорошо выровнены, и не потребуются в кеше - по идее наиболее быстрый способ - отправить их в память при помощи streaming non-temparal - что-то типа _mm512_stream_si512 - оно же VMOVNTDQA для x86.
Но как можно кросс-архитектурно намекнуть компилятору, что тут будет уместна такая инструкция?
То что данные выронены на 64 байта наверное можно объяснить, обнулив младшие биты указателя, с которым идёт работа. А вот как выразить на С совет не помещать данные в кеш - непонятно