1 /* { dg-do compile { target { powerpc*-*-* } } } */ 2 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ 3 /* { dg-require-effective-target powerpc_p9vector_ok } */ 4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ 5 /* { dg-options "-mcpu=power9 -O2" } */ 6 7 #include <altivec.h> 8 9 vector signed char count_trailing_zeros_v16qi_1s(vector signed char a)10count_trailing_zeros_v16qi_1s (vector signed char a) 11 { 12 return vec_vctz (a); 13 } 14 15 vector signed char count_trailing_zeros_v16qi_2s(vector signed char a)16count_trailing_zeros_v16qi_2s (vector signed char a) 17 { 18 return vec_vctzb (a); 19 } 20 21 vector unsigned char count_trailing_zeros_v16qi_1u(vector unsigned char a)22count_trailing_zeros_v16qi_1u (vector unsigned char a) 23 { 24 return vec_vctz (a); 25 } 26 27 vector unsigned char count_trailing_zeros_v16qi_2u(vector unsigned char a)28count_trailing_zeros_v16qi_2u (vector unsigned char a) 29 { 30 return vec_vctzb (a); 31 } 32 33 vector short count_trailing_zeros_v8hi_1s(vector short a)34count_trailing_zeros_v8hi_1s (vector short a) 35 { 36 return vec_vctz (a); 37 } 38 39 vector short count_trailing_zeros_v8hi_2s(vector short a)40count_trailing_zeros_v8hi_2s (vector short a) 41 { 42 return vec_vctzh (a); 43 } 44 45 vector unsigned short count_trailing_zeros_v8hi_1u(vector unsigned short a)46count_trailing_zeros_v8hi_1u (vector unsigned short a) 47 { 48 return vec_vctz (a); 49 } 50 51 vector unsigned short count_trailing_zeros_v8hi_2u(vector unsigned short a)52count_trailing_zeros_v8hi_2u (vector unsigned short a) 53 { 54 return vec_vctzh (a); 55 } 56 57 vector int count_trailing_zeros_v4si_1s(vector int a)58count_trailing_zeros_v4si_1s (vector int a) 59 { 60 return vec_vctz (a); 61 } 62 63 vector int count_trailing_zeros_v4si_2s(vector int a)64count_trailing_zeros_v4si_2s (vector int a) 65 { 66 return vec_vctzw (a); 67 } 68 69 vector unsigned int count_trailing_zeros_v4si_1u(vector unsigned int a)70count_trailing_zeros_v4si_1u (vector unsigned int a) 71 { 72 return vec_vctz (a); 73 } 74 75 vector unsigned int count_trailing_zeros_v4si_2u(vector unsigned int a)76count_trailing_zeros_v4si_2u (vector unsigned int a) 77 { 78 return vec_vctzw (a); 79 } 80 81 vector long long count_trailing_zeros_v2di_1s(vector long long a)82count_trailing_zeros_v2di_1s (vector long long a) 83 { 84 return vec_vctz (a); 85 } 86 87 vector long long count_trailing_zeros_v2di_2s(vector long long a)88count_trailing_zeros_v2di_2s (vector long long a) 89 { 90 return vec_vctzd (a); 91 } 92 93 vector unsigned long long count_trailing_zeros_v2di_1u(vector unsigned long long a)94count_trailing_zeros_v2di_1u (vector unsigned long long a) 95 { 96 return vec_vctz (a); 97 } 98 99 vector unsigned long long count_trailing_zeros_v2di_2u(vector unsigned long long a)100count_trailing_zeros_v2di_2u (vector unsigned long long a) 101 { 102 return vec_vctzd (a); 103 } 104 105 /* { dg-final { scan-assembler "vctzb" } } */ 106 /* { dg-final { scan-assembler "vctzd" } } */ 107 /* { dg-final { scan-assembler "vctzh" } } */ 108 /* { dg-final { scan-assembler "vctzw" } } */ 109 /* { dg-final { scan-assembler-not "cnttzd" } } */ 110 /* { dg-final { scan-assembler-not "cnttzw" } } */ 111