#include typedef unsigned vu __attribute__ ((vector_size (UNROLL*sizeof(unsigned)))); unsigned keylocks(unsigned keys[], unsigned nkeys, unsigned locks[], unsigned nlocks) { unsigned i, j; unsigned part1 = 0; /* that's apparently 0: https://stackoverflow.com/questions/40730815/gnu-c-native-vectors-how-to-broadcast-a-scalar-like-x86s-mm-set1-epi16 */ vu acc0=(vu){}; vu acc1=(vu){}; vu acc2=(vu){}; vu acc3=(vu){}; int nlocks1=(nlocks+UNROLL*8-1)&(-(UNROLL*8)); int nkeys1; int locks1[nlocks1]; int keys1[nkeys]; for (i=0; i