[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / lsbb-runnable.c
blob2e97cc17b608cf339817346706f8e2a2c3c71be7
1 /*
2 Test the least significant bit by byte instruction
3 xvtlsbb BF,XB
4 Using the builtins
5 int vec_test_lsbb_all_zeros (vector unsigned char);
6 int vec_test_lsbb_all_ones (vector unsigned char);
7 */
9 /* { dg-do run { target { power10_hw } } } */
10 /* { dg-do link { target { ! power10_hw } } } */
11 /* { dg-require-effective-target power10_ok } */
12 /* { dg-options "-fno-inline -mdejagnu-cpu=power10 -O2" } */
14 #include <altivec.h>
15 #include <stdio.h>
17 void abort (void);
19 #define ITERS 7
20 vector char input_vec[ITERS] = {
21 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
22 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
23 {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},
24 {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},
25 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
26 {0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe},
27 {0xfe, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9}
30 int expected_allzeros_results[ITERS] = {1, 0, 0, 0, 0, 1, 0};
31 int expected_allones_results[ITERS] = {0, 1, 0, 0, 1, 0, 0};
33 int test_for_zeros(vector char vc) {
34 return vec_test_lsbb_all_zeros(vc);
37 int test_for_ones(vector char vc) {
38 return vec_test_lsbb_all_ones(vc);
41 int main ()
43 int allzeros,allones;
44 int iter;
45 int failcount=0;
46 vector char srcvec;
48 for (iter=0;iter<ITERS;iter++) {
49 srcvec = input_vec[iter];
50 allzeros = test_for_zeros(srcvec);
51 allones = test_for_ones(srcvec);
52 if (allzeros != expected_allzeros_results[iter]) {
53 printf("fail on allzero check. iter %d, result was %d \n", iter, allzeros);
54 failcount++;
56 if (allones != expected_allones_results[iter]) {
57 printf("fail on allones check. iter %d, result was %d \n", iter, allones);
58 failcount++;
62 if (failcount)
63 abort();
64 return 0;