https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91534
Bug ID: 91534 Summary: some defined builtins are not usable Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pc at gcc dot gnu.org Target Milestone: --- On a ppc64le system, some builtins which appear to have the beginnings of support are not usable at compilation time. Example from gcc/config/rs6000/rs6000-builtin.def: BU_VSX_X (XSMADDMDP, "xsmaddmdp", FP) $ cat xsmaddmdp.c #include <stdio.h> #include <altivec.h> double foo(double a, double b, double c) { double d = __builtin_vsx_xsmaddmdp (2.0, 3.0, 11.0); return d; } $ /opt/at12.0/bin/gcc --version gcc (GCC) 8.2.1 20180813 (Advance-Toolchain-at12.0) [revision 263510] $ /opt/at12.0/bin/gcc -c xsmaddmdp.c -mcpu=power9 xsmaddmdp.c: In function ‘foo’: xsmaddmdp.c:4:13: warning: implicit declaration of function ‘__builtin_vsx_xsmaddmdp’; did you mean ‘__builtin_vsx_xvmadddp’? [-Wimplicit-function-declaration] Unscientifically, I took all of the __builtin_{altivec,vmx,vsx,vec} strings from /opt/at12.0/libexec/gcc/powerpc64le-linux-gnu/8.2.1/cc1, and the following builtins exhibit the same issue: implicit declaration of function ‘__builtin_altivec_mask_for_store’ implicit declaration of function ‘__builtin_altivec_vec_init_v4si’ implicit declaration of function ‘__builtin_altivec_vec_init_v8hi’ implicit declaration of function ‘__builtin_altivec_vec_init_v16qi’ implicit declaration of function ‘__builtin_altivec_vec_init_v4sf’ implicit declaration of function ‘__builtin_altivec_vec_set_v4si’ implicit declaration of function ‘__builtin_altivec_vec_set_v8hi’ implicit declaration of function ‘__builtin_altivec_vec_set_v16qi’ implicit declaration of function ‘__builtin_altivec_vec_set_v4sf’ implicit declaration of function ‘__builtin_altivec_vec_ext_v4si’ implicit declaration of function ‘__builtin_altivec_vec_ext_v8hi’ implicit declaration of function ‘__builtin_altivec_vec_ext_v16qi’ implicit declaration of function ‘__builtin_altivec_vec_ext_v4sf’ implicit declaration of function ‘__builtin_vec_sldw’ implicit declaration of function ‘__builtin_vsx_lxsdx’ implicit declaration of function ‘__builtin_vsx_lxvdsx’ implicit declaration of function ‘__builtin_vsx_stxsdx’ implicit declaration of function ‘__builtin_vsx_xsabsdp’ implicit declaration of function ‘__builtin_vsx_xsadddp’ implicit declaration of function ‘__builtin_vsx_xscmpodp’ implicit declaration of function ‘__builtin_vsx_xscmpudp’ implicit declaration of function ‘__builtin_vsx_xscvdpsxds’ implicit declaration of function ‘__builtin_vsx_xscvdpsxws’ implicit declaration of function ‘__builtin_vsx_xscvdpuxds’ implicit declaration of function ‘__builtin_vsx_xscvdpuxws’ implicit declaration of function ‘__builtin_vsx_xscvsxddp’ implicit declaration of function ‘__builtin_vsx_xscvuxddp’ implicit declaration of function ‘__builtin_vsx_xsdivdp’ implicit declaration of function ‘__builtin_vsx_xsmaddadp’ implicit declaration of function ‘__builtin_vsx_xsmaddmdp’ implicit declaration of function ‘__builtin_vsx_xsmovdp’ implicit declaration of function ‘__builtin_vsx_xsmsubadp’ implicit declaration of function ‘__builtin_vsx_xsmsubmdp’ implicit declaration of function ‘__builtin_vsx_xsmuldp’ implicit declaration of function ‘__builtin_vsx_xsnabsdp’ implicit declaration of function ‘__builtin_vsx_xsnegdp’ implicit declaration of function ‘__builtin_vsx_xsnmaddadp’ implicit declaration of function ‘__builtin_vsx_xsnmaddmdp’ implicit declaration of function ‘__builtin_vsx_xsnmsubadp’ implicit declaration of function ‘__builtin_vsx_xsnmsubmdp’ implicit declaration of function ‘__builtin_vsx_xssubdp’ implicit declaration of function ‘__builtin_vsx_vec_init_v1ti’ implicit declaration of function ‘__builtin_vsx_vec_init_v2df’ implicit declaration of function ‘__builtin_vsx_vec_init_v2di’ implicit declaration of function ‘__builtin_vsx_vec_set_v1ti’ implicit declaration of function ‘__builtin_vsx_vec_set_v2df’ implicit declaration of function ‘__builtin_vsx_vec_set_v2di’ implicit declaration of function ‘__builtin_vsx_vec_ext_v1ti’ implicit declaration of function ‘__builtin_vsx_vec_ext_v2df’ implicit declaration of function ‘__builtin_vsx_vec_ext_v2di’ implicit declaration of function ‘__builtin_altivec_xst_len_r’ ...that is certainly not a complete set, because it excludes all of the form __builtin_<instruction>.