Skip to content

Instantly share code, notes, and snippets.

@lemire
Created August 25, 2018 05:17
Show Gist options
  • Save lemire/aaaa84c07fe85bbaf60f69aa2d9f4f10 to your computer and use it in GitHub Desktop.
Save lemire/aaaa84c07fe85bbaf60f69aa2d9f4f10 to your computer and use it in GitHub Desktop.
what does zero upper do?
#include <stdint.h>
#include <stdio.h>
#include <x86intrin.h>
int main() {
__m512i x = _mm512_set1_epi32(1);
__m512i xxxx = _mm512_set1_epi32(12);
__m256i xx = _mm256_set1_epi32(1);
asm volatile("vzeroupper\n" : "+x"(xx), "+x"(x), "+x"(xxxx) :);
uint32_t y[16];
_mm512_storeu_si512(y, x);
for (int k = 0; k < 16; k++) {
printf("%u ", y[k]);
}
printf("\n");
_mm512_storeu_si512(y, xxxx);
for (int k = 0; k < 16; k++) {
printf("%u ", y[k]);
}
printf("\n");
_mm256_storeu_si256((__m256i *)y, xx);
for (int k = 0; k < 8; k++) {
printf("%u ", y[k]);
}
printf("\n");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment