_mm256_maskload_ps はマスクしてるとSEGVしない
ちゃんと理解してなかったので確認した。
#include <stdio.h> #include <immintrin.h> #include <sys/mman.h> int main() { char *p = mmap(0, 2048*1024*2, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); mprotect(p + 2048*1024, 2048*1024, PROT_NONE); __m256 v = _mm256_set1_ps(1); __m256i mask = _mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, ~0); v = _mm256_maskload_ps((float*)(p+2048*1024 - 4), mask); _mm256_maskstore_ps((float*)(p+2048*1024 - 4), mask, v); printf("%p\n", p); }