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