Skip to content
Snippets Groups Projects

Add signaling for a maximum DRED quantizer.

Closed Timothy B. Terriberry requested to merge tterribe/opus:dqmax2 into main
9 files
+ 76
29
Compare changes
  • Side-by-side
  • Inline
Files
9
+ 11
6
@@ -34,7 +34,7 @@
#include <immintrin.h>
#include <math.h>
#include "celt/x86/x86cpu.h"
#define MAX_INPUTS (2048)
@@ -786,19 +786,24 @@ static inline void sparse_cgemv8x4(float *_out, const opus_int8 *w, const int *i
{
__m256i vxj;
__m256i vw;
vxj = _mm256_set1_epi32(*(int*)(void*)&x[*idx++]);
int pos;
pos = (*idx++);
vxj = _mm256_set1_epi32(OP_LOADU_EPI32(&x[pos]));
vw = _mm256_loadu_si256((const __m256i *)(void*)w);
vy0 = opus_mm256_dpbusds_epi32(vy0, vxj, vw);
w += 32;
vxj = _mm256_set1_epi32(*(int*)(void*)&x[*idx++]);
pos = (*idx++);
vxj = _mm256_set1_epi32(OP_LOADU_EPI32(&x[pos]));
vw = _mm256_loadu_si256((const __m256i *)(void*)w);
vy0 = opus_mm256_dpbusds_epi32(vy0, vxj, vw);
w += 32;
vxj = _mm256_set1_epi32(*(int*)(void*)&x[*idx++]);
pos = (*idx++);
vxj = _mm256_set1_epi32(OP_LOADU_EPI32(&x[pos]));
vw = _mm256_loadu_si256((const __m256i *)(void*)w);
vy0 = opus_mm256_dpbusds_epi32(vy0, vxj, vw);
w += 32;
vxj = _mm256_set1_epi32(*(int*)(void*)&x[*idx++]);
pos = (*idx++);
vxj = _mm256_set1_epi32(OP_LOADU_EPI32(&x[pos]));
vw = _mm256_loadu_si256((const __m256i *)(void*)w);
vy0 = opus_mm256_dpbusds_epi32(vy0, vxj, vw);
w += 32;
@@ -810,7 +815,7 @@ static inline void sparse_cgemv8x4(float *_out, const opus_int8 *w, const int *i
__m256i vw;
int pos;
pos = (*idx++);
vxj = _mm256_set1_epi32(*(int*)(void*)&x[pos]);
vxj = _mm256_set1_epi32(OP_LOADU_EPI32(&x[pos]));
vw = _mm256_loadu_si256((const __m256i *)(void*)w);
vy0 = opus_mm256_dpbusds_epi32(vy0, vxj, vw);
w += 32;
Loading