pub(crate) fn mlkem_compress_d10(r: &mut [u8; 320], a: &[i16; 256]) {
assert!((a.as_ptr() as usize).is_multiple_of(32));
unsafe { mlkem_poly_compress_d10_avx2_asm(r, a, &COMPRESS_D10_DATA) }
}
pub(crate) fn mlkem_compress_d4(r: &mut [u8; 128], a: &[i16; 256]) {
assert!((a.as_ptr() as usize).is_multiple_of(32));
unsafe { mlkem_poly_compress_d4_avx2_asm(r, a, &COMPRESS_D4_DATA) }
}
#[repr(C, align(32))]
struct Table([u8; 32]);
static COMPRESS_D10_DATA: Table = Table([
0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 255, 255, 255, 255, 255, 255, 9, 10, 11, 12, 255, 255, 255,
255, 255, 255, 0, 1, 2, 3, 4, 8,
]);
static COMPRESS_D4_DATA: Table = Table([
0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,
]);
#[unsafe(naked)]
unsafe extern "sysv64" fn mlkem_poly_compress_d10_avx2_asm(
r: *mut [u8; 320],
a: *const [i16; 256],
data: *const Table,
) {
#[cfg(not(target_vendor = "apple"))]
core::arch::naked_asm!(
include_str!("aws_lc/mlkem_poly_compress_d10_avx2_asm.linux.s"),
options(att_syntax),
);
#[cfg(target_vendor = "apple")]
core::arch::naked_asm!(
include_str!("aws_lc/mlkem_poly_compress_d10_avx2_asm.apple.s"),
options(att_syntax),
);
}
#[unsafe(naked)]
unsafe extern "sysv64" fn mlkem_poly_compress_d4_avx2_asm(
r: *mut [u8; 128],
a: *const [i16; 256],
data: *const Table,
) {
#[cfg(not(target_vendor = "apple"))]
core::arch::naked_asm!(
include_str!("aws_lc/mlkem_poly_compress_d4_avx2_asm.linux.s"),
options(att_syntax),
);
#[cfg(target_vendor = "apple")]
core::arch::naked_asm!(
include_str!("aws_lc/mlkem_poly_compress_d4_avx2_asm.apple.s"),
options(att_syntax),
);
}