1 /* Verify that overloaded built-ins for vec_or, vec_xor, vec_nor with
2 * long long inputs produce the right results. */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_p8vector_ok } */
6 /* { dg-options "-mpower8-vector -O2" } */
10 vector
signed long long
11 test1_or (vector
bool long long x
, vector
signed long long y
)
13 vector
signed long long *foo
;
14 *foo
+= vec_or (x
, y
);
18 vector
signed long long
19 test1_xor (vector
bool long long x
, vector
signed long long y
)
21 vector
signed long long *foo
;
22 *foo
+= vec_xor (x
, y
);
26 vector
signed long long
27 test1_nor (vector
bool long long x
, vector
signed long long y
)
29 vector
signed long long *foo
;
30 *foo
+= vec_nor (x
, y
);
34 vector
signed long long
35 test2_or (vector
signed long long x
, vector
bool long long y
)
37 vector
signed long long *foo
;
38 *foo
+= vec_or (x
, y
);
42 vector
signed long long
43 test2_xor (vector
signed long long x
, vector
bool long long y
)
45 vector
signed long long *foo
;
46 *foo
+= vec_xor (x
, y
);
50 vector
signed long long
51 test2_nor (vector
signed long long x
, vector
bool long long y
)
53 vector
signed long long *foo
;
54 *foo
+= vec_nor (x
, y
);
58 vector
signed long long
59 test3_or (vector
signed long long x
, vector
signed long long y
)
61 vector
signed long long *foo
;
62 *foo
+= vec_or (x
, y
);
66 vector
signed long long
67 test3_xor (vector
signed long long x
, vector
signed long long y
)
69 vector
signed long long *foo
;
70 *foo
+= vec_xor (x
, y
);
74 vector
signed long long
75 test3_nor (vector
signed long long x
, vector
signed long long y
)
77 vector
signed long long *foo
;
78 *foo
+= vec_nor (x
, y
);
82 vector
unsigned long long
83 test4_or (vector
bool long long x
, vector
unsigned long long y
)
85 vector
unsigned long long *foo
;
86 *foo
+= vec_or (x
, y
);
90 vector
unsigned long long
91 test4_xor (vector
bool long long x
, vector
unsigned long long y
)
93 vector
unsigned long long *foo
;
94 *foo
+= vec_xor (x
, y
);
98 vector
unsigned long long
99 test4_nor (vector
bool long long x
, vector
unsigned long long y
)
101 vector
unsigned long long *foo
;
102 *foo
+= vec_nor (x
, y
);
106 vector
unsigned long long
107 test5_or (vector
unsigned long long x
, vector
bool long long y
)
109 vector
unsigned long long *foo
;
110 *foo
+= vec_or (x
, y
);
114 vector
unsigned long long
115 test5_xor (vector
unsigned long long x
, vector
bool long long y
)
117 vector
unsigned long long *foo
;
118 *foo
+= vec_xor (x
, y
);
122 vector
unsigned long long
123 test5_nor (vector
unsigned long long x
, vector
bool long long y
)
125 vector
unsigned long long *foo
;
126 *foo
+= vec_nor (x
, y
);
130 vector
unsigned long long
131 test6_or (vector
unsigned long long x
, vector
unsigned long long y
)
133 vector
unsigned long long *foo
;
134 *foo
+= vec_or (x
, y
);
138 vector
unsigned long long
139 test6_xor (vector
unsigned long long x
, vector
unsigned long long y
)
141 vector
unsigned long long *foo
;
142 *foo
+= vec_xor (x
, y
);
146 vector
unsigned long long
147 test6_nor (vector
unsigned long long x
, vector
unsigned long long y
)
149 vector
unsigned long long *foo
;
150 *foo
+= vec_nor (x
, y
);
154 // The number of xxlor instructions generated varies between 6 and 24 for
155 // older systems (power6,power7), as well as for 32-bit versus 64-bit targets.
156 // For simplicity, this test now only targets "powerpc_p8vector_ok" environments
157 // where the answer is expected to be 6.
159 /* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
160 /* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
161 /* { dg-final { scan-assembler-times {\mxxlnor\M} 6 } } */