(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
lzcnt-4.c
       1  /* { dg-do run { target { lzcnt } } } */
       2  /* { dg-options "-O2 -mlzcnt -fno-inline" } */
       3  
       4  #include <x86intrin.h>
       5  
       6  #include "lzcnt-check.h"
       7  
       8  int calc_lzcnt_u32 (int src)
       9  {
      10    int i;
      11    int res = 0;
      12  
      13    while ((res < 32) && (((src >> (31 - res)) & 1) == 0))
      14      ++res;
      15  
      16    return res;
      17  }
      18  
      19  static void
      20  lzcnt_test ()
      21  {
      22    unsigned i;
      23    int src = 0xce7ace0;
      24    int res, res_ref;
      25  
      26    for (i=0; i<5; ++i) {
      27      src = src >> i;
      28  
      29      res_ref = calc_lzcnt_u32 (src);
      30      res = __lzcnt32 (src);
      31  
      32      if (res != res_ref)
      33        abort();
      34    }
      35  }