Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / gcc.target / sparc / fandnot.c
blob41db849c239237721288796ea1d66287676acf80
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)));
7 extern vec8 foo1_8(void);
8 extern vec8 foo2_8(void);
10 vec8 fun8(void)
12 return ~foo1_8 () & foo2_8 ();
15 #ifndef __LP64__
16 /* Test the 32-bit splitter. */
17 vec8 fun8_2(vec8 a, vec8 b)
19 return ~a & b;
21 #endif
23 extern vec16 foo1_16(void);
24 extern vec16 foo2_16(void);
26 vec16 fun16(void)
28 return ~foo1_16 () & foo2_16 ();
31 #ifndef __LP64__
32 /* Test the 32-bit splitter. */
33 vec16 fun16_2(vec16 a, vec16 b)
35 return ~a & b;
37 #endif
39 extern vec32 foo1_32(void);
40 extern vec32 foo2_32(void);
42 vec32 fun32(void)
44 return ~foo1_32 () & foo2_32 ();
47 #ifndef __LP64__
48 /* Test the 32-bit splitter. */
49 vec32 fun32_2(vec32 a, vec32 b)
51 return ~a & b;
53 #endif
56 /* This should be transformed into ~b & a. */
57 vec8 fun8b(void)
59 return foo1_8 () & ~foo2_8 ();
62 #ifndef __LP64__
63 /* Test the 32-bit splitter. */
64 vec8 fun8_2b(vec8 a, vec8 b)
66 return a & ~b;
68 #endif
70 vec16 fun16b(void)
72 return foo1_16 () & ~foo2_16 ();
75 #ifndef __LP64__
76 /* Test the 32-bit splitter. */
77 vec16 fun16_2b(vec16 a, vec16 b)
79 return a & ~b;
81 #endif
83 vec32 fun32b(void)
85 return foo1_32 () & ~foo2_32 ();
88 #ifndef __LP64__
89 /* Test the 32-bit splitter. */
90 vec32 fun32_2b(vec32 a, vec32 b)
92 return a & ~b;
94 #endif
96 /* { dg-final { scan-assembler-times "fandnot1\t%" 6 } } */