ports/163518: [patch] x11/babl: unbreak SSE build with clang
Jan Beich
jbeich at tormail.net
Thu Dec 22 00:20:06 UTC 2011
>Number: 163518
>Category: ports
>Synopsis: [patch] x11/babl: unbreak SSE build with clang
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 22 00:20:05 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Jan Beich
>Release: FreeBSD 10.0-CURRENT amd64
>Organization:
>Environment:
WITH_SIMD=
>Description:
- unbreak sse detection on amd64
- don't use __builtin* functions directly
>How-To-Repeat:
$ make CC=clang
gmake[2]: Entering directory `/usr/ports/x11/babl/work/babl-0.1.6/extensions'
CC sse_fixups_la-sse-fixups.lo
sse-fixups.c:96:16: error: use of unknown builtin '__builtin_ia32_movhlps'
v = g4float_movhl (v, v);
^
sse-fixups.c:46:29: note: expanded from:
#define g4float_movhl(a,b) __builtin_ia32_movhlps(a, b)
^
sse-fixups.c:96:14: error: assigning to 'g4float' from incompatible type 'int';
v = g4float_movhl (v, v);
^ ~~~~~~~~~~~~~~~~~~~~
sse-fixups.c:154:14: error: assigning to 'g4float' from incompatible type 'int';
v = g4float_movhl (v, v);
^ ~~~~~~~~~~~~~~~~~~~~
3 errors generated.
gmake[2]: *** [sse_fixups_la-sse-fixups.lo] Error 1
>Fix:
--- clang.diff begins here ---
Index: x11/babl/Makefile
===================================================================
RCS file: /a/.csup/ports/x11/babl/Makefile,v
retrieving revision 1.11
diff -u -p -r1.11 Makefile
--- x11/babl/Makefile 22 Nov 2011 08:03:18 -0000 1.11
+++ x11/babl/Makefile 21 Dec 2011 21:54:57 -0000
@@ -38,4 +38,7 @@ CONFIGURE_ARGS+=--disable-mmx \
--disable-altivec
.endif
+post-patch: .SILENT
+ ${REINPLACE_CMD} -i.64 -e 's|x86_64|amd64|g' ${WRKSRC}/configure
+
.include <bsd.port.post.mk>
Index: x11/babl/files/patch-sse-fixups.c
===================================================================
RCS file: x11/babl/files/patch-sse-fixups.c
diff -N x11/babl/files/patch-sse-fixups.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ x11/babl/files/patch-sse-fixups.c 21 Dec 2011 21:51:49 -0000
@@ -0,0 +1,28 @@
+--- extensions/sse-fixups.c~
++++ extensions/sse-fixups.c
+@@ -23,6 +23,8 @@
+
+ #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(USE_SSE) && defined(USE_MMX)
+
++#include <xmmintrin.h>
++
+ #include <stdint.h>
+ #include <stdlib.h>
+
+@@ -40,11 +42,11 @@ typedef int g2int __attribute__ ((ve
+ #define g4float_zero g4float_all(0.0)
+ #define g4float_ff g4float_all(255.0)
+
+-#define g4float_max(a,b) __builtin_ia32_maxps(a, b)
+-#define g4float_min(a,b) __builtin_ia32_minps(a, b)
+-#define g4float_cvt2pi(a) __builtin_ia32_cvtps2pi(a)
+-#define g4float_movhl(a,b) __builtin_ia32_movhlps(a, b)
+-#define g4float_emms __builtin_ia32_emms
++#define g4float_max(a,b) _mm_max_ps(a, b)
++#define g4float_min(a,b) _mm_min_ps(a, b)
++#define g4float_cvt2pi(a) _mm_cvtps_pi32(a)
++#define g4float_movhl(a,b) _mm_movehl_ps(a, b)
++#define g4float_emms _mm_empty
+
+
+ static INLINE long
--- clang.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list