OpenJPH
Open-source implementation of JPEG2000 Part-15
ojph_block_encoder_avx512.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
 
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   _mm512_setzero_epi32()
 
#define ONE   _mm512_set1_epi32(1)
 

Typedefs

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

Functions

static bool ojph::local::vlc_init_tables ()
 
static bool ojph::local::uvlc_init_tables ()
 
bool ojph::local::initialize_tables ()
 
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 *vlcp, ui32 buffer_size, ui8 *data)
 
static void ojph::local::vlc_encode (vlc_struct *vlcp, ui32 cwd, int cwd_len)
 
static void ojph::local::terminate_mel_vlc (mel_struct *melp, vlc_struct *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)
 
static void ojph::local::proc_pixel (__m512i *src_vec, ui32 p, __m512i *eq_vec, __m512i *s_vec, __m512i &rho_vec, __m512i &e_qmax_vec)
 
static void ojph::local::rotate_matrix (__m512i *matrix)
 
static void ojph::local::proc_ms_encode (ms_struct *msp, __m512i &tuple_vec, __m512i &uq_vec, __m512i &rho_vec, __m512i *s_vec)
 
static __m512i ojph::local::cal_eps_vec (__m512i *eq_vec, __m512i &u_q_vec, __m512i &e_qmax_vec)
 
static void ojph::local::update_lep (ui32 x, __m512i &prev_e_val_vec, __m512i *eq_vec, __m512i *e_val_vec, const __m512i left_shift)
 
static void ojph::local::update_lcxp (ui32 x, __m512i &prev_cx_val_vec, __m512i &rho_vec, __m512i *cx_val_vec, const __m512i left_shift)
 
static __m512i ojph::local::cal_tuple (__m512i &cq_vec, __m512i &rho_vec, __m512i &eps_vec, ui32 *vlc_tbl)
 
static __m512i ojph::local::proc_cq1 (ui32 x, __m512i *cx_val_vec, __m512i &rho_vec, const __m512i right_shift)
 
static __m512i ojph::local::proc_cq2 (ui32 x, __m512i *cx_val_vec, __m512i &rho_vec, const __m512i right_shift)
 
static void ojph::local::proc_mel_encode1 (mel_struct *melp, __m512i &cq_vec, __m512i &rho_vec, __m512i u_q_vec, ui32 ignore, const __m512i right_shift)
 
static void ojph::local::proc_mel_encode2 (mel_struct *melp, __m512i &cq_vec, __m512i &rho_vec, __m512i u_q_vec, ui32 ignore, const __m512i right_shift)
 
static void ojph::local::proc_vlc_encode1 (vlc_struct *vlcp, ui32 *tuple, ui32 *u_q, ui32 ignore)
 
static void ojph::local::proc_vlc_encode2 (vlc_struct *vlcp, ui32 *tuple, ui32 *u_q, ui32 ignore)
 
void ojph::local::ojph_encode_codeblock_avx512 (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 = initialize_tables()
 

Macro Definition Documentation

◆ likely

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

Definition at line 52 of file ojph_block_encoder_avx512.cpp.

◆ ONE

#define ONE   _mm512_set1_epi32(1)

Definition at line 476 of file ojph_block_encoder_avx512.cpp.

◆ unlikely

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

Definition at line 53 of file ojph_block_encoder_avx512.cpp.

◆ ZERO

#define ZERO   _mm512_setzero_epi32()

Definition at line 475 of file ojph_block_encoder_avx512.cpp.