/* { dg-do compile } */ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ void use_cpu_is_builtins (unsigned int *p) { /* If GCC was configured to use an old GLIBC (before 2.23), the __builtin_cpu_is and __builtin_cpu_supports built-in functions return 0, and the compiler issues a warning that you need a newer glibc to use them. Use #ifdef to avoid the warning. */ #ifdef __BUILTIN_CPU_SUPPORTS__ p[0] = __builtin_cpu_is ("power9"); p[1] = __builtin_cpu_is ("power8"); p[2] = __builtin_cpu_is ("power7"); p[3] = __builtin_cpu_is ("power6x"); p[4] = __builtin_cpu_is ("power6"); p[5] = __builtin_cpu_is ("power5+"); p[6] = __builtin_cpu_is ("power5"); p[7] = __builtin_cpu_is ("ppc970"); p[8] = __builtin_cpu_is ("power4"); p[9] = __builtin_cpu_is ("ppca2"); p[10] = __builtin_cpu_is ("ppc476"); p[11] = __builtin_cpu_is ("ppc464"); p[12] = __builtin_cpu_is ("ppc440"); p[13] = __builtin_cpu_is ("ppc405"); p[14] = __builtin_cpu_is ("ppc-cell-be"); p[15] = __builtin_cpu_is ("power10"); #else p[0] = 0; #endif } void use_cpu_supports_builtins (unsigned int *p) { #ifdef __BUILTIN_CPU_SUPPORTS__ p[0] = __builtin_cpu_supports ("4xxmac"); p[1] = __builtin_cpu_supports ("altivec"); p[2] = __builtin_cpu_supports ("arch_2_05"); p[3] = __builtin_cpu_supports ("arch_2_06"); p[4] = __builtin_cpu_supports ("arch_2_07"); p[5] = __builtin_cpu_supports ("arch_3_00"); p[6] = __builtin_cpu_supports ("archpmu"); p[7] = __builtin_cpu_supports ("booke"); p[8] = __builtin_cpu_supports ("cellbe"); p[9] = __builtin_cpu_supports ("dfp"); p[10] = __builtin_cpu_supports ("dscr"); p[11] = __builtin_cpu_supports ("ebb"); p[12] = __builtin_cpu_supports ("efpdouble"); p[13] = __builtin_cpu_supports ("efpsingle"); p[14] = __builtin_cpu_supports ("fpu"); p[15] = __builtin_cpu_supports ("htm"); p[16] = __builtin_cpu_supports ("htm-nosc"); p[17] = __builtin_cpu_supports ("ic_snoop"); p[18] = __builtin_cpu_supports ("ieee128"); p[19] = __builtin_cpu_supports ("isel"); p[20] = __builtin_cpu_supports ("mmu"); p[21] = __builtin_cpu_supports ("notb"); p[22] = __builtin_cpu_supports ("pa6t"); p[23] = __builtin_cpu_supports ("power4"); p[24] = __builtin_cpu_supports ("power5"); p[25] = __builtin_cpu_supports ("power5+"); p[26] = __builtin_cpu_supports ("power6x"); p[27] = __builtin_cpu_supports ("ppc32"); p[28] = __builtin_cpu_supports ("ppc601"); p[29] = __builtin_cpu_supports ("ppc64"); p[30] = __builtin_cpu_supports ("ppcle"); p[31] = __builtin_cpu_supports ("smt"); p[32] = __builtin_cpu_supports ("spe"); p[33] = __builtin_cpu_supports ("tar"); p[34] = __builtin_cpu_supports ("true_le"); p[35] = __builtin_cpu_supports ("ucache"); p[36] = __builtin_cpu_supports ("vcrypto"); p[37] = __builtin_cpu_supports ("vsx"); p[38] = __builtin_cpu_supports ("darn"); p[39] = __builtin_cpu_supports ("scv"); p[40] = __builtin_cpu_supports ("htm-no-suspend"); p[41] = __builtin_cpu_supports ("arch_3_1"); p[42] = __builtin_cpu_supports ("mma"); #else p[0] = 0; #endif }