aboutsummaryrefslogtreecommitdiff
path: root/comms
diff options
context:
space:
mode:
authorMark Linimon <linimon@FreeBSD.org>2018-12-07 00:26:50 +0000
committerMark Linimon <linimon@FreeBSD.org>2018-12-07 00:26:50 +0000
commitb5b0b81df761e5b1959553c531bbee5281b76ee7 (patch)
treec3148b47b32dd3b7f57ad52227acbb6e854028e0 /comms
parentad4ef5b0107449f572a839e66290bd96ec9916fc (diff)
downloadports-b5b0b81df761e5b1959553c531bbee5281b76ee7.tar.gz
ports-b5b0b81df761e5b1959553c531bbee5281b76ee7.zip
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)
Notes
Notes: svn path=/head/; revision=486815
Diffstat (limited to 'comms')
-rw-r--r--comms/liquid-dsp/files/patch-configure.ac11
-rw-r--r--comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c39
-rw-r--r--comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c39
3 files changed, 89 insertions, 0 deletions
diff --git a/comms/liquid-dsp/files/patch-configure.ac b/comms/liquid-dsp/files/patch-configure.ac
new file mode 100644
index 000000000000..d5571d2b85af
--- /dev/null
+++ b/comms/liquid-dsp/files/patch-configure.ac
@@ -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 \
diff --git a/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c b/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c
new file mode 100644
index 000000000000..d5f45ddf1f66
--- /dev/null
+++ b/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c
@@ -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];
diff --git a/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c b/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c
new file mode 100644
index 000000000000..c293e02b70d6
--- /dev/null
+++ b/comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c
@@ -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];