Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Dec 2018 00:26:51 +0000 (UTC)
From:      Mark Linimon <linimon@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r486815 - head/comms/liquid-dsp/files
Message-ID:  <201812070026.wB70QpPJ073329@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: linimon
Date: Fri Dec  7 00:26:50 2018
New Revision: 486815
URL: https://svnweb.freebsd.org/changeset/ports/486815

Log:
  Running this port on powerpc64 platform requires Altivec-related fixes.
  
  Taken from https://github.com/jgaeddert/liquid-dsp/pull/136 .
  
  PR:		233790
  Submitted by:	Piotr Kubaj
  Approved by:	portmgr (tier-2 blanket)

Added:
  head/comms/liquid-dsp/files/
  head/comms/liquid-dsp/files/patch-configure.ac   (contents, props changed)
  head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c   (contents, props changed)
  head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c   (contents, props changed)

Added: head/comms/liquid-dsp/files/patch-configure.ac
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/comms/liquid-dsp/files/patch-configure.ac	Fri Dec  7 00:26:50 2018	(r486815)
@@ -0,0 +1,11 @@
+--- configure.ac.orig	2018-12-04 23:39:19 UTC
++++ configure.ac
+@@ -195,7 +195,7 @@ else
+                        src/dotprod/src/dotprod_rrrf.av.o \
+                        src/dotprod/src/dotprod_crcf.av.o \
+                        src/dotprod/src/sumsq.o"
+-        ARCH_OPTION="-fno-common -faltivec";;
++        ARCH_OPTION="-fno-common -maltivec";;
+     armv1*|armv2*|armv3*|armv4*|armv5*|armv6*)
+         # assume neon instructions are NOT available
+         MLIBS_DOTPROD="src/dotprod/src/dotprod_cccf.o \

Added: head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c	Fri Dec  7 00:26:50 2018	(r486815)
@@ -0,0 +1,39 @@
+--- src/dotprod/src/dotprod_crcf.av.c.orig	2018-12-04 23:40:11 UTC
++++ src/dotprod/src/dotprod_crcf.av.c
+@@ -26,6 +26,7 @@
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <altivec.h>
+ 
+ #include "liquid.internal.h"
+ 
+@@ -168,8 +169,8 @@ void dotprod_crcf_execute(dotprod_crcf    _q,
+     union { vector float v; float w[4];} s;
+     unsigned int nblocks;
+ 
+-    ar = (vector float*)( (int)_x & ~15);
+-    al = ((int)_x & 15)/sizeof(float);
++    ar = (vector float*)( (uintptr_t)_x & ~15);
++    al = ((uintptr_t)_x & 15)/sizeof(float);
+ 
+     d = (vector float*)_q->h[al];
+ 
+@@ -179,7 +180,7 @@ void dotprod_crcf_execute(dotprod_crcf    _q,
+     // split into four vectors each with four 32-bit
+     // partial sums.  Effectively each loop iteration
+     // operates on 16 input samples at a time.
+-    s0 = s1 = s2 = s3 = (vector float)(0);
++    s0 = s1 = s2 = s3 = (vector float){0,0,0,0};
+     while (nblocks >= 4) {
+         s0 = vec_madd(ar[nblocks-1],d[nblocks-1],s0);
+         s1 = vec_madd(ar[nblocks-2],d[nblocks-2],s1);
+@@ -200,7 +201,7 @@ void dotprod_crcf_execute(dotprod_crcf    _q,
+     // move the result into the union s (effetively,
+     // this loads the four 32-bit values in s0 into
+     // the array w).
+-    s.v = vec_add(s0,(vector float)(0));
++    s.v = vec_add(s0,(vector float){0,0,0,0});
+ 
+     // sum the resulting array
+     //*_r = s.w[0] + s.w[1] + s.w[2] + s.w[3];

Added: head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c	Fri Dec  7 00:26:50 2018	(r486815)
@@ -0,0 +1,39 @@
+--- src/dotprod/src/dotprod_rrrf.av.c.orig	2018-12-04 23:41:32 UTC
++++ src/dotprod/src/dotprod_rrrf.av.c
+@@ -26,6 +26,7 @@
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <altivec.h>
+ 
+ #include "liquid.internal.h"
+ 
+@@ -163,8 +164,8 @@ void dotprod_rrrf_execute(dotprod_rrrf _q,
+     union { vector float v; float w[4];} s;
+     unsigned int nblocks;
+ 
+-    ar = (vector float*)( (int)_x & ~15);
+-    al = ((int)_x & 15)/sizeof(float);
++    ar = (vector float*)( (uintptr_t)_x & ~15);
++    al = ((uintptr_t)_x & 15)/sizeof(float);
+ 
+     d = (vector float*)_q->h[al];
+ 
+@@ -173,7 +174,7 @@ void dotprod_rrrf_execute(dotprod_rrrf _q,
+     // split into four vectors each with four 32-bit
+     // partial sums.  Effectively each loop iteration
+     // operates on 16 input samples at a time.
+-    s0 = s1 = s2 = s3 = (vector float)(0);
++    s0 = s1 = s2 = s3 = (vector float){0,0,0,0};
+     while (nblocks >= 4) {
+         s0 = vec_madd(ar[nblocks-1],d[nblocks-1],s0);
+         s1 = vec_madd(ar[nblocks-2],d[nblocks-2],s1);
+@@ -194,7 +195,7 @@ void dotprod_rrrf_execute(dotprod_rrrf _q,
+     // move the result into the union s (effetively,
+     // this loads the four 32-bit values in s0 into
+     // the array w).
+-    s.v = vec_add(s0,(vector float)(0));
++    s.v = vec_add(s0,(vector float){0,0,0,0});
+ 
+     // sum the resulting array
+     *_r = s.w[0] + s.w[1] + s.w[2] + s.w[3];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812070026.wB70QpPJ073329>