svn commit: r324311 - in head/astro/boinc-setiathome-v7: . files
Rene Ladan
rene at FreeBSD.org
Tue Aug 6 12:06:21 UTC 2013
Author: rene
Date: Tue Aug 6 12:06:19 2013
New Revision: 324311
URL: http://svnweb.freebsd.org/changeset/ports/324311
Log:
Fix build with clang, remove USE_GCC line in Makefile
Submitted by: Roman Cat <roman-cat at yandex.ru> (modified version)
Added:
head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_sse.cpp (contents, props changed)
head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_x86_64.cpp (contents, props changed)
head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_float4.h (contents, props changed)
head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_ops.h (contents, props changed)
Modified:
head/astro/boinc-setiathome-v7/Makefile
Modified: head/astro/boinc-setiathome-v7/Makefile
==============================================================================
--- head/astro/boinc-setiathome-v7/Makefile Tue Aug 6 11:59:10 2013 (r324310)
+++ head/astro/boinc-setiathome-v7/Makefile Tue Aug 6 12:06:19 2013 (r324311)
@@ -22,7 +22,6 @@ USES= gmake pkgconfig
USE_XZ= yes
USE_AUTOTOOLS= autoconf:env automake:env
GNU_CONFIGURE= yes
-USE_GCC= any
CFLAGS+= -O2 -I${LOCALBASE}/include/boinc -I${LOCALBASE}/include \
-L${LOCALBASE}/lib
Added: head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_sse.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_sse.cpp Tue Aug 6 12:06:19 2013 (r324311)
@@ -0,0 +1,35 @@
+--- client/vector/analyzeFuncs_sse.cpp.origin 2013-08-02 01:08:24.000000000 +0400
++++ client/vector/analyzeFuncs_sse.cpp 2013-08-02 01:18:33.000000000 +0400
+@@ -191,7 +191,7 @@
+ prefetcht0(out+3*yline);
+ // TODO: figure out why the intrinsic version crashes for MinGW build
+ // not critical, but shuffle-only _MM_TRANSPOSE4_PS is optimal on some
+-#if defined(USE_INTRINSICS) && defined(_MM_TRANSPOSE4_PS) && !defined(__GNUC__)
++#if defined(USE_INTRINSICS) && (defined(_MM_TRANSPOSE4_PS) && !defined(__GNUC__) || defined(__clang__))
+ register float4 row0=*(__m128 *)in;
+ register float4 row1=*(__m128 *)(in+xline);
+ register float4 row2=*(__m128 *)(in+2*xline);
+@@ -273,7 +273,7 @@
+
+ // TODO: figure out why the intrinsic version crashes for MinGW build
+ // not critical, but the shuffle-only _MM_TRANSPOSE4_PS is optimal on some
+-#if defined(USE_INTRINSICS) && defined(_MM_TRANSPOSE4_PS) && !defined(__GNUC__)
++#if defined(USE_INTRINSICS) && (defined(_MM_TRANSPOSE4_PS) && !defined(__GNUC__) || defined(__clang__))
+ register float4 row0=*(__m128 *)in;
+ register float4 row1=*(__m128 *)(in+xline);
+ register float4 row2=*(__m128 *)(in+2*xline);
+@@ -1592,8 +1592,14 @@
+ return ( tMax );
+ }
+
++#ifdef __clang__
++#define s_getU( aaaa, ptr ) \
++ aaaa = _mm_loadl_pi(aaaa, (__m64 *)ptr); \
++ aaaa = _mm_loadh_pi(aaaa, ((__m64 *)(ptr))+1 )
++#else
+ #define s_getU( aaaa, ptr ) \
+ aaaa = _mm_loadh_pi( _mm_loadl_pi(aaaa, (__m64 *)ptr), ((__m64 *)(ptr))+1 )
++#endif
+
+ #define s_putU( ptr, aaaa ) \
+ _mm_storel_pi((__m64 *)ptr, aaaa), _mm_storeh_pi( ((__m64 *)ptr)+1 , aaaa)
Added: head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_x86_64.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/astro/boinc-setiathome-v7/files/patch-client__vector__analyzeFuncs_x86_64.cpp Tue Aug 6 12:06:19 2013 (r324311)
@@ -0,0 +1,17 @@
+--- client/vector/analyzeFuncs_x86_64.cpp.orig 2011-04-03 07:25:53.000000000 +0200
++++ client/vector/analyzeFuncs_x86_64.cpp 2013-07-29 17:41:37.000000000 +0200
+@@ -61,8 +61,14 @@
+ static const int as [4] __attribute__((aligned(16)))= {INT_MIN, 0, INT_MIN, 0} ; // {-, +, -, +}
+ char *cblock = (char *)alloca(11*16);
+ cblock+=(16-((ssize_t)cblock % 16));
++#ifdef __clang__
++ __m128 *fblock=reinterpret_cast<__m128 *>(cblock);
++ __m128d *dblock=reinterpret_cast<__m128d *>(cblock);
++#else
+ x86_m128 *fblock=reinterpret_cast<x86_m128 *>(cblock);
+ x86_m128d *dblock=reinterpret_cast<x86_m128d *>(cblock);
++#endif
++
+ #define CC dblock[0]
+ #define DD dblock[1]
+ #define cc fblock[2]
Added: head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_float4.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_float4.h Tue Aug 6 12:06:19 2013 (r324311)
@@ -0,0 +1,25 @@
+--- client/vector/x86_float4.h.orig 2011-05-22 21:08:50.000000000 +0200
++++ client/vector/x86_float4.h 2013-07-29 18:52:18.000000000 +0200
+@@ -58,11 +58,15 @@
+
+ ALIGNED(static const int sign_bits[4],16)={INT_MIN, INT_MIN, INT_MIN, INT_MIN};
+ ALIGNED(static const int other_bits[4],16)={INT_MAX, INT_MAX, INT_MAX, INT_MAX};
++
++#ifdef __clang__
++#ifndef __EMMINTRIN_H
++typedef long long __m128i __attribute__((__vector_size__(16)));
++#endif
++#endif
+ #define SIGN_BITS (*(__m128i *)sign_bits)
+ #define OTHER_BITS (*(__m128i *)other_bits)
+
+-
+-
+ struct float4 {
+ float4() {};
+ float4(const __m128 b) { m=b; };
+@@ -263,4 +267,3 @@
+
+ #endif
+ #endif
+-
Added: head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_ops.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/astro/boinc-setiathome-v7/files/patch-client__vector__x86_ops.h Tue Aug 6 12:06:19 2013 (r324311)
@@ -0,0 +1,43 @@
+--- client/vector/x86_ops.h.orig 2011-05-22 21:08:50.000000000 +0200
++++ client/vector/x86_ops.h 2013-07-29 17:42:54.000000000 +0200
+@@ -135,7 +135,11 @@
+
+ #if defined(__SSE2__)
+ // SSE2 specific functions/macros here.
+-#ifdef _MSC_VER
++#ifdef __clang__
++#ifndef __EMMINTRIN_H
++#include <emmintrin.h>
++#endif
++#elif defined _MSC_VER
+ typedef __m128d x86_m128d;
+ #else
+ typedef double x86_m128d __attribute__ ((mode(V2DF))) __attribute__((aligned(16)));
+@@ -144,7 +148,11 @@
+
+ #if defined(__SSE__)
+ // SSE specific functions/macros here.
+-#ifdef _MSC_VER
++#ifdef __clang__
++#ifndef __XMMINTRIN_H
++#include <xmmintrin.h>
++#endif
++#elif defined _MSC_VER
+ typedef __m128 x86_m128;
+ typedef __m128i x86_m128i;
+ #else
+@@ -186,6 +194,7 @@
+
+ #endif
+
++#ifndef __clang__
+ #ifndef __m128d
+ #define __m128d x86_m128d
+ #endif
+@@ -197,5 +206,6 @@
+ #ifndef __m128
+ #define __m128 x86_m128
+ #endif
++#endif
+
+ #endif
More information about the svn-ports-head
mailing list