Fix warning with -Wsign-compare -Wsystem-headers
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / bool3.h
blob7b99a4a6103de6cc5735284565dad889342f4487
1 /* Test forcing 128-bit logical types into GPR registers. */
3 #if defined(NO_ASM)
4 #define FORCE_REG1(X)
5 #define FORCE_REG2(X,Y)
7 #else
8 #if defined(USE_ALTIVEC)
9 #define REG_CLASS "+v"
10 #define PRINT_REG1 "# altivec reg %0"
11 #define PRINT_REG2 "# altivec reg %0, %1"
13 #elif defined(USE_FPR)
14 #define REG_CLASS "+d"
15 #define PRINT_REG1 "# fpr reg %0"
16 #define PRINT_REG2 "# fpr reg %0, %1"
18 #elif defined(USE_VSX)
19 #define REG_CLASS "+wa"
20 #define PRINT_REG1 "# vsx reg %x0"
21 #define PRINT_REG2 "# vsx reg %x0, %x1"
23 #else
24 #define REG_CLASS "+r"
25 #define PRINT_REG1 "# gpr reg %0"
26 #define PRINT_REG2 "# gpr reg %0, %1"
27 #endif
29 #define FORCE_REG1(X) __asm__ (PRINT_REG1 : REG_CLASS (X))
30 #define FORCE_REG2(X,Y) __asm__ (PRINT_REG2 : REG_CLASS (X), REG_CLASS (Y))
31 #endif
33 void ptr1 (TYPE *p)
35 TYPE a = p[1];
36 TYPE b = p[2];
37 TYPE c;
39 FORCE_REG2 (a, b);
40 c = a & b; /* AND */
41 FORCE_REG1 (c);
42 p[0] = c;
45 void ptr2 (TYPE *p)
47 TYPE a = p[1];
48 TYPE b = p[2];
49 TYPE c;
51 FORCE_REG2 (a, b);
52 c = a | b; /* OR */
53 FORCE_REG1 (c);
54 p[0] = c;
57 void ptr3 (TYPE *p)
59 TYPE a = p[1];
60 TYPE b = p[2];
61 TYPE c;
63 FORCE_REG2 (a, b);
64 c = a ^ b; /* XOR */
65 FORCE_REG1 (c);
66 p[0] = c;
69 void ptr4 (TYPE *p)
71 TYPE a = p[1];
72 TYPE b;
74 FORCE_REG1 (a);
75 b = ~a; /* NOR */
76 FORCE_REG1 (b);
77 p[0] = b;
80 void ptr5 (TYPE *p)
82 TYPE a = p[1];
83 TYPE b = p[2];
84 TYPE c;
86 FORCE_REG2 (a, b);
87 c = ~(a & b); /* NAND */
88 FORCE_REG1 (c);
89 p[0] = c;
92 void ptr6 (TYPE *p)
94 TYPE a = p[1];
95 TYPE b = p[2];
96 TYPE c;
98 FORCE_REG2 (a, b);
99 c = ~(a | b); /* AND */
100 FORCE_REG1 (c);
101 p[0] = c;
104 void ptr7 (TYPE *p)
106 TYPE a = p[1];
107 TYPE b = p[2];
108 TYPE c;
110 FORCE_REG2 (a, b);
111 c = ~(a ^ b); /* EQV */
112 FORCE_REG1 (c);
113 p[0] = c;
116 void ptr8 (TYPE *p)
118 TYPE a = p[1];
119 TYPE b = p[2];
120 TYPE c;
122 FORCE_REG2 (a, b);
123 c = (~a) & b; /* ANDC */
124 FORCE_REG1 (c);
125 p[0] = c;
128 void ptr9 (TYPE *p)
130 TYPE a = p[1];
131 TYPE b = p[2];
132 TYPE c;
134 FORCE_REG2 (a, b);
135 c = (~a) | b; /* ORC */
136 FORCE_REG1 (c);
137 p[0] = c;
140 void ptr10 (TYPE *p)
142 TYPE a = p[1];
143 TYPE b = p[2];
144 TYPE c;
146 FORCE_REG2 (a, b);
147 c = (~a) ^ b; /* EQV */
148 FORCE_REG1 (c);
149 p[0] = c;
152 void ptr11 (TYPE *p)
154 TYPE a = p[1];
155 TYPE b = p[2];
156 TYPE c;
158 FORCE_REG2 (a, b);
159 c = a & (~b); /* ANDC */
160 FORCE_REG1 (c);
161 p[0] = c;
164 void ptr12 (TYPE *p)
166 TYPE a = p[1];
167 TYPE b = p[2];
168 TYPE c;
170 FORCE_REG2 (a, b);
171 c = a | (~b); /* ORC */
172 FORCE_REG1 (c);
173 p[0] = c;
176 void ptr13 (TYPE *p)
178 TYPE a = p[1];
179 TYPE b = p[2];
180 TYPE c;
182 FORCE_REG2 (a, b);
183 c = a ^ (~b); /* AND */
184 FORCE_REG1 (c);
185 p[0] = c;