1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-15 20:50:33 +00:00

Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next

This commit is contained in:
Carles Fernandez 2018-03-04 02:09:23 +01:00
commit 622786aed1
383 changed files with 8704 additions and 8229 deletions

View File

@ -54,7 +54,8 @@ galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc(
unsigned int sampled_ms, unsigned int max_dwells,
unsigned int doppler_max, long freq, long fs_in,
int samples_per_ms, int samples_per_code,
bool dump, std::string dump_filename) : gr::block("galileo_pcps_8ms_acquisition_cc",
bool dump,
std::string dump_filename) : gr::block("galileo_pcps_8ms_acquisition_cc",
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{

View File

@ -71,9 +71,7 @@ gps_pcps_acquisition_fpga_sc::gps_pcps_acquisition_fpga_sc(
int samples_per_code, int vector_length, unsigned int nsamples_total,
bool bit_transition_flag, bool use_CFAR_algorithm_flag,
unsigned int select_queue_Fpga, std::string device_name, bool dump,
std::string dump_filename) :
gr::block("pcps_acquisition_fpga_sc",
std::string dump_filename) : gr::block("pcps_acquisition_fpga_sc",
gr::io_signature::make(0, 0, sizeof(lv_16sc_t)),
gr::io_signature::make(0, 0, 0))
{

View File

@ -65,7 +65,8 @@ pcps_acquisition::pcps_acquisition(
int samples_per_ms, int samples_per_code,
bool bit_transition_flag, bool use_CFAR_algorithm_flag,
bool dump, bool blocking,
std::string dump_filename, size_t it_size) : gr::block("pcps_acquisition",
std::string dump_filename,
size_t it_size) : gr::block("pcps_acquisition",
gr::io_signature::make(1, 1, it_size * sampled_ms * samples_per_ms * (bit_transition_flag ? 2 : 1)),
gr::io_signature::make(0, 0, it_size * sampled_ms * samples_per_ms * (bit_transition_flag ? 2 : 1)))
{

View File

@ -61,7 +61,8 @@ pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc(
unsigned int sampled_ms, unsigned int max_dwells,
unsigned int doppler_max, long freq, long fs_in,
int samples_per_ms, int samples_per_code,
bool dump, std::string dump_filename) : gr::block("pcps_cccwsr_acquisition_cc",
bool dump,
std::string dump_filename) : gr::block("pcps_cccwsr_acquisition_cc",
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{

View File

@ -67,7 +67,8 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc(
unsigned int doppler_max, long freq, long fs_in,
int samples_per_ms, int samples_per_code,
bool bit_transition_flag,
bool dump, std::string dump_filename) : gr::block("pcps_quicksync_acquisition_cc",
bool dump,
std::string dump_filename) : gr::block("pcps_quicksync_acquisition_cc",
gr::io_signature::make(1, 1, (sizeof(gr_complex) * sampled_ms * samples_per_ms)),
gr::io_signature::make(0, 0, (sizeof(gr_complex) * sampled_ms * samples_per_ms)))
{

View File

@ -76,7 +76,8 @@ pcps_tong_acquisition_cc::pcps_tong_acquisition_cc(
long freq, long fs_in, int samples_per_ms,
int samples_per_code, unsigned int tong_init_val,
unsigned int tong_max_val, unsigned int tong_max_dwells,
bool dump, std::string dump_filename) : gr::block("pcps_tong_acquisition_cc",
bool dump,
std::string dump_filename) : gr::block("pcps_tong_acquisition_cc",
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{

View File

@ -50,7 +50,8 @@
#define __CLFFT_H
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
#include <stdio.h>

View File

@ -218,8 +218,7 @@ static string baseKernels = string(
" fftKernel16((a), dir); \\\n"
" fftKernel16((a) + 16, dir); \\\n"
" bitreverse32((a)); \\\n"
"}\n\n"
);
"}\n\n");
static string twistKernelInterleaved = string(
"__kernel void \\\n"
@ -243,8 +242,7 @@ static string twistKernelInterleaved = string(
" startIndex += numCols; \\\n"
" } \\\n"
" } \\\n"
"} \\\n"
);
"} \\\n");
static string twistKernelPlannar = string(
"__kernel void \\\n"
@ -269,9 +267,7 @@ static string twistKernelPlannar = string(
" startIndex += numCols; \\\n"
" } \\\n"
" } \\\n"
"} \\\n"
);
"} \\\n");
#endif

View File

@ -95,8 +95,7 @@ allocateTemporaryBufferPlannar(cl_fft_plan *plan, cl_uint batchSize)
return err;
}
void
getKernelWorkDimensions(cl_fft_plan *plan, cl_fft_kernel_info *kernelInfo, cl_int *batchSize, size_t *gWorkItems, size_t *lWorkItems)
void getKernelWorkDimensions(cl_fft_plan *plan, cl_fft_kernel_info *kernelInfo, cl_int *batchSize, size_t *gWorkItems, size_t *lWorkItems)
{
*lWorkItems = kernelInfo->num_workitems_per_workgroup;
int numWorkGroups = kernelInfo->num_workgroups;
@ -193,8 +192,8 @@ clFFT_ExecuteInterleaved( cl_command_queue queue, clFFT_Plan Plan, cl_int batchS
}
// no dram shuffle (transpose required) transform
// all kernels can execute in-place.
else {
else
{
while (kernelInfo)
{
s = batchSize;
@ -297,8 +296,8 @@ clFFT_ExecutePlannar( cl_command_queue queue, clFFT_Plan Plan, cl_int batchSize,
}
}
// no dram shuffle (transpose required) transform
else {
else
{
while (kernelInfo)
{
s = batchSize;
@ -402,4 +401,3 @@ clFFT_1DTwistPlannar(clFFT_Plan Plan, cl_command_queue queue, cl_mem array_real,
return err;
}

View File

@ -135,41 +135,56 @@ getRadixArray(unsigned int n, unsigned int *radixArray, unsigned int *numRadices
case 16:
*numRadices = 2;
radixArray[0] = 8; radixArray[1] = 2;
radixArray[0] = 8;
radixArray[1] = 2;
break;
case 32:
*numRadices = 2;
radixArray[0] = 8; radixArray[1] = 4;
radixArray[0] = 8;
radixArray[1] = 4;
break;
case 64:
*numRadices = 2;
radixArray[0] = 8; radixArray[1] = 8;
radixArray[0] = 8;
radixArray[1] = 8;
break;
case 128:
*numRadices = 3;
radixArray[0] = 8; radixArray[1] = 4; radixArray[2] = 4;
radixArray[0] = 8;
radixArray[1] = 4;
radixArray[2] = 4;
break;
case 256:
*numRadices = 4;
radixArray[0] = 4; radixArray[1] = 4; radixArray[2] = 4; radixArray[3] = 4;
radixArray[0] = 4;
radixArray[1] = 4;
radixArray[2] = 4;
radixArray[3] = 4;
break;
case 512:
*numRadices = 3;
radixArray[0] = 8; radixArray[1] = 8; radixArray[2] = 8;
radixArray[0] = 8;
radixArray[1] = 8;
radixArray[2] = 8;
break;
case 1024:
*numRadices = 3;
radixArray[0] = 16; radixArray[1] = 16; radixArray[2] = 4;
radixArray[0] = 16;
radixArray[1] = 16;
radixArray[2] = 4;
break;
case 2048:
*numRadices = 4;
radixArray[0] = 8; radixArray[1] = 8; radixArray[2] = 8; radixArray[3] = 4;
radixArray[0] = 8;
radixArray[1] = 8;
radixArray[2] = 8;
radixArray[3] = 4;
break;
default:
*numRadices = 0;
@ -602,7 +617,8 @@ insertTwiddleKernel(string &kernelString, int Nr, int numIter, int Nprev, int le
kernelString += string(" angf = (float) (") + num2str(z * numWorkItemsPerXForm) + string(" + ii);\n");
}
for(k = 1; k < Nr; k++) {
for (k = 1; k < Nr; k++)
{
int ind = z * Nr + k;
//float fac = (float) (2.0 * M_PI * (double) k / (double) len);
kernelString += string(" ang = dir * ( 2.0f * M_PI * ") + num2str(k) + string(".0f / ") + num2str(len) + string(".0f )") + string(" * angf;\n");
@ -617,7 +633,8 @@ getPadding(int numWorkItemsPerXForm, int Nprev, int numWorkItemsReq, int numXFor
{
if ((numWorkItemsPerXForm <= Nprev) || (Nprev >= numBanks))
*offset = 0;
else {
else
{
int numRowsReq = ((numWorkItemsPerXForm < numBanks) ? numWorkItemsPerXForm : numBanks) / Nprev;
int numColsReq = 1;
if (numRowsReq > Nr)
@ -628,7 +645,8 @@ getPadding(int numWorkItemsPerXForm, int Nprev, int numWorkItemsReq, int numXFor
if (numWorkItemsPerXForm >= numBanks || numXFormsPerWG == 1)
*midPad = 0;
else {
else
{
int bankNum = ((numWorkItemsReq + *offset) * Nr) & (numBanks - 1);
if (bankNum >= numWorkItemsPerXForm)
*midPad = 0;
@ -646,8 +664,10 @@ insertLocalStores(string &kernelString, int numIter, int Nr, int numWorkItemsPer
{
int z, k;
for(z = 0; z < numIter; z++) {
for(k = 0; k < Nr; k++) {
for (z = 0; z < numIter; z++)
{
for (k = 0; k < Nr; k++)
{
int index = k * (numWorkItemsReq + offset) + z * numWorkItemsPerXForm;
kernelString += string(" lMemStore[") + num2str(index) + string("] = a[") + num2str(z * Nr + k) + string("].") + comp + string(";\n");
}
@ -671,13 +691,15 @@ insertLocalLoads(string &kernelString, int n, int Nr, int Nrn, int Nprev, int Nc
int stride = numWorkItemsReq / Nrn;
int i;
for(i = 0; i < iter; i++) {
for (i = 0; i < iter; i++)
{
int ii = i / (interBlockHNum * vertNum);
int zz = i % (interBlockHNum * vertNum);
int jj = zz % interBlockHNum;
int kk = zz / interBlockHNum;
int z;
for(z = 0; z < Nrn; z++) {
for (z = 0; z < Nrn; z++)
{
int st = kk * vertStride + jj * interBlockHStride + ii * intraBlockHStride + z * stride;
kernelString += string(" a[") + num2str(i * Nrn + z) + string("].") + comp + string(" = lMemLoad[") + num2str(st) + string("];\n");
}
@ -726,10 +748,12 @@ insertLocalLoadIndexArithmatic(string &kernelString, int Nprev, int Nr, int numW
static void
insertLocalStoreIndexArithmatic(string &kernelString, int numWorkItemsReq, int numXFormsPerWG, int Nr, int offset, int midPad)
{
if(numXFormsPerWG == 1) {
if (numXFormsPerWG == 1)
{
kernelString += string(" lMemStore = sMem + ii;\n");
}
else {
else
{
kernelString += string(" lMemStore = sMem + mad24(jj, ") + num2str((numWorkItemsReq + offset) * Nr + midPad) + string(", ii);\n");
}
}
@ -822,7 +846,8 @@ createLocalMemfftKernelString(cl_fft_plan *plan)
int Ncurr = Nprev * N[r];
insertfftKernel(localString, N[r], numIter);
if(r < (numRadix - 1)) {
if (r < (numRadix - 1))
{
insertTwiddleKernel(localString, N[r], numIter, Nprev, len, numWorkItemsPerXForm);
lMemSize = getPadding(numWorkItemsPerXForm, Nprev, numWorkItemsReq, numXFormsPerWG, N[r], plan->num_local_mem_banks, &offset, &midPad);
(*kInfo)->lmem_size = (lMemSize > (*kInfo)->lmem_size) ? lMemSize : (*kInfo)->lmem_size;
@ -869,8 +894,7 @@ createLocalMemfftKernelString(cl_fft_plan *plan)
// decompositions of base radices to generates different kernels and see which gives
// best performance. Following function is just fixed to use 128 as base radix
void
getGlobalRadixInfo(int n, int *radix, int *R1, int *R2, int *numRadices)
void getGlobalRadixInfo(int n, int *radix, int *R1, int *R2, int *numRadices)
{
int baseRadix = min(n, 128);
@ -950,7 +974,6 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir
for (passNum = 0; passNum < numPasses; passNum++)
{
localString.clear();
kernelName.clear();
@ -1123,7 +1146,6 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir
// Store Data
if (strideO == 1)
{
localString += string("lMemStore = sMem + mad24(i, ") + num2str(radix + 1) + string(", j << ") + num2str((int)log2(R1 / R2)) + string(");\n");
localString += string("lMemLoad = sMem + mad24(tid >> ") + num2str((int)log2(radix)) + string(", ") + num2str(radix + 1) + string(", tid & ") + num2str(radix - 1) + string(");\n");
@ -1166,7 +1188,8 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir
localString += string("barrier(CLK_LOCAL_MEM_FENCE);\n");
localString += string("indexOut += tid;\n");
if(dataFormat == clFFT_SplitComplexFormat) {
if (dataFormat == clFFT_SplitComplexFormat)
{
localString += string("out_real += indexOut;\n");
localString += string("out_imag += indexOut;\n");
for (k = 0; k < R1; k++)
@ -1174,17 +1197,18 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir
for (k = 0; k < R1; k++)
localString += string("out_imag[") + num2str(k * threadsPerBlock) + string("] = a[") + num2str(k) + string("].y;\n");
}
else {
else
{
localString += string("out += indexOut;\n");
for (k = 0; k < R1; k++)
localString += string("out[") + num2str(k * threadsPerBlock) + string("] = a[") + num2str(k) + string("];\n");
}
}
else
{
localString += string("indexOut += mad24(j, ") + num2str(numIter * strideO) + string(", i);\n");
if(dataFormat == clFFT_SplitComplexFormat) {
if (dataFormat == clFFT_SplitComplexFormat)
{
localString += string("out_real += indexOut;\n");
localString += string("out_imag += indexOut;\n");
for (k = 0; k < R1; k++)
@ -1192,7 +1216,8 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir
for (k = 0; k < R1; k++)
localString += string("out_imag[") + num2str(((k % R2) * R1 + (k / R2)) * strideO) + string("] = a[") + num2str(k) + string("].y;\n");
}
else {
else
{
localString += string("out += indexOut;\n");
for (k = 0; k < R1; k++)
localString += string("out[") + num2str(((k % R2) * R1 + (k / R2)) * strideO) + string("] = a[") + num2str(k) + string("];\n");
@ -1254,4 +1279,3 @@ void FFT1D(cl_fft_plan *plan, cl_fft_kernel_dir dir)
return;
}
}

View File

@ -218,7 +218,8 @@ int getMaxKernelWorkGroupSize(cl_fft_plan *plan, unsigned int *max_wg_size, unsi
return reg_needed;
}
#define ERR_MACRO(err) { \
#define ERR_MACRO(err) \
{ \
if (err != CL_SUCCESS) \
{ \
if (error_code) \
@ -367,8 +368,7 @@ patch_kernel_source:
return (clFFT_Plan)plan;
}
void
clFFT_DestroyPlan(clFFT_Plan plan)
void clFFT_DestroyPlan(clFFT_Plan plan)
{
cl_fft_plan *Plan = (cl_fft_plan *)plan;
if (Plan)

View File

@ -253,7 +253,8 @@ const unsigned int tbl_CRC24Q[] = {
0x42FA2F, 0xC4B6D4, 0xC82F22, 0x4E63D9, 0xD11CCE, 0x575035, 0x5BC9C3, 0xDD8538};
extern "C" {
extern "C"
{
void dgemm_(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
extern void dgetrf_(int *, int *, double *, int *, int *, int *);
extern void dgetri_(int *, double *, int *, int *, double *, int *, int *);

View File

@ -23,7 +23,10 @@ typedef ptrdiff_t ssize_t;
////////////////////////////////////////////////////////////////////////
#if _MSC_VER < 1800
#include <math.h>
static inline long lrint(double x){return (long)(x > 0.0 ? x + 0.5 : x - 0.5);}
static inline long lrint(double x)
{
return (long)(x > 0.0 ? x + 0.5 : x - 0.5);
}
static inline long lrintf(float x) { return (long)(x > 0.0f ? x + 0.5f : x - 0.5f); }
static inline long long llrint(double x) { return (long long)(x > 0.0 ? x + 0.5 : x - 0.5); }
static inline long long llrintf(float x) { return (long long)(x > 0.0f ? x + 0.5f : x - 0.5f); }
@ -43,7 +46,10 @@ static inline float rintf(float x){return (x > 0.0f)? floorf(x + 0.5f) : ceilf(x
// random and srandom
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
static inline long int random (void) { return rand(); }
static inline long int random(void)
{
return rand();
}
static inline void srandom(unsigned int seed) { srand(seed); }
#endif // _MSC_CONFIG_H_ ]

View File

@ -37,13 +37,17 @@ struct volk_gnsssdr_machine *get_machine(void)
if (machine != NULL)
return machine;
else {
else
{
unsigned int max_score = 0;
unsigned int i;
struct volk_gnsssdr_machine *max_machine = NULL;
for(i=0; i<n_volk_gnsssdr_machines; i++) {
if(!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch()))) {
if(volk_gnsssdr_machines[i]->caps > max_score) {
for (i = 0; i < n_volk_gnsssdr_machines; i++)
{
if (!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch())))
{
if (volk_gnsssdr_machines[i]->caps > max_score)
{
max_score = volk_gnsssdr_machines[i]->caps;
max_machine = volk_gnsssdr_machines[i];
}
@ -63,8 +67,10 @@ void volk_gnsssdr_list_machines(void)
extern unsigned int n_volk_gnsssdr_machines;
unsigned int i;
for(i=0; i<n_volk_gnsssdr_machines; i++) {
if(!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch()))) {
for (i = 0; i < n_volk_gnsssdr_machines; i++)
{
if (!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch())))
{
printf("%s;", volk_gnsssdr_machines[i]->name);
}
}
@ -79,13 +85,17 @@ const char* volk_gnsssdr_get_machine(void)
if (machine != NULL)
return machine->name;
else {
else
{
unsigned int max_score = 0;
unsigned int i;
struct volk_gnsssdr_machine *max_machine = NULL;
for(i=0; i<n_volk_gnsssdr_machines; i++) {
if(!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch()))) {
if(volk_gnsssdr_machines[i]->caps > max_score) {
for (i = 0; i < n_volk_gnsssdr_machines; i++)
{
if (!(volk_gnsssdr_machines[i]->caps & (~volk_gnsssdr_get_lvarch())))
{
if (volk_gnsssdr_machines[i]->caps > max_score)
{
max_score = volk_gnsssdr_machines[i]->caps;
max_machine = volk_gnsssdr_machines[i];
}
@ -110,6 +120,8 @@ bool volk_gnsssdr_is_aligned(const void *ptr)
#define LV_HAVE_GENERIC
#define LV_HAVE_DISPATCHER
// clang-format off
%for kern in kernels:
%if kern.has_dispatcher:
@ -190,6 +202,8 @@ void ${kern.name}_manual(${kern.arglist_full}, const char* impl_name)
);
}
volk_gnsssdr_func_desc_t ${kern.name}_get_func_desc(void) {
const char **impl_names = get_machine()->${kern.name}_impl_names;
const int *impl_deps = get_machine()->${kern.name}_impl_deps;
@ -205,3 +219,5 @@ volk_gnsssdr_func_desc_t ${kern.name}_get_func_desc(void) {
}
%endfor
// clang-format on

View File

@ -73,6 +73,7 @@ VOLK_API bool volk_gnsssdr_is_aligned(const void *ptr);
//! A function pointer to the dispatcher implementation
extern VOLK_API ${kern.pname} ${kern.name};
// clang-format off
//! A function pointer to the fastest aligned implementation
extern VOLK_API ${kern.pname} ${kern.name}_a;
@ -85,6 +86,7 @@ extern VOLK_API void ${kern.name}_manual(${kern.arglist_full}, const char* impl_
//! Get description parameters for this kernel
extern VOLK_API volk_gnsssdr_func_desc_t ${kern.name}_get_func_desc(void);
%endfor
// clang-format off
__VOLK_DECL_END

View File

@ -19,10 +19,11 @@
#ifndef INCLUDED_VOLK_GNSSSDR_CONFIG_FIXED_H
#define INCLUDED_VOLK_GNSSSDR_CONFIG_FIXED_H
// clang-format off
%for i, arch in enumerate(archs):
//#ifndef LV_${arch.name.upper()}
#define LV_${arch.name.upper()} ${i}
//#endif
%endfor
// clang-format on
#endif /*INCLUDED_VOLK_GNSSSDR_CONFIG_FIXED*/

View File

@ -40,9 +40,12 @@ struct VOLK_CPU volk_gnsssdr_cpu;
* check for AVX capability before executing.
*/
#if ((__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 2) || (__clang_major__ >= 3)) && defined(HAVE_XGETBV)
static inline unsigned long long _xgetbv(unsigned int index){
static inline unsigned long long _xgetbv(unsigned int index)
{
unsigned int eax, edx;
__VOLK_ASM __VOLK_VOLATILE ("xgetbv" : "=a"(eax), "=d"(edx) : "c"(index));
__VOLK_ASM __VOLK_VOLATILE("xgetbv"
: "=a"(eax), "=d"(edx)
: "c"(index));
return ((unsigned long long)edx << 32) | eax;
}
#define __xgetbv() _xgetbv(0)
@ -67,7 +70,8 @@ struct VOLK_CPU volk_gnsssdr_cpu;
#endif //defined(VOLK_CPU_x86)
static inline unsigned int cpuid_count_x86_bit(unsigned int level, unsigned int count, unsigned int reg, unsigned int bit) {
static inline unsigned int cpuid_count_x86_bit(unsigned int level, unsigned int count, unsigned int reg, unsigned int bit)
{
#if defined(VOLK_CPU_x86)
unsigned int regs[4] = {0};
cpuid_x86_count(level, count, regs);
@ -77,7 +81,8 @@ static inline unsigned int cpuid_count_x86_bit(unsigned int level, unsigned int
#endif
}
static inline unsigned int cpuid_x86_bit(unsigned int reg, unsigned int op, unsigned int bit) {
static inline unsigned int cpuid_x86_bit(unsigned int reg, unsigned int op, unsigned int bit)
{
#if defined(VOLK_CPU_x86)
unsigned int regs[4];
memset(regs, 0, sizeof(unsigned int) * 4);
@ -88,7 +93,8 @@ static inline unsigned int cpuid_x86_bit(unsigned int reg, unsigned int op, unsi
#endif
}
static inline unsigned int check_extended_cpuid(unsigned int val) {
static inline unsigned int check_extended_cpuid(unsigned int val)
{
#if defined(VOLK_CPU_x86)
unsigned int regs[4];
memset(regs, 0, sizeof(unsigned int) * 4);
@ -99,7 +105,8 @@ static inline unsigned int check_extended_cpuid(unsigned int val) {
#endif
}
static inline unsigned int get_avx_enabled(void) {
static inline unsigned int get_avx_enabled(void)
{
#if defined(VOLK_CPU_x86)
return __xgetbv() & 0x6;
#else
@ -107,7 +114,8 @@ static inline unsigned int get_avx_enabled(void) {
#endif
}
static inline unsigned int get_avx2_enabled(void) {
static inline unsigned int get_avx2_enabled(void)
{
#if defined(VOLK_CPU_x86)
return __xgetbv() & 0x6;
#else
@ -123,7 +131,8 @@ static inline unsigned int get_avx2_enabled(void) {
#define VOLK_CPU_ARM
#endif
static int has_neon(void){
static int has_neon(void)
{
#if defined(VOLK_CPU_ARM)
FILE *auxvec_f;
unsigned long auxvec[2];
@ -134,7 +143,8 @@ static int has_neon(void){
size_t r = 1;
//so auxv is basically 32b of ID and 32b of value
//so it goes like this
while(!found_neon && r) {
while (!found_neon && r)
{
r = fread(auxvec, sizeof(unsigned long), 2, auxvec_f);
if ((auxvec[0] == AT_HWCAP) && (auxvec[1] & HWCAP_NEON))
found_neon = 1;
@ -146,6 +156,7 @@ static int has_neon(void){
return 0;
#endif
}
// clang-format off
%for arch in archs:
static int i_can_has_${arch.name} (void) {
@ -195,3 +206,4 @@ unsigned int volk_gnsssdr_get_lvarch() {
%endfor
return retval;
}
// clang-format on

View File

@ -23,11 +23,13 @@
__VOLK_DECL_BEGIN
// clang-format off
struct VOLK_CPU {
%for arch in archs:
int (*has_${arch.name}) ();
%endfor
};
// clang-format on
extern struct VOLK_CPU volk_gnsssdr_cpu;

View File

@ -16,6 +16,8 @@
* along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
*/
// clang-format off
<% this_machine = machine_dict[args[0]] %>
<% arch_names = this_machine.arch_names %>
@ -31,6 +33,7 @@
#include "config.h"
#endif
%for kern in kernels:
#include <volk_gnsssdr/${kern.name}.h>
%endfor
@ -56,3 +59,4 @@ struct volk_gnsssdr_machine volk_gnsssdr_machine_${this_machine.name} = {
<% len_impls = len(impls) %> ${len_impls},
%endfor
};
// clang-format on

View File

@ -20,6 +20,7 @@
#include <volk_gnsssdr/volk_gnsssdr_typedefs.h>
#include "volk_gnsssdr_machines.h"
// clang-format off
struct volk_gnsssdr_machine *volk_gnsssdr_machines[] = {
%for machine in machines:
#ifdef LV_MACHINE_${machine.name.upper()}
@ -27,5 +28,5 @@ struct volk_gnsssdr_machine *volk_gnsssdr_machines[] = {
#endif
%endfor
};
// clang-format on
unsigned int n_volk_gnsssdr_machines = sizeof(volk_gnsssdr_machines) / sizeof(*volk_gnsssdr_machines);

View File

@ -27,6 +27,7 @@
__VOLK_DECL_BEGIN
// clang-format off
struct volk_gnsssdr_machine {
const unsigned int caps; //capabilities (i.e., archs compiled into this machine, in the volk_gnsssdr_get_lvarch format)
const char *name;
@ -48,5 +49,6 @@ extern struct volk_gnsssdr_machine volk_gnsssdr_machine_${machine.name};
%endfor
__VOLK_DECL_END
// clang-format on
#endif //INCLUDED_LIBVOLK_GNSSSDR_MACHINES_H

View File

@ -22,8 +22,10 @@
#include <inttypes.h>
#include <volk_gnsssdr/volk_gnsssdr_complex.h>
// clang-format off
%for kern in kernels:
typedef void (*${kern.pname})(${kern.arglist_types});
%endfor
// clang-format on
#endif /*INCLUDED_VOLK_GNSSSDR_TYPEDEFS*/

View File

@ -45,7 +45,8 @@
#include <vector>
extern "C" {
extern "C"
{
#include "cnav_msg.h"
#include "edc.h"
#include "bits.h"

View File

@ -42,7 +42,8 @@
#include <utility>
#include <vector>
extern "C" {
extern "C"
{
#include "cnav_msg.h"
#include "edc.h"
#include "bits.h"

View File

@ -34,7 +34,8 @@
#ifndef GNSS_SDR_SUPL_CLIENT_H_
#define GNSS_SDR_SUPL_CLIENT_H_
extern "C" {
extern "C"
{
#include "supl.h"
}
#include "GPS_L1_CA.h"

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Accuracy */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AccuracyOpt */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AcquisAssist */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AddionalAngleFields */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AddionalDopplerFields */

View File

@ -17,7 +17,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AdditionalAssistanceData */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AdditionalDopplerFields */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AlertFlag */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Almanac-KeplerianSet */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Almanac */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AlmanacElement */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AntiSpoofFlag */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* AssistBTSData-R98-ExpOTD */

View File

@ -18,7 +18,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BCCHCarrier */

View File

@ -8,7 +8,8 @@
#include <OCTET_STRING.h> /* Some help from OCTET STRING */
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
typedef struct BIT_STRING_s

View File

@ -8,7 +8,8 @@
#include <asn_application.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/*

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BSIC */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BSICAndCarrier */

View File

@ -14,7 +14,8 @@
#include "Ext-GeographicalInformation.h"
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BTSPosition */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BadSignalElement */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* BitNumber */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* CalcAssistanceBTS */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* CellID */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* CellIDAndLAC */

View File

@ -14,7 +14,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* DGANSSSgnElement */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* DGPSCorrections */

View File

@ -8,7 +8,8 @@
#include <INTEGER.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
typedef INTEGER_t ENUMERATED_t; /* Implemented via INTEGER */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* EOTDQuality */

View File

@ -14,11 +14,13 @@
#include <ENUMERATED.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum EnvironmentCharacter {
typedef enum EnvironmentCharacter
{
EnvironmentCharacter_badArea = 0,
EnvironmentCharacter_notBadArea = 1,
EnvironmentCharacter_mixedArea = 2

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* EphemerisSubframe1Reserved */

View File

@ -14,11 +14,13 @@
#include <ENUMERATED.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum ErrorCodes {
typedef enum ErrorCodes
{
ErrorCodes_unDefined = 0,
ErrorCodes_missingComponet = 1,
ErrorCodes_incorrectData = 2,

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* ExpOTDUncertainty */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* ExpectedOTD */

View File

@ -14,7 +14,8 @@
#include <OCTET_STRING.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Ext-GeographicalInformation */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Extended-reference */

View File

@ -14,7 +14,8 @@
#include <INTEGER.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* ExtensionContainer */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* FineRTD */

View File

@ -14,11 +14,13 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum FixType {
typedef enum FixType
{
FixType_twoDFix = 0,
FixType_threeDFix = 1
} e_FixType;

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* FrameDrift */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* FrameNumber */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSS-AssistData */

View File

@ -14,7 +14,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -18,7 +18,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -17,7 +17,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSS-SgnElement */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSS-SgnTypeElement */

View File

@ -15,11 +15,13 @@
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum GANSSAlmanacElement_PR {
typedef enum GANSSAlmanacElement_PR
{
GANSSAlmanacElement_PR_NOTHING, /* No components present */
GANSSAlmanacElement_PR_keplerianAlmanacSet,
/* Extensions may appear below */

View File

@ -17,7 +17,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSAlmanacModel */

View File

@ -14,7 +14,8 @@
#include <OCTET_STRING.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSAssistanceData */

View File

@ -15,11 +15,13 @@
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum GANSSClockModel_PR {
typedef enum GANSSClockModel_PR
{
GANSSClockModel_PR_NOTHING, /* No components present */
GANSSClockModel_PR_standardClockModelList,
/* Extensions may appear below */

View File

@ -14,7 +14,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSDataBit */

View File

@ -17,7 +17,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSDataBitAssist */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSDiffCorrections */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSIonoStormFlags */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSIonosphereModel */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -20,7 +20,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSMeasureInfo */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSNavModel */

View File

@ -15,11 +15,13 @@
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum GANSSOrbitModel_PR {
typedef enum GANSSOrbitModel_PR
{
GANSSOrbitModel_PR_NOTHING, /* No components present */
GANSSOrbitModel_PR_keplerianSet,
/* Extensions may appear below */

View File

@ -14,11 +14,13 @@
#include <BIT_STRING.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Dependencies */
typedef enum GANSSPositioningMethod {
typedef enum GANSSPositioningMethod
{
GANSSPositioningMethod_gps = 0,
GANSSPositioningMethod_galileo = 1
} e_GANSSPositioningMethod;

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSRealTimeIntegrity */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSRefLocation */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSRefMeasurementAssist */

View File

@ -16,7 +16,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -17,7 +17,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSRefTimeInfo */

View File

@ -15,7 +15,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* Forward declarations */

View File

@ -18,7 +18,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSSatelliteElement */

View File

@ -14,7 +14,8 @@
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSSignalID */

View File

@ -20,7 +20,8 @@
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
extern "C"
{
#endif
/* GANSSTOD-GSMTimeAssociation */

Some files were not shown because too many files have changed in this diff Show More