_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);
}