1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-02-01 19:59:15 +00:00

Minor code cleaning

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@287 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
Carles Fernandez 2012-12-14 22:28:25 +00:00
parent 22254b05fd
commit 4adeef7aec

View File

@ -1,11 +1,10 @@
/*! /*!
* \file volk_cw_epl_corr.h * \file volk_cw_epl_corr.h
* \brief Implements the carrier wipeoff function and the Early Prompt Late correlators in a single SSE-enabled loop. * \brief Implements the carrier wipe-off function and the Early-Prompt-Late
* correlators in a single SSE-enabled loop.
* *
* \author Javier Arribas 2012, jarribas(at)cttc.es * \author Javier Arribas 2012, jarribas(at)cttc.es
* *
* Detailed description of the file here if needed.
*
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
* *
* Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors)
@ -31,8 +30,8 @@
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
*/ */
#ifndef INCLUDED_volk_cw_epl_corr_H #ifndef GNSS_SDR_VOLK_CW_EPL_CORR_H_
#define INCLUDED_volk_cw_epl_corr_H #define GNSS_SDR_VOLK_CW_EPL_CORR_H_
#include <inttypes.h> #include <inttypes.h>
#include <stdio.h> #include <stdio.h>
@ -45,6 +44,8 @@
*/ */
#ifdef LV_HAVE_SSE3 #ifdef LV_HAVE_SSE3
#include <pmmintrin.h> #include <pmmintrin.h>
/*! /*!
\brief Performs the carrier wipe-off mixing and the Early, Prompt, and Late correlation \brief Performs the carrier wipe-off mixing and the Early, Prompt, and Late correlation
\param input The input signal input \param input The input signal input
@ -57,8 +58,8 @@
\param L_out Early correlation output \param L_out Early correlation output
\param num_points The number of complex values in vectors \param num_points The number of complex values in vectors
*/ */
static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* carrier, const lv_32fc_t* E_code, const lv_32fc_t* P_code, const lv_32fc_t* L_code, lv_32fc_t* E_out, lv_32fc_t* P_out, lv_32fc_t* L_out, unsigned int num_points)
static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* carrier, const lv_32fc_t* E_code, const lv_32fc_t* P_code, const lv_32fc_t* L_code, lv_32fc_t* E_out, lv_32fc_t* P_out, lv_32fc_t* L_out, unsigned int num_points){ {
unsigned int number = 0; unsigned int number = 0;
const unsigned int halfPoints = num_points / 2; const unsigned int halfPoints = num_points / 2;
@ -72,9 +73,9 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
// Aux vars // Aux vars
__m128 x, y, yl, yh, z, tmp1, tmp2, z_E, z_P, z_L; __m128 x, y, yl, yh, z, tmp1, tmp2, z_E, z_P, z_L;
z_E=_mm_setzero_ps(); z_E = _mm_setzero_ps();
z_P=_mm_setzero_ps(); z_P = _mm_setzero_ps();
z_L=_mm_setzero_ps(); z_L = _mm_setzero_ps();
//input and output vectors //input and output vectors
//lv_32fc_t* _input_BB = input_BB; //lv_32fc_t* _input_BB = input_BB;
@ -84,8 +85,8 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
const lv_32fc_t* _P_code = P_code; const lv_32fc_t* _P_code = P_code;
const lv_32fc_t* _L_code = L_code; const lv_32fc_t* _L_code = L_code;
for(;number < halfPoints; number++){ for(;number < halfPoints; number++)
{
// carrier wipe-off (vector point-to-point product) // carrier wipe-off (vector point-to-point product)
x = _mm_loadu_ps((float*)_input); // Load the ar + ai, br + bi as ar,ai,br,bi x = _mm_loadu_ps((float*)_input); // Load the ar + ai, br + bi as ar,ai,br,bi
y = _mm_loadu_ps((float*)_carrier); // Load the cr + ci, dr + di as cr,ci,dr,di y = _mm_loadu_ps((float*)_carrier); // Load the cr + ci, dr + di as cr,ci,dr,di
@ -106,7 +107,7 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
// correlation E,P,L (3x vector scalar product) // correlation E,P,L (3x vector scalar product)
// Early // Early
//x = _mm_load_ps((float*)_input_BB); // Load the ar + ai, br + bi as ar,ai,br,bi //x = _mm_load_ps((float*)_input_BB); // Load the ar + ai, br + bi as ar,ai,br,bi
x=z; x = z;
y = _mm_load_ps((float*)_E_code); // Load the cr + ci, dr + di as cr,ci,dr,di y = _mm_load_ps((float*)_E_code); // Load the cr + ci, dr + di as cr,ci,dr,di
@ -170,7 +171,6 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
_L_code +=2; _L_code +=2;
} }
__VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_E[2]; __VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_E[2];
__VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_P[2]; __VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_P[2];
__VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_L[2]; __VOLK_ATTR_ALIGNED(16) lv_32fc_t dotProductVector_L[2];
@ -184,12 +184,12 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
dotProduct_P += ( dotProductVector_P[0] + dotProductVector_P[1] ); dotProduct_P += ( dotProductVector_P[0] + dotProductVector_P[1] );
dotProduct_L += ( dotProductVector_L[0] + dotProductVector_L[1] ); dotProduct_L += ( dotProductVector_L[0] + dotProductVector_L[1] );
if((num_points % 2) != 0) { if((num_points % 2) != 0)
{
//_input_BB = (*_input) * (*_carrier); //_input_BB = (*_input) * (*_carrier);
dotProduct_E += (*_input) * (*_E_code)*(*_carrier); dotProduct_E += (*_input) * (*_E_code)*(*_carrier);
dotProduct_P += (*_input) * (*_P_code)*(*_carrier); dotProduct_P += (*_input) * (*_P_code)*(*_carrier);
dotProduct_L += (*_input) * (*_L_code)*(*_carrier); dotProduct_L += (*_input) * (*_L_code)*(*_carrier);
} }
*E_out = dotProduct_E; *E_out = dotProduct_E;
@ -199,5 +199,4 @@ static inline void volk_cw_epl_corr_u(const lv_32fc_t* input, const lv_32fc_t* c
#endif /* LV_HAVE_SSE */ #endif /* LV_HAVE_SSE */
#endif /* GNSS_SDR_VOLK_CW_EPL_CORR_H_ */
#endif /* INCLUDED_volk_cw_epl_corr_H */