[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Re: [vsipl++] Compiling VSIPL++ on Cell PPE
- To: VSIPL++ Developers List <vsipl++@xxxxxxxxxxxxxxxx>
- Subject: Re: [vsipl++] Compiling VSIPL++ on Cell PPE
- From: Stefan Seefeld <stefan@xxxxxxxxxxxxxxxx>
- Date: Tue, 09 Oct 2007 13:47:45 -0400
The attached patch lets configure check the signature of vconvert_s8_f32x,
and uses the result when delegating to that function. Tested with manual
modifications made to a local CSAL installation.
OK to apply ?
Thanks,
Stefan
--
Stefan Seefeld
CodeSourcery
stefan@xxxxxxxxxxxxxxxx
(650) 331-3385 x718
Index: ChangeLog
===================================================================
--- ChangeLog (revision 181513)
+++ ChangeLog (working copy)
@@ -1,3 +1,8 @@
+2007-10-09 Stefan Seefeld <stefan@xxxxxxxxxxxxxxxx>
+
+ * configure.ac: Test for SAL's vconvert_s8_f32x function signature.
+ * src/vsip/opt/sal/elementwise.hpp: Adjust.
+
2007-09-10 Stefan Seefeld <stefan@xxxxxxxxxxxxxxxx>
* configure.ac: Fix option-default logic for --with-lapack.
Index: configure.ac
===================================================================
--- configure.ac (revision 181513)
+++ configure.ac (working copy)
@@ -577,7 +577,7 @@
CXXDEP="$CXX /QM"
INTEL_WIN=1
else
- CXXDEP="$CXX -M"
+ CXXDEP="$CXX -M -x c++"
fi
AC_SUBST(CXXDEP)
AC_SUBST(INTEL_WIN, $INTEL_WIN)
@@ -1594,12 +1594,34 @@
AC_CHECK_LIB($sal_lib, vsmulx, [sal_have_float=1], [sal_have_float=0])
AC_CHECK_LIB($sal_lib, vsmuldx, [sal_have_double=1], [sal_have_double=0])
+ # Check specific SAL signatures
+ AC_MSG_CHECKING([for vconvert_s8_f32x signature.])
+ AC_COMPILE_IFELSE([
+#include <sal.h>
+
+int main(int, char **)
+{
+ signed char *input;
+ float *output;
+ vconvert_s8_f32x(input, 1, output, 1, 0, 0, 1, 0, 0);
+}
+],
+[
+ vconvert_s8_f32x_is_signed=1
+ AC_MSG_RESULT([signed char *])
+],
+[
+ vconvert_s8_f32x_is_signed=0
+ AC_MSG_RESULT([char *])
+])
+
AC_SUBST(VSIP_IMPL_HAVE_SAL, 1)
if test "$neutral_acconfig" = 'y'; then
CPPFLAGS="$CPPFLAGS -DVSIP_IMPL_HAVE_SAL=1"
CPPFLAGS="$CPPFLAGS -DVSIP_IMPL_HAVE_SAL_FLOAT=$sal_have_float"
CPPFLAGS="$CPPFLAGS -DVSIP_IMPL_HAVE_SAL_DOUBLE=$sal_have_double"
+ CPPFLAGS="$CPPFLAGS -DVSIP_IMPL_VCONVERT_S8_F32X_IS_SIGNED=$vconvert_s8_f32x_is_signed"
else
AC_DEFINE_UNQUOTED(VSIP_IMPL_HAVE_SAL, 1,
[Define to set whether or not to use Mercury's SAL library.])
@@ -1607,6 +1629,8 @@
[Define if Mercury's SAL library provides float support.])
AC_DEFINE_UNQUOTED(VSIP_IMPL_HAVE_SAL_DOUBLE, $sal_have_double,
[Define if Mercury's SAL library provides double support.])
+ AC_DEFINE_UNQUOTED(VSIP_IMPL_VCONVERT_S8_F32X_IS_SIGNED, $vconvert_s8_f32x_is_signed,
+ [Define if Mercury SAL's vconvert_s8_f32x takes signed char * as input type.])
fi
Index: src/vsip/opt/sal/elementwise.hpp
===================================================================
--- src/vsip/opt/sal/elementwise.hpp (revision 181512)
+++ src/vsip/opt/sal/elementwise.hpp (working copy)
@@ -272,7 +272,11 @@
VSIP_IMPL_SAL_VCONV(vconv, long, float, vconvert_s32_f32x);
VSIP_IMPL_SAL_VCONV(vconv, short, float, vconvert_s16_f32x);
+#if VSIP_IMPL_VCONVERT_S8_F32X_IS_SIGNED == 1
+VSIP_IMPL_SAL_VCONV(vconv, signed char, float, vconvert_s8_f32x);
+#else
VSIP_IMPL_SAL_VCONV(vconv, char, float, vconvert_s8_f32x);
+#endif
VSIP_IMPL_SAL_VCONV(vconv, unsigned long, float, vconvert_u32_f32x);
VSIP_IMPL_SAL_VCONV(vconv, unsigned short, float, vconvert_u16_f32x);
VSIP_IMPL_SAL_VCONV(vconv, unsigned char, float, vconvert_u8_f32x);