OpenJPH
Open-source implementation of JPEG2000 Part-15
ojph_block_encoder_avx2.cpp File Reference
#include <cassert>
#include <cstring>
#include <cstdint>
#include <climits>
#include <immintrin.h>
#include "ojph_mem.h"
#include "ojph_arch.h"
#include "ojph_block_encoder.h"
#include "ojph_message.h"
#include "table0.h"
#include "table1.h"

Go to the source code of this file.

Classes

struct  ojph::local::mel_struct
 
struct  ojph::local::vlc_struct_avx2
 
struct  ojph::local::ms_struct
 

Namespaces

namespace  ojph
 
namespace  ojph::local
 

Macros

#define likely(x)   __builtin_expect((x), 1)
 
#define unlikely(x)   __builtin_expect((x), 0)
 
#define ZERO   _mm256_setzero_si256()
 
#define ONE   _mm256_set1_epi32(1)
 

Typedefs

using ojph::local::fn_proc_cq = __m256i(*)(ui32, __m256i *, __m256i &, const __m256i)
 
using ojph::local::fn_proc_mel_encode = void(*)(mel_struct *, __m256i &, __m256i &, __m256i, ui32, const __m256i)
 
using ojph::local::fn_proc_vlc_encode = void(*)(vlc_struct_avx2 *, ui32 *, ui32 *, ui32)
 

Functions

static bool ojph::local::vlc_init_tables ()
 
static bool ojph::local::uvlc_init_tables ()
 
bool ojph::local::initialize_block_encoder_tables_avx2 ()
 
static void ojph::local::mel_init (mel_struct *melp, ui32 buffer_size, ui8 *data)
 
static void ojph::local::mel_emit_bit (mel_struct *melp, int v)
 
static void ojph::local::mel_encode (mel_struct *melp, bool bit)
 
static void ojph::local::vlc_init (vlc_struct_avx2 *vlcp, ui32 buffer_size, ui8 *data)
 
static void ojph::local::vlc_encode (vlc_struct_avx2 *vlcp, ui32 cwd, int cwd_len)
 
static void ojph::local::terminate_mel_vlc (mel_struct *melp, vlc_struct_avx2 *vlcp)
 
static void ojph::local::ms_init (ms_struct *msp, ui32 buffer_size, ui8 *data)
 
static void ojph::local::ms_encode (ms_struct *msp, ui64 cwd, int cwd_len)
 
static void ojph::local::ms_terminate (ms_struct *msp)
 
__m256i ojph::local::avx2_lzcnt_epi32 (__m256i v)
 
__m256i ojph::local::avx2_cmpneq_epi32 (__m256i v, __m256i v2)
 
static void ojph::local::proc_pixel (__m256i *src_vec, ui32 p, __m256i *eq_vec, __m256i *s_vec, __m256i &rho_vec, __m256i &e_qmax_vec)
 
static void ojph::local::rotate_matrix (__m256i *matrix)
 
static void ojph::local::proc_ms_encode (ms_struct *msp, __m256i &tuple_vec, __m256i &uq_vec, __m256i &rho_vec, __m256i *s_vec)
 
static __m256i ojph::local::cal_eps_vec (__m256i *eq_vec, __m256i &u_q_vec, __m256i &e_qmax_vec)
 
static void ojph::local::update_lep (ui32 x, __m256i &prev_e_val_vec, __m256i *eq_vec, __m256i *e_val_vec, const __m256i left_shift)
 
static void ojph::local::update_lcxp (ui32 x, __m256i &prev_cx_val_vec, __m256i &rho_vec, __m256i *cx_val_vec, const __m256i left_shift)
 
static __m256i ojph::local::cal_tuple (__m256i &cq_vec, __m256i &rho_vec, __m256i &eps_vec, ui32 *vlc_tbl)
 
static __m256i ojph::local::proc_cq1 (ui32 x, __m256i *cx_val_vec, __m256i &rho_vec, const __m256i right_shift)
 
static __m256i ojph::local::proc_cq2 (ui32 x, __m256i *cx_val_vec, __m256i &rho_vec, const __m256i right_shift)
 
static void ojph::local::proc_mel_encode1 (mel_struct *melp, __m256i &cq_vec, __m256i &rho_vec, __m256i u_q_vec, ui32 ignore, const __m256i right_shift)
 
static void ojph::local::proc_mel_encode2 (mel_struct *melp, __m256i &cq_vec, __m256i &rho_vec, __m256i u_q_vec, ui32 ignore, const __m256i right_shift)
 
static void ojph::local::proc_vlc_encode1 (vlc_struct_avx2 *vlcp, ui32 *tuple, ui32 *u_q, ui32 ignore)
 
static void ojph::local::proc_vlc_encode2 (vlc_struct_avx2 *vlcp, ui32 *tuple, ui32 *u_q, ui32 ignore)
 
void ojph::local::ojph_encode_codeblock_avx2 (ui32 *buf, ui32 missing_msbs, ui32 num_passes, ui32 width, ui32 height, ui32 stride, ui32 *lengths, ojph::mem_elastic_allocator *elastic, ojph::coded_lists *&coded)
 

Variables

static ui32 ojph::local::ulvc_cwd_pre [33]
 
static int ojph::local::ulvc_cwd_pre_len [33]
 
static ui32 ojph::local::ulvc_cwd_suf [33]
 
static int ojph::local::ulvc_cwd_suf_len [33]
 
static bool ojph::local::tables_initialized = false
 

Macro Definition Documentation

◆ likely

#define likely (   x)    __builtin_expect((x), 1)

Definition at line 52 of file ojph_block_encoder_avx2.cpp.

◆ ONE

#define ONE   _mm256_set1_epi32(1)

Definition at line 483 of file ojph_block_encoder_avx2.cpp.

◆ unlikely

#define unlikely (   x)    __builtin_expect((x), 0)

Definition at line 53 of file ojph_block_encoder_avx2.cpp.

◆ ZERO

#define ZERO   _mm256_setzero_si256()

Definition at line 482 of file ojph_block_encoder_avx2.cpp.