From owner-svn-ports-head@freebsd.org Wed Feb 6 23:49:14 2019 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9EDB214B16B1; Wed, 6 Feb 2019 23:49:14 +0000 (UTC) (envelope-from db@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3DD5D8A7C8; Wed, 6 Feb 2019 23:49:14 +0000 (UTC) (envelope-from db@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 14D51CB0F; Wed, 6 Feb 2019 23:49:14 +0000 (UTC) (envelope-from db@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x16NnDjg095053; Wed, 6 Feb 2019 23:49:13 GMT (envelope-from db@FreeBSD.org) Received: (from db@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x16NnBa2095037; Wed, 6 Feb 2019 23:49:11 GMT (envelope-from db@FreeBSD.org) Message-Id: <201902062349.x16NnBa2095037@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: db set sender to db@FreeBSD.org using -f From: Diane Bruce Date: Wed, 6 Feb 2019 23:49:11 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r492337 - in head/comms/libfec: . files X-SVN-Group: ports-head X-SVN-Commit-Author: db X-SVN-Commit-Paths: in head/comms/libfec: . files X-SVN-Commit-Revision: 492337 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 3DD5D8A7C8 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.98)[-0.979,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-0.999,0] X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Feb 2019 23:49:14 -0000 Author: db Date: Wed Feb 6 23:49:11 2019 New Revision: 492337 URL: https://svnweb.freebsd.org/changeset/ports/492337 Log: Altivec support probably wasn't maintained for years. Fix it to compile on powerpc64. Tested also on amd64. Hardware sponsored by IntegriCloud. PR: ports/235560 Submitted by: Piotr Kubaj Added: head/comms/libfec/files/patch-dotprod__av.c (contents, props changed) head/comms/libfec/files/patch-encode__rs__8.c (contents, props changed) head/comms/libfec/files/patch-encode__rs__av.c (contents, props changed) head/comms/libfec/files/patch-peakval__av.c (contents, props changed) head/comms/libfec/files/patch-sumsq__av.c (contents, props changed) head/comms/libfec/files/patch-viterbi27__av.c (contents, props changed) head/comms/libfec/files/patch-viterbi29__av.c (contents, props changed) head/comms/libfec/files/patch-viterbi39__av.c (contents, props changed) head/comms/libfec/files/patch-viterbi615__av.c (contents, props changed) Modified: head/comms/libfec/Makefile head/comms/libfec/files/cpu_mode.c head/comms/libfec/files/patch-configure.in head/comms/libfec/files/patch-fec.h Modified: head/comms/libfec/Makefile ============================================================================== --- head/comms/libfec/Makefile Wed Feb 6 23:04:35 2019 (r492336) +++ head/comms/libfec/Makefile Wed Feb 6 23:49:11 2019 (r492337) @@ -14,12 +14,10 @@ COMMENT= Several forward error correction (FEC) decode LICENSE= LGPL21 -BROKEN_powerpc64= fails to compile: cc1: error: unrecognized command line option -faltivec - MAKEFILE= makefile GNU_CONFIGURE= yes -USES= autoreconf gmake tar:bzip2 +USES= autoreconf compiler:c11 gmake tar:bzip2 USE_LDCONFIG= yes PLIST_FILES= include/fec.h \ lib/libfec.so \ Modified: head/comms/libfec/files/cpu_mode.c ============================================================================== --- head/comms/libfec/files/cpu_mode.c Wed Feb 6 23:04:35 2019 (r492336) +++ head/comms/libfec/files/cpu_mode.c Wed Feb 6 23:49:11 2019 (r492337) @@ -4,6 +4,7 @@ #include #include "fec.h" #ifdef __VEC__ +#include #include #endif @@ -33,15 +34,19 @@ void find_cpu_mode(void){ Cpu_mode = MMX; } #endif -//#ifdef __VEC__ -#if 0 -// This looks very Linux specific +#ifdef __VEC__ { /* Ask the OS if we have Altivec support */ +#ifdef __APPLE__ int selectors[2] = { CTL_HW, HW_VECTORUNIT }; +#endif int hasVectorUnit = 0; size_t length = sizeof(hasVectorUnit); +#ifdef __APPLE__ int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0); +#elif __FreeBSD__ + int error = sysctlbyname("hw.altivec", &hasVectorUnit, &length, NULL, 0); +#endif if(0 == error && hasVectorUnit) Cpu_mode = ALTIVEC; } Modified: head/comms/libfec/files/patch-configure.in ============================================================================== --- head/comms/libfec/files/patch-configure.in Wed Feb 6 23:04:35 2019 (r492336) +++ head/comms/libfec/files/patch-configure.in Wed Feb 6 23:49:11 2019 (r492337) @@ -17,7 +17,8 @@ + cpu_features.o" ;; powerpc*) - ARCH_OPTION="-fno-common -faltivec" +- ARCH_OPTION="-fno-common -faltivec" ++ ARCH_OPTION="-fno-common -maltivec" MLIBS="viterbi27_av.o viterbi29_av.o viterbi39_av.o viterbi615_av.o \ encode_rs_av.o \ - dotprod_av.o sumsq_av.o peakval_av.o cpu_mode_ppc.o" Added: head/comms/libfec/files/patch-dotprod__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-dotprod__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,28 @@ +--- dotprod_av.c.orig 2019-02-05 19:37:00 UTC ++++ dotprod_av.c +@@ -3,6 +3,7 @@ + * Copyright 2004 Phil Karn + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ ++#include + #include + #include "fec.h" + +@@ -70,7 +71,7 @@ long dotprod_av(void *p,signed short a[]){ + nblocks = (dp->len+al-1)/8+1; + + /* Sum into four vectors each holding four 32-bit partial sums */ +- sums3 = sums2 = sums1 = sums0 = (vector signed int)(0); ++ sums3 = sums2 = sums1 = sums0 = (vector signed int){0}; + while(nblocks >= 4){ + sums0 = vec_msums(ar[nblocks-1],d[nblocks-1],sums0); + sums1 = vec_msums(ar[nblocks-2],d[nblocks-2],sums1); +@@ -85,7 +86,7 @@ long dotprod_av(void *p,signed short a[]){ + sums0 = vec_msums(ar[nblocks],d[nblocks],sums0); + } + /* Sum 4 partial sums into final result */ +- s.v = vec_sums(sums0,(vector signed int)(0)); ++ s.v = vec_sums(sums0,(vector signed int){0}); + + return s.w[3]; + } Added: head/comms/libfec/files/patch-encode__rs__8.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-encode__rs__8.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,27 @@ +--- encode_rs_8.c.orig 2019-02-06 10:40:06 UTC ++++ encode_rs_8.c +@@ -3,6 +3,7 @@ + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ + #include ++#include + #include "fixed.h" + #ifdef __VEC__ + #include +@@ -36,10 +37,16 @@ void encode_rs_8(data_t *data, data_t *parity,int pad) + } + #elif __VEC__ + /* Ask the OS if we have Altivec support */ ++#ifdef __APPLE__ + int selectors[2] = { CTL_HW, HW_VECTORUNIT }; ++#endif + int hasVectorUnit = 0; + size_t length = sizeof(hasVectorUnit); ++#ifdef __APPLE__ + int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0); ++#elif __FreeBSD__ ++ int error = sysctlbyname("hw.altivec", &hasVectorUnit, &length, NULL, 0); ++#endif + if(0 == error && hasVectorUnit) + cpu_mode = ALTIVEC; + else Added: head/comms/libfec/files/patch-encode__rs__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-encode__rs__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,41 @@ +--- encode_rs_av.c.orig 2019-02-05 19:29:53 UTC ++++ encode_rs_av.c +@@ -2,6 +2,7 @@ + * Copyright 2004, Phil Karn KA9Q + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ ++#include + #include + #include + #include "fixed.h" +@@ -12,8 +13,8 @@ + */ + static union { vector unsigned char v; unsigned char c[16]; } table[256]; + +-static vector unsigned char reverse = (vector unsigned char)(0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1); +-static vector unsigned char shift_right = (vector unsigned char)(15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30); ++static vector unsigned char reverse = (vector unsigned char){0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; ++static vector unsigned char shift_right = (vector unsigned char){15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; + + extern data_t CCSDS_alpha_to[]; + extern data_t CCSDS_index_of[]; +@@ -40,8 +41,8 @@ void encode_rs_av(unsigned char *data,unsigned char *p + union { vector unsigned char v[2]; unsigned char c[32]; } shift_register; + int i; + +- shift_register.v[0] = (vector unsigned char)(0); +- shift_register.v[1] = (vector unsigned char)(0); ++ shift_register.v[0] = (vector unsigned char){0}; ++ shift_register.v[1] = (vector unsigned char){0}; + + for(i=0;i + #include "fec.h" + + signed short peakval_av(signed short *in,int cnt){ +@@ -14,11 +15,11 @@ signed short peakval_av(signed short *in,int cnt){ + union { vector signed char cv; vector signed short hv; signed short s[8]; signed char c[16];} s; + vector signed short smallest,largest; + +- smallest = (vector signed short)(0); +- largest = (vector signed short)(0); ++ smallest = (vector signed short){0}; ++ largest = (vector signed short){0}; + if((pad = (int)in & 15)!=0){ + /* Load unaligned leading word */ +- x = vec_perm(vec_ld(0,in),(vector signed short)(0),vec_lvsl(0,in)); ++ x = vec_perm(vec_ld(0,in),(vector signed short){0},vec_lvsl(0,in)); + if(cnt < 8){ /* Shift right to chop stuff beyond end of short block */ + s.c[15] = (8-cnt)<<4; + x = vec_sro(x,s.cv); Added: head/comms/libfec/files/patch-sumsq__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-sumsq__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,47 @@ +--- sumsq_av.c.orig 2019-02-05 19:36:10 UTC ++++ sumsq_av.c +@@ -8,6 +8,7 @@ + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ + ++#include + #include "fec.h" + + unsigned long long sumsq_av(signed short *in,int cnt){ +@@ -17,15 +18,15 @@ unsigned long long sumsq_av(signed short *in,int cnt){ + int pad; + union { vector unsigned char cv; vector unsigned int iv; unsigned int w[4]; unsigned char c[16];} s; + +- carries = sums = (vector unsigned int)(0); ++ carries = sums = (vector unsigned int){0}; + if((pad = (int)in & 15)!=0){ + /* Load unaligned leading word */ +- x = vec_perm(vec_ld(0,in),(vector signed short)(0),vec_lvsl(0,in)); ++ x = vec_perm(vec_ld(0,in),(vector signed short){0},vec_lvsl(0,in)); + if(cnt < 8){ /* Shift right to chop stuff beyond end of short block */ + s.c[15] = (8-cnt)<<4; + x = vec_sro(x,s.cv); + } +- sums = (vector unsigned int)vec_msum(x,x,(vector signed int)(0)); ++ sums = (vector unsigned int)vec_msum(x,x,(vector signed int){0}); + in += 8-pad/2; + cnt -= 8-pad/2; + } +@@ -36,7 +37,7 @@ unsigned long long sumsq_av(signed short *in,int cnt){ + * the earlier terms separately to handle the carries + * The cast to unsigned is OK because squares are always positive + */ +- s1 = (vector unsigned int)vec_msum(x,x,(vector signed int)(0)); ++ s1 = (vector unsigned int)vec_msum(x,x,(vector signed int){0}); + carries = vec_add(carries,vec_addc(sums,s1)); + sums = vec_add(sums,s1); + in += 8; +@@ -47,7 +48,7 @@ unsigned long long sumsq_av(signed short *in,int cnt){ + x = vec_ld(0,in); + s.c[15] = (8-cnt)<<4; + x = vec_sro(x,s.cv); +- s1 = (vector unsigned int)vec_msum(x,x,(vector signed int)(0)); ++ s1 = (vector unsigned int)vec_msum(x,x,(vector signed int){0}); + carries = vec_add(carries,vec_addc(sums,s1)); + sums = vec_add(sums,s1); + } Added: head/comms/libfec/files/patch-viterbi27__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-viterbi27__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,41 @@ +--- viterbi27_av.c.orig 2019-02-05 19:34:45 UTC ++++ viterbi27_av.c +@@ -1,6 +1,7 @@ + /* K=7 r=1/2 Viterbi decoder for PowerPC G4/G5 Altivec instructions + * Feb 2004, Phil Karn, KA9Q + */ ++#include + #include + #include + #include +@@ -31,7 +32,7 @@ int init_viterbi27_av(void *p,int starting_state){ + if(p == NULL) + return -1; + for(i=0;i<4;i++) +- vp->metrics1.v[i] = (vector unsigned char)(63); ++ vp->metrics1.v[i] = (vector unsigned char){63}; + vp->old_metrics = &vp->metrics1; + vp->new_metrics = &vp->metrics2; + vp->dp = vp->decisions; +@@ -134,8 +135,8 @@ int update_viterbi27_blk_av(void *p,unsigned char *sym + + /* Form first set of 16 branch metrics */ + metric = vec_avg(vec_xor(Branchtab27[0].v[0],sym0v),vec_xor(Branchtab27[1].v[0],sym1v)); +- metric = vec_sr(metric,(vector unsigned char)(3)); +- m_metric = vec_sub((vector unsigned char)(31),metric); ++ metric = vec_sr(metric,(vector unsigned char){3}); ++ m_metric = vec_sub((vector unsigned char){31},metric); + + /* Form first set of path metrics */ + m0 = vec_adds(vp->old_metrics->v[0],metric); +@@ -145,8 +146,8 @@ int update_viterbi27_blk_av(void *p,unsigned char *sym + + /* Form second set of 16 branch metrics */ + metric = vec_avg(vec_xor(Branchtab27[0].v[1],sym0v),vec_xor(Branchtab27[1].v[1],sym1v)); +- metric = vec_sr(metric,(vector unsigned char)(3)); +- m_metric = vec_sub((vector unsigned char)(31),metric); ++ metric = vec_sr(metric,(vector unsigned char){3}); ++ m_metric = vec_sub((vector unsigned char){31},metric); + + /* Compare and select first set */ + decision0 = vec_cmpgt(m0,m1); Added: head/comms/libfec/files/patch-viterbi29__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-viterbi29__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,34 @@ +--- viterbi29_av.c.orig 2019-02-05 19:33:58 UTC ++++ viterbi29_av.c +@@ -2,9 +2,11 @@ + * Copyright Feb 2004, Phil Karn, KA9Q + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ ++#include + #include + #include + #include ++#include + #include + #include "fec.h" + +@@ -31,7 +33,7 @@ int init_viterbi29_av(void *p,int starting_state){ + if(p == NULL) + return -1; + for(i=0;i<16;i++) +- vp->metrics1.v[i] = (vector unsigned char)(63); ++ vp->metrics1.v[i] = (vector unsigned char){63}; + + vp->old_metrics = &vp->metrics1; + vp->new_metrics = &vp->metrics2; +@@ -136,8 +138,8 @@ int update_viterbi29_blk_av(void *p,unsigned char *sym + + /* Form branch metrics */ + metric = vec_avg(vec_xor(Branchtab29[0].v[i],sym1v),vec_xor(Branchtab29[1].v[i],sym2v)); +- metric = vec_sr(metric,(vector unsigned char)(3)); +- m_metric = (vector unsigned char)(31) - metric; ++ metric = vec_sr(metric,(vector unsigned char){3}); ++ m_metric = (vector unsigned char){31} - metric; + + /* Add branch metrics to path metrics */ + m0 = vec_adds(vp->old_metrics->v[i],metric); Added: head/comms/libfec/files/patch-viterbi39__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-viterbi39__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,46 @@ +--- viterbi39_av.c.orig 2019-02-05 19:31:24 UTC ++++ viterbi39_av.c +@@ -3,6 +3,7 @@ + * Copyright Aug 2006, Phil Karn, KA9Q + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ ++#include + #include + #include + #include +@@ -30,7 +31,7 @@ int init_viterbi39_av(void *p,int starting_state){ + int i; + + for(i=0;i<32;i++) +- vp->metrics1.v[i] = (vector unsigned short)(1000); ++ vp->metrics1.v[i] = (vector unsigned short){1000}; + + vp->old_metrics = &vp->metrics1; + vp->new_metrics = &vp->metrics2; +@@ -111,7 +112,7 @@ int update_viterbi39_blk_av(void *p,unsigned char *sym + struct v39 *vp = p; + decision_t *d = (decision_t *)vp->dp; + int path_metric = 0; +- vector unsigned char decisions = (vector unsigned char)(0); ++ vector unsigned char decisions = (vector unsigned char){0}; + + while(nbits--){ + vector unsigned short symv,sym0v,sym1v,sym2v; +@@ -122,7 +123,7 @@ int update_viterbi39_blk_av(void *p,unsigned char *sym + /* Splat the 0th symbol across sym0v, the 1st symbol across sym1v, etc */ + s = (vector unsigned char)vec_perm(vec_ld(0,syms),vec_ld(5,syms),vec_lvsl(0,syms)); + +- symv = (vector unsigned short)vec_mergeh((vector unsigned char)(0),s); /* Unsigned byte->word unpack */ ++ symv = (vector unsigned short)vec_mergeh((vector unsigned char){0},s); /* Unsigned byte->word unpack */ + sym0v = vec_splat(symv,0); + sym1v = vec_splat(symv,1); + sym2v = vec_splat(symv,2); +@@ -140,7 +141,7 @@ int update_viterbi39_blk_av(void *p,unsigned char *sym + m0 = vec_add(vec_xor(Branchtab39[0].v[i],sym0v),vec_xor(Branchtab39[1].v[i],sym1v)); + m1 = vec_xor(Branchtab39[2].v[i],sym2v); + metric = vec_add(m0,m1); +- m_metric = vec_sub((vector unsigned short)(765),metric); ++ m_metric = vec_sub((vector unsigned short){765},metric); + + /* Add branch metrics to path metrics */ + m0 = vec_adds(vp->old_metrics->v[i],metric); Added: head/comms/libfec/files/patch-viterbi615__av.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/comms/libfec/files/patch-viterbi615__av.c Wed Feb 6 23:49:11 2019 (r492337) @@ -0,0 +1,46 @@ +--- viterbi615_av.c.orig 2019-02-05 19:33:18 UTC ++++ viterbi615_av.c +@@ -3,6 +3,7 @@ + * Copyright Mar 2004, Phil Karn, KA9Q + * May be used under the terms of the GNU Lesser General Public License (LGPL) + */ ++#include + #include + #include + #include +@@ -33,7 +34,7 @@ int init_viterbi615_av(void *p,int starting_state){ + return -1; + + for(i=0;i<2048;i++) +- vp->metrics1.v[i] = (vector unsigned short)(5000); ++ vp->metrics1.v[i] = (vector unsigned short){5000}; + + vp->old_metrics = &vp->metrics1; + vp->new_metrics = &vp->metrics2; +@@ -111,7 +112,7 @@ int update_viterbi615_blk_av(void *p,unsigned char *sy + struct v615 *vp = p; + decision_t *d = (decision_t *)vp->dp; + int path_metric = 0; +- vector unsigned char decisions = (vector unsigned char)(0); ++ vector unsigned char decisions = (vector unsigned char){0}; + + while(nbits--){ + vector unsigned short symv,sym0v,sym1v,sym2v,sym3v,sym4v,sym5v; +@@ -122,7 +123,7 @@ int update_viterbi615_blk_av(void *p,unsigned char *sy + /* Splat the 0th symbol across sym0v, the 1st symbol across sym1v, etc */ + s = (vector unsigned char)vec_perm(vec_ld(0,syms),vec_ld(5,syms),vec_lvsl(0,syms)); + +- symv = (vector unsigned short)vec_mergeh((vector unsigned char)(0),s); /* Unsigned byte->word unpack */ ++ symv = (vector unsigned short)vec_mergeh((vector unsigned char){0},s); /* Unsigned byte->word unpack */ + sym0v = vec_splat(symv,0); + sym1v = vec_splat(symv,1); + sym2v = vec_splat(symv,2); +@@ -145,7 +146,7 @@ int update_viterbi615_blk_av(void *p,unsigned char *sy + m2 = vec_add(vec_xor(Branchtab615[4].v[i],sym4v),vec_xor(Branchtab615[5].v[i],sym5v)); + metric = vec_add(m0,m1); + metric = vec_add(metric,m2); +- m_metric = vec_sub((vector unsigned short)(1530),metric); ++ m_metric = vec_sub((vector unsigned short){1530},metric); + + /* Add branch metrics to path metrics */ + m0 = vec_adds(vp->old_metrics->v[i],metric);