1  /* PR tree-optimization/96128 */
       2  /* { dg-options "-march=z13" } */
       3  
       4  #define B_TEST(TYPE) { TYPE v __attribute__((vector_size(16))); (void)((v < v) < v); }
       5  #ifdef __cplusplus
       6  #define T_TEST(TYPE) { TYPE s; TYPE v __attribute__((vector_size(16))); __typeof((v<v)[0]) iv __attribute__((vector_size(16))); (void)((iv ? s : s) < v); }
       7  #else
       8  #define T_TEST(TYPE)
       9  #endif
      10  #define T(TYPE) B_TEST(TYPE) T_TEST(TYPE)
      11  #ifdef __SIZEOF_INT128__
      12  #define SIZEOF_MAXINT __SIZEOF_INT128__
      13  #else
      14  #define SIZEOF_MAXINT __SIZEOF_LONG_LONG__
      15  #endif
      16  
      17  void f ()
      18  {
      19    T(short)
      20    T(int)
      21    T(long)
      22    T(long long)
      23  
      24    T_TEST(float)
      25    T_TEST(double)
      26    /* Avoid trouble with non-power-of-two sizes.
      27       Also avoid trouble with long double larger than integral types.  */
      28  #if !defined(__i386__) && !defined(__x86_64__) && !defined(__m68k__) \
      29      && !defined(__ia64__) && !defined(__hppa__) \
      30      && (__SIZEOF_LONG_DOUBLE__ & (__SIZEOF_LONG_DOUBLE__ - 1)) == 0 \
      31      && __SIZEOF_LONG_DOUBLE__ <= 16 \
      32      && __SIZEOF_LONG_DOUBLE__ <= SIZEOF_MAXINT
      33    T_TEST(long double)
      34  #endif
      35  }