(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
sparc/
fnand.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O -mcpu=ultrasparc -mvis" } */
       3  typedef char  vec8 __attribute__((vector_size(8)));
       4  typedef short vec16 __attribute__((vector_size(8)));
       5  typedef int   vec32 __attribute__((vector_size(8)));
       6  
       7  extern vec8 foo1_8(void);
       8  extern vec8 foo2_8(void);
       9  
      10  vec8 fun8(void)
      11  {
      12    return ~(foo1_8 () & foo2_8 ());
      13  }
      14  
      15  extern vec16 foo1_16(void);
      16  extern vec16 foo2_16(void);
      17  
      18  vec16 fun16(void)
      19  {
      20    return ~(foo1_16 () & foo2_16 ());
      21  }
      22  
      23  extern vec32 foo1_32(void);
      24  extern vec32 foo2_32(void);
      25  
      26  vec32 fun32(void)
      27  {
      28    return ~(foo1_32 () & foo2_32 ());
      29  }
      30  
      31  
      32  /* DeMorgan's Law's at work.  */
      33  vec8 fun8b(void)
      34  {
      35    return ~foo1_8 () | ~foo2_8 ();
      36  }
      37  
      38  vec16 fun16b(void)
      39  {
      40    return ~foo1_16 () | ~foo2_16 ();
      41  }
      42  
      43  vec32 fun32b(void)
      44  {
      45    return ~foo1_32 () | ~foo2_32 ();
      46  }
      47  
      48  /* { dg-final { scan-assembler-times "fnand\t%" 6 } } */