/* PR target/83862.c */
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-require-effective-target ppc_float128_sw } */
/* { dg-require-effective-target powerpc_p8vector_ok } */
/* { dg-options "-mpower8-vector -O2 -mabi=ieeelongdouble -Wno-psabi" } */

/* On little endian systems, optimizing signbit of IEEE 128-bit values from
   memory could abort if the memory address was indexed (reg+reg).  The
   optimization is only on 64-bit machines with direct move.

   Compile with -g -O2 -mabi=ieeelongdouble -Wno-psabi.  */

#ifndef TYPE
#define TYPE long double
#endif

int sbr (TYPE a) { return __builtin_signbit (a); }
int sbm (TYPE *a) { return __builtin_signbit (*a); }
int sbo (TYPE *a) { return __builtin_signbit (a[4]); }
int sbi (TYPE *a, unsigned long n) { return __builtin_signbit (a[n]); }
void sbs (int *p, TYPE a) { *p = __builtin_signbit (a); }

/* On big endian systems, this will generate 2 LDs and 1 LDX, while on
   little endian systems, this will generate 3 LDs and an ADD.  */

/* { dg-final { scan-assembler-times {\mldx?\M}    3 } } */
/* { dg-final { scan-assembler-times {\mmfvsrd\M}  2 } } */
/* { dg-final { scan-assembler-times {\msrdi\M}    5 } } */
/* { dg-final { scan-assembler-not   {\mmfvsrld\M}   } } */
/* { dg-final { scan-assembler-not   {\mstxvx?\M}    } } */
/* { dg-final { scan-assembler-not   {\mstxvw4x\M}   } } */
/* { dg-final { scan-assembler-not   {\mstxvd2x\M}   } } */
/* { dg-final { scan-assembler-not   {\mstvx\M}      } } */

