C intrinsics

Z HPM wiki
Přejít na: navigace, hledání

Intrinsics vypadají jako volání funkce, ale překladač je přeloží často jako jedinou instrukci assembleru.

Příklad programu, ve kterém použijeme SSE instrukci:

#include <stdio.h>
#include <stdlib.h>

#include <pmmintrin.h>    /* Intel(R) Pentium4 processor SSE3 intrinsics */

main(){
  float x[4] = {1.2, 4, 2, 7};
  float y[4] = {1.32, 40, 2, 7};
  int i;
  __m128 a, b;

  a = *(__m128 *)x;
  b = *(__m128 *)y;

  for( i=0; i<1000000000; i++ ){                                                                          
    a = _mm_add_ps( a, b );
  }
  *(__m128 *)x = a;

  for( i=0; i<4; i++ ){
    printf("x[%d]=%f\n", i, x[i]);
  }
}

Překlad:

gcc -O3 pokus.c -msse3 -o pokus
Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje