6222167.c   [plain text]


/* { dg-do compile { target i?86-apple-darwin* x86_64-apple-darwin* } } */
/* { dg-options "-msse4.1" } */
/* { dg-final { scan-assembler "pmaxsd" } } */
/* { dg-final { scan-assembler "pminsd" } } */
#include <stdio.h>
#include "smmintrin.h"
typedef int  int4 __attribute__ ((vector_size(16)));

int main( void )
{
  volatile int4  a = (int4) { 0, 1, 2, 3};
  volatile int4  b = (int4) { 2, 2, 2, 2};

  int4 max = __builtin_ia32_pmaxsd128( a, b );
  int4 min = __builtin_ia32_pminsd128( a, b );

  printf( "max: { %d, %d %d, %d}\n", ((int*) &max)[0], ((int*) &max)[1], ((int*) &max)[2], ((int*) &max)[3] );
  printf( "min: { %d, %d %d, %d}\n", ((int*) &min)[0], ((int*) &min)[1], ((int*) &min)[2], ((int*) &min)[3] );

  return 0;
}