summaryrefslogtreecommitdiff
path: root/gr-dtv
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2016-05-30 13:54:20 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2016-05-30 13:54:20 -0700
commit0d32337545f554dffe0dee69f5f1415ac2f5b673 (patch)
tree484d30b4cfd6b5117ec621072c00553162e434a8 /gr-dtv
parent2b388eac959cc9b516f5ef6dea4f79d51a540dfd (diff)
parent23460e36094ad85c559a538918c3b40e76b2fa37 (diff)
Merge branch 'maint'
Conflicts: CMakeLists.txt
Diffstat (limited to 'gr-dtv')
-rw-r--r--gr-dtv/lib/CMakeLists.txt19
-rw-r--r--gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc5
-rw-r--r--gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc3
-rw-r--r--gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc4
-rw-r--r--gr-dtv/lib/dvbt/dvbt_reed_solomon.cc14
-rw-r--r--gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc24
6 files changed, 43 insertions, 26 deletions
diff --git a/gr-dtv/lib/CMakeLists.txt b/gr-dtv/lib/CMakeLists.txt
index 6ae308395d..fec48990a2 100644
--- a/gr-dtv/lib/CMakeLists.txt
+++ b/gr-dtv/lib/CMakeLists.txt
@@ -133,10 +133,25 @@ list(APPEND dtv_libs
)
include (CheckCCompilerFlag)
-CHECK_C_COMPILER_FLAG ("-msse2" SSE2_SUPPORTED)
+if (MSVC)
+ # 64-bit MSVC always supports SSE2
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(SSE2_SUPPORTED true)
+ else ()
+ CHECK_C_COMPILER_FLAG ("/arch:SSE2" SSE2_SUPPORTED)
+ endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+else ()
+ CHECK_C_COMPILER_FLAG ("-msse2" SSE2_SUPPORTED)
+endif(MSVC)
if(SSE2_SUPPORTED)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
+ if (NOT MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
+ else ()
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
+ endif ()
+ endif ()
ADD_DEFINITIONS(-DDTV_SSE2)
endif(SSE2_SUPPORTED)
diff --git a/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc b/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
index bf7613adae..9e45c81018 100644
--- a/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
@@ -135,8 +135,9 @@ namespace gr {
// First index of d_b is Bit interleaver number
// Second index of d_b is the position inside Bit interleaver
- unsigned char d_b[d_v][d_bsize];
-
+ // Linux: unsigned char d_b[d_v][d_bsize];
+ __GR_VLA2D(unsigned char, d_b, d_v, d_bsize);
+
for (int bcount = 0; bcount < bmax; bcount++) {
for (int w = 0; w < d_bsize; w++) {
int c = in[(bcount * d_bsize) + w];
diff --git a/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc b/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
index 0ab3003d50..d2bfb3d9d2 100644
--- a/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
@@ -136,7 +136,8 @@ namespace gr {
// First index of d_b is Bit interleaver number
// Second index of d_b is the position inside the Bit interleaver
- unsigned char d_b[d_v][d_bsize];
+ // Linux: unsigned char d_b[d_v][d_bsize];
+ __GR_VLA2D(unsigned char, d_b, d_v, d_bsize);
for (int bcount = 0; bcount < bmax; bcount++) {
for (int i = 0; i < d_bsize; i++) {
diff --git a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
index b6eacade63..ee8dce0f15 100644
--- a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
@@ -103,8 +103,8 @@ namespace gr {
int low, size;
// Array to store peak positions
- int peak_pos[d_fft_length];
- float d_phi[d_fft_length];
+ __GR_VLA(int, peak_pos, d_fft_length);
+ __GR_VLA(float, d_phi, d_fft_length);
// Calculate norm
low = lookup_stop - (d_cp_length + d_fft_length - 1);
diff --git a/gr-dtv/lib/dvbt/dvbt_reed_solomon.cc b/gr-dtv/lib/dvbt/dvbt_reed_solomon.cc
index 6277350b42..7d67a0a81a 100644
--- a/gr-dtv/lib/dvbt/dvbt_reed_solomon.cc
+++ b/gr-dtv/lib/dvbt/dvbt_reed_solomon.cc
@@ -245,13 +245,13 @@ namespace gr {
int
dvbt_reed_solomon::rs_decode(unsigned char *data, unsigned char *eras, const int no_eras)
{
- unsigned char sigma[2 * d_t + 1];
- unsigned char b[2 * d_t + 1];
- unsigned char T[2 * d_t + 1];
- unsigned char reg[2 * d_t + 1];
- unsigned char root[2 * d_t + 1];
- unsigned char loc[2 * d_t + 1];
- unsigned char omega[2 * d_t];
+ __GR_VLA(unsigned char, sigma, 2 * d_t + 1);
+ __GR_VLA(unsigned char, b, 2 * d_t + 1);
+ __GR_VLA(unsigned char, T, 2 * d_t + 1);
+ __GR_VLA(unsigned char, reg, 2 * d_t + 1);
+ __GR_VLA(unsigned char, root, 2 * d_t + 1);
+ __GR_VLA(unsigned char, loc, 2 * d_t + 1);
+ __GR_VLA(unsigned char, omega, 2 * d_t);
// Compute erasure locator polynomial
memset(sigma, 0, 2 * d_t + 1);
diff --git a/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc b/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc
index 8e22d8df5a..05554c55fa 100644
--- a/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc
@@ -71,25 +71,25 @@ namespace gr {
};
#ifdef DTV_SSE2
- __m128i dvbt_viterbi_decoder_impl::d_metric0[4] __attribute__ ((aligned(16)));
- __m128i dvbt_viterbi_decoder_impl::d_metric1[4] __attribute__ ((aligned(16)));
- __m128i dvbt_viterbi_decoder_impl::d_path0[4] __attribute__ ((aligned(16)));
- __m128i dvbt_viterbi_decoder_impl::d_path1[4] __attribute__ ((aligned(16)));
+ __GR_ATTR_ALIGNED(16) __m128i dvbt_viterbi_decoder_impl::d_metric0[4];
+ __GR_ATTR_ALIGNED(16) __m128i dvbt_viterbi_decoder_impl::d_metric1[4];
+ __GR_ATTR_ALIGNED(16) __m128i dvbt_viterbi_decoder_impl::d_path0[4];
+ __GR_ATTR_ALIGNED(16) __m128i dvbt_viterbi_decoder_impl::d_path1[4];
#else
- unsigned char dvbt_viterbi_decoder_impl::d_metric0_generic[64] __attribute__ ((aligned(16)));
- unsigned char dvbt_viterbi_decoder_impl::d_metric1_generic[64] __attribute__ ((aligned(16)));
- unsigned char dvbt_viterbi_decoder_impl::d_path0_generic[64] __attribute__ ((aligned(16)));
- unsigned char dvbt_viterbi_decoder_impl::d_path1_generic[64] __attribute__ ((aligned(16)));
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::d_metric0_generic[64];
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::d_metric1_generic[64];
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::d_path0_generic[64];
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::d_path1_generic[64];
#endif
#ifdef DTV_SSE2
- branchtab27 dvbt_viterbi_decoder_impl::Branchtab27_sse2[2] __attribute__ ((aligned(16)));
+ __GR_ATTR_ALIGNED(16) branchtab27 dvbt_viterbi_decoder_impl::Branchtab27_sse2[2];
#else
- branchtab27 dvbt_viterbi_decoder_impl::Branchtab27_generic[2] __attribute__ ((aligned(16)));
+ __GR_ATTR_ALIGNED(16) branchtab27 dvbt_viterbi_decoder_impl::Branchtab27_generic[2];
#endif
- unsigned char dvbt_viterbi_decoder_impl::mmresult[64] __attribute__((aligned(16)));
- unsigned char dvbt_viterbi_decoder_impl::ppresult[TRACEBACK_MAX][64] __attribute__((aligned(16)));
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::mmresult[64];
+ __GR_ATTR_ALIGNED(16) unsigned char dvbt_viterbi_decoder_impl::ppresult[TRACEBACK_MAX][64];
#ifdef DTV_SSE2
void