1  /* Routine to check correctness of the results */
       2  
       3  __attribute__((unused))
       4  static int
       5  saturate_b (int i)
       6  {
       7    if (i > 127)
       8      i = 127;
       9    else if (i < -128)
      10      i = -128;
      11    return i;
      12  }
      13  
      14  __attribute__((unused))
      15  static int
      16  saturate_w (int i)
      17  {
      18    if (i > 32767)
      19      i = 32767;
      20    else if (i < -32768)
      21      i = -32768;
      22    return i;
      23  }
      24  
      25  __attribute__((unused))
      26  static int
      27  saturate_ub (int i)
      28  {
      29    if (i > 255)
      30      i = 255;
      31    else if (i < 0)
      32      i = 0;
      33    return i;
      34  }
      35  
      36  __attribute__((unused))
      37  static int
      38  saturate_uw (int i)
      39  {
      40    if (i > 65535)
      41      i = 65535;
      42    else if (i < 0)
      43      i = 0;
      44    return i;
      45  }
      46  
      47  static long long MMXops[] =
      48  {
      49    0x3467512347612976LL, 0x000000000000000eLL,
      50    0x3467512347612976LL, 0x0000000000000014LL,
      51    0x3467512347612976LL, 0x000000000000003cLL,
      52    0x0000000000000000LL, 0xFFFFFFFFFFFFFFFFLL,
      53    0xFFFFFFFFFFFFFFFFLL, 0x0000000000000000LL,
      54    0x0000000000000001LL, 0x1000000000000000LL,
      55    0x1000000000000000LL, 0x0000000000000001LL,
      56    0xFF00FF00FF00FF00LL, 0x00FF00FF00FF00FFLL,
      57    0xFFFFFFFFFFFFFFFFLL, 0x0101010101010101LL,
      58    0x0101010101010101LL, 0xFFFFFFFFFFFFFFFFLL,
      59    0x0123456789ABCDEFLL, 0x0123456789ABCDEFLL,
      60    0x3467512347612976LL, 0x1839876340879234LL,
      61    0x0000000000000000LL, 0x0000000000000000LL,
      62    0xFFFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL,
      63    0x7F7F7F7F7F7F7F7FLL, 0x7F7F7F7F7F7F7F7FLL,
      64    0x7F7F7F7F7F7F7F7FLL, 0x0101010101010101LL,
      65    0x7F7F7F7F7F7F7F7FLL, 0x4782082349761237LL,
      66    0x0000000000000000LL, 0x7F7F7F7F7F7F7F7FLL,
      67    0x8080808080808080LL, 0x8080808080808080LL,
      68    0x0101010101010101LL, 0x8080808080808080LL,
      69    0x8080808080808080LL, 0x0000000000000000LL,
      70    0x2372347120982458LL, 0x8080808080808080LL,
      71    0xFFFFFFFFFFFFFFFFLL, 0x8080808080808080LL,
      72    0x7F7F7F7F7F7F7F7FLL, 0xFFFFFFFFFFFFFFFFLL,
      73    0x8080808080808080LL, 0x7F7F7F7F7F7F7F7FLL,
      74    0xFFFFFFFFFFFFFFFFLL, 0x7F7F7F7F7F7F7F7FLL
      75  };
      76  
      77  #define MMX_num_ops (sizeof (MMXops) / sizeof (MMXops[0]))