Skip to content

Commit

Permalink
type splat_mv: Make rmv explicitly Align16.
Browse files Browse the repository at this point in the history
  • Loading branch information
kkysen committed Apr 11, 2024
1 parent b190568 commit 361d1d5
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/refmvs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use crate::src::cpu::{rav1d_get_cpu_flags, CpuFlags};
extern "C" {
fn dav1d_splat_mv_sse2(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
Expand Down Expand Up @@ -66,15 +66,15 @@ extern "C" {
extern "C" {
fn dav1d_splat_mv_avx512icl(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
_rr_len: usize,
);
fn dav1d_splat_mv_avx2(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
Expand Down Expand Up @@ -106,7 +106,7 @@ extern "C" {
extern "C" {
fn dav1d_splat_mv_neon(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
Expand Down Expand Up @@ -344,7 +344,7 @@ extern "C" {

pub type splat_mv_fn = unsafe extern "C" fn(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
Expand All @@ -371,7 +371,6 @@ impl Rav1dRefmvsDSPContext {
) {
let mut r = rt.r_ptrs_mut(r);
let rr = &mut r[(b4.y as usize & 31) + 5..];
let rmv = &rmv.0;
let bx4 = b4.x as _;
let bw4 = bw4 as _;
let bh4 = bh4 as _;
Expand Down Expand Up @@ -1630,20 +1629,21 @@ pub(crate) fn rav1d_refmvs_clear(rf: &mut RefMvsFrame) {

unsafe extern "C" fn splat_mv_rust(
rr: *mut *mut refmvs_block,
rmv: *const refmvs_block,
rmv: *const Align16<refmvs_block>,
bx4: c_int,
bw4: c_int,
bh4: c_int,
rr_len: usize,
) {
let rmv = &*rmv;
let rmv = rmv.0;
let [bx4, bw4, bh4] = [bx4, bw4, bh4].map(|it| it as usize);

// Safety: `rr` and `rr_len` are the raw parts of a slice in [`Dav1dRefmvsDSPContext::splat_mv`].
let rr = unsafe { std::slice::from_raw_parts_mut(rr, rr_len) };

for r in &mut rr[..bh4] {
std::slice::from_raw_parts_mut(*r, bx4 + bw4)[bx4..].fill_with(|| rmv.clone())
std::slice::from_raw_parts_mut(*r, bx4 + bw4)[bx4..].fill_with(|| rmv)
}
}

Expand Down

0 comments on commit 361d1d5

Please sign in to comment.