#endif
#define SW_OR_HW(SW, HW) (__builtin_cpu_supports ("ieee128") ? HW : SW)
+#ifdef FLOAT128_HW_INSNS_ISA3_1
#define SW_OR_HW_ISA3_1(SW, HW) (__builtin_cpu_supports ("arch_3_1") ? HW : SW)
+#endif
/* Resolvers. */
static __typeof__ (__addkf3_sw) *
return SW_OR_HW (__floatdikf_sw, __floatdikf_hw);
}
+#ifdef FLOAT128_HW_INSNS_ISA3_1
static __typeof__ (__floattikf_sw) *
__floattikf_resolve (void)
{
{
return SW_OR_HW_ISA3_1 (__floatuntikf_sw, __floatuntikf_hw);
}
+#endif
static __typeof__ (__floatunsikf_sw) *
__floatunsikf_resolve (void)
return SW_OR_HW (__floatundikf_sw, __floatundikf_hw);
}
-
+#ifdef FLOAT128_HW_INSNS_ISA3_1
static __typeof__ (__fixkfti_sw) *
__fixkfti_resolve (void)
{
{
return SW_OR_HW_ISA3_1 (__fixunskfti_sw, __fixunskfti_hw);
}
+#endif
static __typeof__ (__fixkfsi_sw) *
__fixkfsi_resolve (void)
TFtype __floatdikf (DItype_ppc)
__attribute__ ((__ifunc__ ("__floatdikf_resolve")));
+#ifdef FLOAT128_HW_INSNS_ISA3_1
TFtype __floattikf (TItype_ppc)
__attribute__ ((__ifunc__ ("__floattikf_resolve")));
UTItype_ppc __fixunskfti (TFtype)
__attribute__ ((__ifunc__ ("__fixunskfti_resolve")));
+#endif
TFtype __floatunsikf (USItype_ppc)
__attribute__ ((__ifunc__ ("__floatunsikf_resolve")));
fp128_hw_shared_obj = $(addsuffix _s$(objext),$(fp128_hw_funcs))
fp128_hw_obj = $(fp128_hw_static_obj) $(fp128_hw_shared_obj)
-# New functions for ISA 3.1 hardware support
-fp128_3_1_hw_funcs = float128-p10
-fp128_3_1_hw_src = $(srcdir)/config/rs6000/float128-p10.c
-fp128_3_1_hw_static_obj = $(addsuffix $(objext),$(fp128_3_1_hw_funcs))
-fp128_3_1_hw_shared_obj = $(addsuffix _s$(objext),$(fp128_3_1_hw_funcs))
-fp128_3_1_hw_obj = $(fp128_3_1_hw_static_obj) $(fp128_3_1_hw_shared_obj)
-
fp128_ifunc_funcs = float128-ifunc
fp128_ifunc_src = $(srcdir)/config/rs6000/float128-ifunc.c
fp128_ifunc_static_obj = float128-ifunc$(objext)
-I$(srcdir)/config/rs6000 \
$(FLOAT128_HW_INSNS)
-FP128_3_1_CFLAGS_HW = -Wno-type-limits -mvsx -mcpu=power10 \
- -mfloat128-hardware -mno-gnu-attribute \
- -I$(srcdir)/soft-fp \
- -I$(srcdir)/config/rs6000 \
- $(FLOAT128_HW_INSNS)
-
$(fp128_hw_obj) : INTERNAL_CFLAGS += $(FP128_CFLAGS_HW)
$(fp128_hw_obj) : $(srcdir)/config/rs6000/t-float128-hw
-$(fp128_3_1_hw_obj) : INTERNAL_CFLAGS += $(FP128_3_1_CFLAGS_HW)
-$(fp128_3_1_hw_obj) : $(srcdir)/config/rs6000/t-float128-p10-hw
-
$(fp128_ifunc_obj) : INTERNAL_CFLAGS += $(FP128_CFLAGS_SW)
$(fp128_ifunc_obj) : $(srcdir)/config/rs6000/t-float128-hw
# Tell the float128 functions that the ISA 3.1 hardware support can
# be compiled it to be selected via IFUNC functions.
-FLOAT128_HW_INSNS = -DFLOAT128_HW_INSNS
+FLOAT128_HW_INSNS += -DFLOAT128_HW_INSNS_ISA3_1
# New functions for hardware support
# Build the hardware support functions with appropriate hardware support
FP128_3_1_CFLAGS_HW = -Wno-type-limits -mvsx -mfloat128 \
- -mpower10 \
+ -mcpu=power10 \
-mfloat128-hardware -mno-gnu-attribute \
-I$(srcdir)/soft-fp \
-I$(srcdir)/config/rs6000 \
CFLAGS="$saved_CFLAGS"
saved_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -mpower10 -mfloat128-hardware"
+ CFLAGS="$CFLAGS -mcpu=power10 -mfloat128-hardware"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 3.1 to build hardware __float128 libraries" >&5
$as_echo_n "checking for PowerPC ISA 3.1 to build hardware __float128 libraries... " >&6; }
-if ${libgcc_cv_powerpc_float128_hw+:} false; then :
+if ${libgcc_cv_powerpc_3_1_float128_hw+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifndef __BUILTIN_CPU_SUPPORTS__
#error "__builtin_cpu_supports is not available"
#endif
- vector unsigned char add (vector unsigned char a, vector unsigned char b)
+ vector unsigned char conv (vector unsigned char qs)
{
vector unsigned char ret;
- __asm__ ("xscvsqqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
+ __asm__ ("xscvsqqp %0,%1" : "=v" (ret) : "v" (qs));
return ret;
}
- void *add_resolver (void) { return (void *) add; }
- __float128 add_ifunc (__float128, __float128)
- __attribute__ ((__ifunc__ ("add_resolver")));
+ void *conv_resolver (void) { return (void *) conv; }
+ __float128 conv_ifunc (__float128)
+ __attribute__ ((__ifunc__ ("conv_resolver")));
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
libgcc_cv_powerpc_3_1_float128_hw=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128_hw" >&5
- $as_echo "$libgcc_cv_powerpc_float128_hw" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_3_1_float128_hw" >&5
+$as_echo "$libgcc_cv_powerpc_3_1_float128_hw" >&6; }
CFLAGS="$saved_CFLAGS"
esac
CFLAGS="$saved_CFLAGS"
saved_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -mpower10 -mfloat128-hardware"
+ CFLAGS="$CFLAGS -mcpu=power10 -mfloat128-hardware"
AC_CACHE_CHECK([for PowerPC ISA 3.1 to build hardware __float128 libraries],
- [libgcc_cv_powerpc_float128_hw],
+ [libgcc_cv_powerpc_3_1_float128_hw],
[AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([#include <sys/auxv.h>
#ifndef AT_PLATFORM
#ifndef __BUILTIN_CPU_SUPPORTS__
#error "__builtin_cpu_supports is not available"
#endif
- vector unsigned char add (vector unsigned char a, vector unsigned char b)
+ vector unsigned char conv (vector unsigned char qs)
{
vector unsigned char ret;
- __asm__ ("xscvsqqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
+ __asm__ ("xscvsqqp %0,%1" : "=v" (ret) : "v" (qs));
return ret;
}
- void *add_resolver (void) { return (void *) add; }
- __float128 add_ifunc (__float128, __float128)
- __attribute__ ((__ifunc__ ("add_resolver")));])],
+ void *conv_resolver (void) { return (void *) conv; }
+ __float128 conv_ifunc (__float128)
+ __attribute__ ((__ifunc__ ("conv_resolver")));])],
[libgcc_cv_powerpc_3_1_float128_hw=yes],
[libgcc_cv_powerpc_3_1_float128_hw=no])])
CFLAGS="$saved_CFLAGS"