(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
sse4_1-pextrq.c
       1  /* { dg-do run { target { ! ia32 } } } */
       2  /* { dg-require-effective-target sse4 } */
       3  /* { dg-options "-O2 -msse4.1" } */
       4  
       5  #ifndef CHECK_H
       6  #define CHECK_H "sse4_1-check.h"
       7  #endif
       8  
       9  #ifndef TEST
      10  #define TEST sse4_1_test
      11  #endif
      12  
      13  #include CHECK_H
      14  
      15  #include <smmintrin.h>
      16  
      17  #define msk0   0
      18  #define msk1   1
      19  
      20  static void
      21  __attribute__((noinline))
      22  TEST (void)
      23  {
      24    union
      25      {
      26        __m128i x;
      27        long long ll[2];
      28      } val1;
      29    long long res[2];
      30    int masks[2];
      31    int i;
      32  
      33    val1.ll[0] = 0x0807060504030201LL;
      34    val1.ll[1] = 0x100F0E0D0C0B0A09LL;
      35  
      36    res[0] = _mm_extract_epi64 (val1.x, msk0);
      37    res[1] = _mm_extract_epi64 (val1.x, msk1);
      38  
      39    masks[0] = msk0;
      40    masks[1] = msk1;
      41  
      42    for (i = 0; i < 2; i++)
      43      if (res[i] != val1.ll [masks[i]])
      44        abort ();
      45  }