Skip to content

Commit

Permalink
Running this port on powerpc64 platform requires Altivec-related fixes.
Browse files Browse the repository at this point in the history
Taken from jgaeddert/liquid-dsp#136 .

PR:		233790
Submitted by:	Piotr Kubaj
Approved by:	portmgr (tier-2 blanket)


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@486815 35697150-7ecd-e111-bb59-0022644237b5
  • Loading branch information
Mark Linimon authored and Mark Linimon committed Dec 7, 2018
1 parent e61b0f9 commit b561852
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
11 changes: 11 additions & 0 deletions comms/liquid-dsp/files/patch-configure.ac
Original file line number Diff line number Diff line change
@@ -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 \
39 changes: 39 additions & 0 deletions comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__crcf.av.c
Original file line number Diff line number Diff line change
@@ -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];
39 changes: 39 additions & 0 deletions comms/liquid-dsp/files/patch-src_dotprod_src_dotprod__rrrf.av.c
Original file line number Diff line number Diff line change
@@ -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];

0 comments on commit b561852

Please sign in to comment.