1# Support for adding __float128 hardware support to the powerpc.
2# Tell the float128 functions that the ISA 3.0 hardware support can
3# be compiled it to be selected via IFUNC functions.
4
5FLOAT128_HW_INSNS   = -DFLOAT128_HW_INSNS
6
7# New functions for hardware support
8fp128_hardfp_src    = _mulkc3-hw.c _divkc3-hw.c
9fp128_hw_funcs                = float128-hw _mulkc3-hw _divkc3-hw _powikf2-hw
10fp128_hw_src                  = $(srcdir)/config/rs6000/float128-hw.c _mulkc3-hw.c \
11                                _divkc3-hw.c _powikf2-hw.c
12fp128_hw_static_obj = $(addsuffix $(objext),$(fp128_hw_funcs))
13fp128_hw_shared_obj = $(addsuffix _s$(objext),$(fp128_hw_funcs))
14fp128_hw_obj                  = $(fp128_hw_static_obj) $(fp128_hw_shared_obj)
15
16fp128_ifunc_funcs   = float128-ifunc
17fp128_ifunc_src               = $(srcdir)/config/rs6000/float128-ifunc.c
18fp128_ifunc_static_obj        = float128-ifunc$(objext)
19fp128_ifunc_shared_obj        = float128-ifunc_s$(objext)
20fp128_ifunc_obj               = $(fp128_ifunc_static_obj) $(fp128_ifunc_shared_obj)
21
22# Add _sw suffix to names to allow ifunc support.
23fp128_sed_hw                  = -hw
24
25# Build the hardware support functions with appropriate hardware support
26FP128_CFLAGS_HW                = -Wno-type-limits -mvsx -mfloat128 \
27                                 -mpower8-vector -mpower9-vector \
28                                 -mfloat128-hardware -mno-gnu-attribute \
29                                 -I$(srcdir)/soft-fp \
30                                 -I$(srcdir)/config/rs6000 \
31                                 $(FLOAT128_HW_INSNS)
32
33$(fp128_hw_obj)                : INTERNAL_CFLAGS += $(FP128_CFLAGS_HW)
34$(fp128_hw_obj)                : $(srcdir)/config/rs6000/t-float128-hw
35
36$(fp128_ifunc_obj)   : INTERNAL_CFLAGS += $(FP128_CFLAGS_SW)
37$(fp128_ifunc_obj)   : $(srcdir)/config/rs6000/t-float128-hw
38
39_mulkc3-hw.c: $(srcdir)/config/rs6000/_mulkc3.c
40          (echo "#define __mulkc3 __mulkc3_hw"; \
41           cat $(srcdir)/config/rs6000/_mulkc3.c) > _mulkc3-hw.c
42
43_divkc3-hw.c: $(srcdir)/config/rs6000/_divkc3.c
44          (echo "#define __divkc3 __divkc3_hw"; \
45           cat $(srcdir)/config/rs6000/_divkc3.c) > _divkc3-hw.c
46
47_powikf2-hw.c: $(srcdir)/config/rs6000/_powikf2.c
48          (echo "#define __powikf2 __powikf2_hw"; \
49           cat $(srcdir)/config/rs6000/_powikf2.c) > _powikf2-hw.c
50