use super::common::BLOCK_DIM;
#[inline(always)]
pub(super) fn extract_block_8x8(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 64],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..8 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 8..dy * 8 + 8].copy_from_slice(&plane[src..src + 8]);
}
}
#[inline(always)]
pub(super) fn extract_block_8x16(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 128],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..16 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 8..dy * 8 + 8].copy_from_slice(&plane[src..src + 8]);
}
}
#[inline(always)]
pub(super) fn extract_block_16x8(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 128],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..8 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 16..dy * 16 + 16].copy_from_slice(&plane[src..src + 16]);
}
}
#[inline(always)]
pub(super) fn extract_block_16x16(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 256],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..16 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 16..dy * 16 + 16].copy_from_slice(&plane[src..src + 16]);
}
}
#[inline(always)]
pub(super) fn extract_block_32x32(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 1024],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..32 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 32..dy * 32 + 32].copy_from_slice(&plane[src..src + 32]);
}
}
#[inline(always)]
pub(super) fn extract_block_32x16(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 512],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..32 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 16..dy * 16 + 16].copy_from_slice(&plane[src..src + 16]);
}
}
#[inline(always)]
pub(super) fn extract_block_16x32(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 512],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..16 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 32..dy * 32 + 32].copy_from_slice(&plane[src..src + 32]);
}
}
#[inline(always)]
pub(super) fn extract_block_64x64(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 4096],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..64 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 64..dy * 64 + 64].copy_from_slice(&plane[src..src + 64]);
}
}
#[inline(always)]
pub(super) fn extract_block_64x32(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 2048],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..64 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 32..dy * 32 + 32].copy_from_slice(&plane[src..src + 32]);
}
}
#[inline(always)]
pub(super) fn extract_block_32x64(
plane: &[f32],
stride: usize,
bx: usize,
by: usize,
out: &mut [f32; 2048],
) {
let x0 = bx * BLOCK_DIM;
for dy in 0..32 {
let src = (by * BLOCK_DIM + dy) * stride + x0;
out[dy * 64..dy * 64 + 64].copy_from_slice(&plane[src..src + 64]);
}
}