#![allow(non_upper_case_globals, unused_macros, unused_imports)]
use crate::low::macros::*;
pub(crate) fn mlkem_intt(a: &mut [i16; 256], qdata: &[i16; 624]) {
debug_assert!((a.as_mut_ptr() as usize).is_multiple_of(32));
debug_assert!((qdata.as_ptr() as usize).is_multiple_of(32));
unsafe {
core::arch::asm!(
Q!(" endbr64 " ),
Q!(" mov " "eax, 0xd010d01"),
Q!(" vmovd " "xmm0, eax"),
Q!(" vpbroadcastd " "ymm0, xmm0"),
Q!(" mov " "eax, 0xd8a1d8a1"),
Q!(" vmovd " "xmm2, eax"),
Q!(" vpbroadcastd " "ymm2, xmm2"),
Q!(" mov " "eax, 0x5a105a1"),
Q!(" vmovd " "xmm3, eax"),
Q!(" vpbroadcastd " "ymm3, xmm3"),
Q!(" vmovdqa " "ymm4, [rdi]"),
Q!(" vmovdqa " "ymm6, [64 + rdi]"),
Q!(" vmovdqa " "ymm5, [32 + rdi]"),
Q!(" vmovdqa " "ymm7, [96 + rdi]"),
Q!(" vpmullw " "ymm12, ymm4, ymm2"),
Q!(" vpmulhw " "ymm4, ymm4, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm4, ymm4, ymm12"),
Q!(" vpmullw " "ymm12, ymm6, ymm2"),
Q!(" vpmulhw " "ymm6, ymm6, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm6, ymm6, ymm12"),
Q!(" vpmullw " "ymm12, ymm5, ymm2"),
Q!(" vpmulhw " "ymm5, ymm5, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm5, ymm5, ymm12"),
Q!(" vpmullw " "ymm12, ymm7, ymm2"),
Q!(" vpmulhw " "ymm7, ymm7, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm7, ymm7, ymm12"),
Q!(" vmovdqa " "ymm8, [128 + rdi]"),
Q!(" vmovdqa " "ymm10, [192 + rdi]"),
Q!(" vmovdqa " "ymm9, [160 + rdi]"),
Q!(" vmovdqa " "ymm11, [224 + rdi]"),
Q!(" vpmullw " "ymm12, ymm8, ymm2"),
Q!(" vpmulhw " "ymm8, ymm8, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm8, ymm8, ymm12"),
Q!(" vpmullw " "ymm12, ymm10, ymm2"),
Q!(" vpmulhw " "ymm10, ymm10, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm10, ymm10, ymm12"),
Q!(" vpmullw " "ymm12, ymm9, ymm2"),
Q!(" vpmulhw " "ymm9, ymm9, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm9, ymm9, ymm12"),
Q!(" vpmullw " "ymm12, ymm11, ymm2"),
Q!(" vpmulhw " "ymm11, ymm11, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm11, ymm11, ymm12"),
Q!(" vpermq " "ymm15, [928 + rsi], 0x4e"),
Q!(" vpermq " "ymm1, [864 + rsi], 0x4e"),
Q!(" vpermq " "ymm2, [960 + rsi], 0x4e"),
Q!(" vpermq " "ymm3, [896 + rsi], 0x4e"),
Q!(" vmovdqa " "ymm12, [rsi]"),
Q!(" vpshufb " "ymm15, ymm15, ymm12"),
Q!(" vpshufb " "ymm1, ymm1, ymm12"),
Q!(" vpshufb " "ymm2, ymm2, ymm12"),
Q!(" vpshufb " "ymm3, ymm3, ymm12"),
Q!(" vpsubw " "ymm12, ymm6, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm6"),
Q!(" vpsubw " "ymm13, ymm7, ymm5"),
Q!(" vpmullw " "ymm6, ymm12, ymm15"),
Q!(" vpaddw " "ymm5, ymm5, ymm7"),
Q!(" vpsubw " "ymm14, ymm10, ymm8"),
Q!(" vpmullw " "ymm7, ymm13, ymm15"),
Q!(" vpaddw " "ymm8, ymm8, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm9"),
Q!(" vpmullw " "ymm10, ymm14, ymm1"),
Q!(" vpaddw " "ymm9, ymm9, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm1"),
Q!(" vpmulhw " "ymm12, ymm12, ymm2"),
Q!(" vpmulhw " "ymm13, ymm13, ymm2"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm6, ymm6, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm6, ymm12, ymm6"),
Q!(" vpsubw " "ymm7, ymm13, ymm7"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpermq " "ymm2, [800 + rsi], 0x4e"),
Q!(" vpermq " "ymm3, [832 + rsi], 0x4e"),
Q!(" vmovdqa " "ymm1, [rsi]"),
Q!(" vpshufb " "ymm2, ymm2, ymm1"),
Q!(" vpshufb " "ymm3, ymm3, ymm1"),
Q!(" vpsubw " "ymm12, ymm8, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm8"),
Q!(" vpsubw " "ymm13, ymm9, ymm5"),
Q!(" vpmullw " "ymm8, ymm12, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm9"),
Q!(" vpsubw " "ymm14, ymm10, ymm6"),
Q!(" vpmullw " "ymm9, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm7"),
Q!(" vpmullw " "ymm10, ymm14, ymm2"),
Q!(" vpaddw " "ymm7, ymm7, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm3"),
Q!(" vpmulhw " "ymm13, ymm13, ymm3"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm8, ymm12, ymm8"),
Q!(" vpsubw " "ymm9, ymm13, ymm9"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpslld " "ymm3, ymm5, 0x10"),
Q!(" vpblendw " "ymm3, ymm4, ymm3, 0xaa"),
Q!(" vpsrld " "ymm4, ymm4, 0x10"),
Q!(" vpblendw " "ymm5, ymm4, ymm5, 0xaa"),
Q!(" vpslld " "ymm4, ymm7, 0x10"),
Q!(" vpblendw " "ymm4, ymm6, ymm4, 0xaa"),
Q!(" vpsrld " "ymm6, ymm6, 0x10"),
Q!(" vpblendw " "ymm7, ymm6, ymm7, 0xaa"),
Q!(" vpslld " "ymm6, ymm9, 0x10"),
Q!(" vpblendw " "ymm6, ymm8, ymm6, 0xaa"),
Q!(" vpsrld " "ymm8, ymm8, 0x10"),
Q!(" vpblendw " "ymm9, ymm8, ymm9, 0xaa"),
Q!(" vpslld " "ymm8, ymm11, 0x10"),
Q!(" vpblendw " "ymm8, ymm10, ymm8, 0xaa"),
Q!(" vpsrld " "ymm10, ymm10, 0x10"),
Q!(" vpblendw " "ymm11, ymm10, ymm11, 0xaa"),
Q!(" vmovdqa " "ymm12, [32 + rsi]"),
Q!(" vpermd " "ymm2, ymm12, [736 + rsi]"),
Q!(" vpermd " "ymm10, ymm12, [768 + rsi]"),
Q!(" vpsubw " "ymm12, ymm5, ymm3"),
Q!(" vpaddw " "ymm3, ymm3, ymm5"),
Q!(" vpsubw " "ymm13, ymm7, ymm4"),
Q!(" vpmullw " "ymm5, ymm12, ymm2"),
Q!(" vpaddw " "ymm4, ymm4, ymm7"),
Q!(" vpsubw " "ymm14, ymm9, ymm6"),
Q!(" vpmullw " "ymm7, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm9"),
Q!(" vpsubw " "ymm15, ymm11, ymm8"),
Q!(" vpmullw " "ymm9, ymm14, ymm2"),
Q!(" vpaddw " "ymm8, ymm8, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm10"),
Q!(" vpmulhw " "ymm13, ymm13, ymm10"),
Q!(" vpmulhw " "ymm14, ymm14, ymm10"),
Q!(" vpmulhw " "ymm15, ymm15, ymm10"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm5, ymm12, ymm5"),
Q!(" vpsubw " "ymm7, ymm13, ymm7"),
Q!(" vpsubw " "ymm9, ymm14, ymm9"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" mov " "eax, 0x4ebf4ebf"),
Q!(" vmovd " "xmm1, eax"),
Q!(" vpbroadcastd " "ymm1, xmm1"),
Q!(" vpmulhw " "ymm12, ymm3, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm3, ymm3, ymm12"),
Q!(" vmovsldup " "ymm10, ymm4"),
Q!(" vpblendd " "ymm10, ymm3, ymm10, 0xaa"),
Q!(" vpsrlq " "ymm3, ymm3, 0x20"),
Q!(" vpblendd " "ymm4, ymm3, ymm4, 0xaa"),
Q!(" vmovsldup " "ymm3, ymm8"),
Q!(" vpblendd " "ymm3, ymm6, ymm3, 0xaa"),
Q!(" vpsrlq " "ymm6, ymm6, 0x20"),
Q!(" vpblendd " "ymm8, ymm6, ymm8, 0xaa"),
Q!(" vmovsldup " "ymm6, ymm7"),
Q!(" vpblendd " "ymm6, ymm5, ymm6, 0xaa"),
Q!(" vpsrlq " "ymm5, ymm5, 0x20"),
Q!(" vpblendd " "ymm7, ymm5, ymm7, 0xaa"),
Q!(" vmovsldup " "ymm5, ymm11"),
Q!(" vpblendd " "ymm5, ymm9, ymm5, 0xaa"),
Q!(" vpsrlq " "ymm9, ymm9, 0x20"),
Q!(" vpblendd " "ymm11, ymm9, ymm11, 0xaa"),
Q!(" vpermq " "ymm2, [672 + rsi], 0x1b"),
Q!(" vpermq " "ymm9, [704 + rsi], 0x1b"),
Q!(" vpsubw " "ymm12, ymm4, ymm10"),
Q!(" vpaddw " "ymm10, ymm10, ymm4"),
Q!(" vpsubw " "ymm13, ymm8, ymm3"),
Q!(" vpmullw " "ymm4, ymm12, ymm2"),
Q!(" vpaddw " "ymm3, ymm3, ymm8"),
Q!(" vpsubw " "ymm14, ymm7, ymm6"),
Q!(" vpmullw " "ymm8, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm7"),
Q!(" vpsubw " "ymm15, ymm11, ymm5"),
Q!(" vpmullw " "ymm7, ymm14, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm9"),
Q!(" vpmulhw " "ymm13, ymm13, ymm9"),
Q!(" vpmulhw " "ymm14, ymm14, ymm9"),
Q!(" vpmulhw " "ymm15, ymm15, ymm9"),
Q!(" vpmulhw " "ymm4, ymm4, ymm0"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm4, ymm12, ymm4"),
Q!(" vpsubw " "ymm8, ymm13, ymm8"),
Q!(" vpsubw " "ymm7, ymm14, ymm7"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm10, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm10, ymm10, ymm12"),
Q!(" vpunpcklqdq " "ymm9, ymm10, ymm3"),
Q!(" vpunpckhqdq " "ymm3, ymm10, ymm3"),
Q!(" vpunpcklqdq " "ymm10, ymm6, ymm5"),
Q!(" vpunpckhqdq " "ymm5, ymm6, ymm5"),
Q!(" vpunpcklqdq " "ymm6, ymm4, ymm8"),
Q!(" vpunpckhqdq " "ymm8, ymm4, ymm8"),
Q!(" vpunpcklqdq " "ymm4, ymm7, ymm11"),
Q!(" vpunpckhqdq " "ymm11, ymm7, ymm11"),
Q!(" vpermq " "ymm2, [608 + rsi], 0x4e"),
Q!(" vpermq " "ymm7, [640 + rsi], 0x4e"),
Q!(" vpsubw " "ymm12, ymm3, ymm9"),
Q!(" vpaddw " "ymm9, ymm9, ymm3"),
Q!(" vpsubw " "ymm13, ymm5, ymm10"),
Q!(" vpmullw " "ymm3, ymm12, ymm2"),
Q!(" vpaddw " "ymm10, ymm10, ymm5"),
Q!(" vpsubw " "ymm14, ymm8, ymm6"),
Q!(" vpmullw " "ymm5, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm8"),
Q!(" vpsubw " "ymm15, ymm11, ymm4"),
Q!(" vpmullw " "ymm8, ymm14, ymm2"),
Q!(" vpaddw " "ymm4, ymm4, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm7"),
Q!(" vpmulhw " "ymm13, ymm13, ymm7"),
Q!(" vpmulhw " "ymm14, ymm14, ymm7"),
Q!(" vpmulhw " "ymm15, ymm15, ymm7"),
Q!(" vpmulhw " "ymm3, ymm3, ymm0"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm3, ymm12, ymm3"),
Q!(" vpsubw " "ymm5, ymm13, ymm5"),
Q!(" vpsubw " "ymm8, ymm14, ymm8"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm9, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm9, ymm9, ymm12"),
Q!(" vperm2i128 " "ymm7, ymm9, ymm10, 0x20"),
Q!(" vperm2i128 " "ymm10, ymm9, ymm10, 0x31"),
Q!(" vperm2i128 " "ymm9, ymm6, ymm4, 0x20"),
Q!(" vperm2i128 " "ymm4, ymm6, ymm4, 0x31"),
Q!(" vperm2i128 " "ymm6, ymm3, ymm5, 0x20"),
Q!(" vperm2i128 " "ymm5, ymm3, ymm5, 0x31"),
Q!(" vperm2i128 " "ymm3, ymm8, ymm11, 0x20"),
Q!(" vperm2i128 " "ymm11, ymm8, ymm11, 0x31"),
Q!(" vmovdqa " "ymm2, [544 + rsi]"),
Q!(" vmovdqa " "ymm8, [576 + rsi]"),
Q!(" vpsubw " "ymm12, ymm10, ymm7"),
Q!(" vpaddw " "ymm7, ymm7, ymm10"),
Q!(" vpsubw " "ymm13, ymm4, ymm9"),
Q!(" vpmullw " "ymm10, ymm12, ymm2"),
Q!(" vpaddw " "ymm9, ymm9, ymm4"),
Q!(" vpsubw " "ymm14, ymm5, ymm6"),
Q!(" vpmullw " "ymm4, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm5"),
Q!(" vpsubw " "ymm15, ymm11, ymm3"),
Q!(" vpmullw " "ymm5, ymm14, ymm2"),
Q!(" vpaddw " "ymm3, ymm3, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm8"),
Q!(" vpmulhw " "ymm13, ymm13, ymm8"),
Q!(" vpmulhw " "ymm14, ymm14, ymm8"),
Q!(" vpmulhw " "ymm15, ymm15, ymm8"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm4, ymm4, ymm0"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm10, ymm12, ymm10"),
Q!(" vpsubw " "ymm4, ymm13, ymm4"),
Q!(" vpsubw " "ymm5, ymm14, ymm5"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm7, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm7, ymm7, ymm12"),
Q!(" vmovdqa " "[rdi], ymm7"),
Q!(" vmovdqa " "[32 + rdi], ymm9"),
Q!(" vmovdqa " "[64 + rdi], ymm6"),
Q!(" vmovdqa " "[96 + rdi], ymm3"),
Q!(" vmovdqa " "[128 + rdi], ymm10"),
Q!(" vmovdqa " "[160 + rdi], ymm4"),
Q!(" vmovdqa " "[192 + rdi], ymm5"),
Q!(" vmovdqa " "[224 + rdi], ymm11"),
Q!(" mov " "eax, 0xd8a1d8a1"),
Q!(" vmovd " "xmm2, eax"),
Q!(" vpbroadcastd " "ymm2, xmm2"),
Q!(" mov " "eax, 0x5a105a1"),
Q!(" vmovd " "xmm3, eax"),
Q!(" vpbroadcastd " "ymm3, xmm3"),
Q!(" vmovdqa " "ymm4, [256 + rdi]"),
Q!(" vmovdqa " "ymm6, [320 + rdi]"),
Q!(" vmovdqa " "ymm5, [288 + rdi]"),
Q!(" vmovdqa " "ymm7, [352 + rdi]"),
Q!(" vpmullw " "ymm12, ymm4, ymm2"),
Q!(" vpmulhw " "ymm4, ymm4, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm4, ymm4, ymm12"),
Q!(" vpmullw " "ymm12, ymm6, ymm2"),
Q!(" vpmulhw " "ymm6, ymm6, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm6, ymm6, ymm12"),
Q!(" vpmullw " "ymm12, ymm5, ymm2"),
Q!(" vpmulhw " "ymm5, ymm5, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm5, ymm5, ymm12"),
Q!(" vpmullw " "ymm12, ymm7, ymm2"),
Q!(" vpmulhw " "ymm7, ymm7, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm7, ymm7, ymm12"),
Q!(" vmovdqa " "ymm8, [384 + rdi]"),
Q!(" vmovdqa " "ymm10, [448 + rdi]"),
Q!(" vmovdqa " "ymm9, [416 + rdi]"),
Q!(" vmovdqa " "ymm11, [480 + rdi]"),
Q!(" vpmullw " "ymm12, ymm8, ymm2"),
Q!(" vpmulhw " "ymm8, ymm8, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm8, ymm8, ymm12"),
Q!(" vpmullw " "ymm12, ymm10, ymm2"),
Q!(" vpmulhw " "ymm10, ymm10, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm10, ymm10, ymm12"),
Q!(" vpmullw " "ymm12, ymm9, ymm2"),
Q!(" vpmulhw " "ymm9, ymm9, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm9, ymm9, ymm12"),
Q!(" vpmullw " "ymm12, ymm11, ymm2"),
Q!(" vpmulhw " "ymm11, ymm11, ymm3"),
Q!(" vpmulhw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm11, ymm11, ymm12"),
Q!(" vpermq " "ymm15, [480 + rsi], 0x4e"),
Q!(" vpermq " "ymm1, [416 + rsi], 0x4e"),
Q!(" vpermq " "ymm2, [512 + rsi], 0x4e"),
Q!(" vpermq " "ymm3, [448 + rsi], 0x4e"),
Q!(" vmovdqa " "ymm12, [rsi]"),
Q!(" vpshufb " "ymm15, ymm15, ymm12"),
Q!(" vpshufb " "ymm1, ymm1, ymm12"),
Q!(" vpshufb " "ymm2, ymm2, ymm12"),
Q!(" vpshufb " "ymm3, ymm3, ymm12"),
Q!(" vpsubw " "ymm12, ymm6, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm6"),
Q!(" vpsubw " "ymm13, ymm7, ymm5"),
Q!(" vpmullw " "ymm6, ymm12, ymm15"),
Q!(" vpaddw " "ymm5, ymm5, ymm7"),
Q!(" vpsubw " "ymm14, ymm10, ymm8"),
Q!(" vpmullw " "ymm7, ymm13, ymm15"),
Q!(" vpaddw " "ymm8, ymm8, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm9"),
Q!(" vpmullw " "ymm10, ymm14, ymm1"),
Q!(" vpaddw " "ymm9, ymm9, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm1"),
Q!(" vpmulhw " "ymm12, ymm12, ymm2"),
Q!(" vpmulhw " "ymm13, ymm13, ymm2"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm6, ymm6, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm6, ymm12, ymm6"),
Q!(" vpsubw " "ymm7, ymm13, ymm7"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpermq " "ymm2, [352 + rsi], 0x4e"),
Q!(" vpermq " "ymm3, [384 + rsi], 0x4e"),
Q!(" vmovdqa " "ymm1, [rsi]"),
Q!(" vpshufb " "ymm2, ymm2, ymm1"),
Q!(" vpshufb " "ymm3, ymm3, ymm1"),
Q!(" vpsubw " "ymm12, ymm8, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm8"),
Q!(" vpsubw " "ymm13, ymm9, ymm5"),
Q!(" vpmullw " "ymm8, ymm12, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm9"),
Q!(" vpsubw " "ymm14, ymm10, ymm6"),
Q!(" vpmullw " "ymm9, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm7"),
Q!(" vpmullw " "ymm10, ymm14, ymm2"),
Q!(" vpaddw " "ymm7, ymm7, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm3"),
Q!(" vpmulhw " "ymm13, ymm13, ymm3"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm8, ymm12, ymm8"),
Q!(" vpsubw " "ymm9, ymm13, ymm9"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpslld " "ymm3, ymm5, 0x10"),
Q!(" vpblendw " "ymm3, ymm4, ymm3, 0xaa"),
Q!(" vpsrld " "ymm4, ymm4, 0x10"),
Q!(" vpblendw " "ymm5, ymm4, ymm5, 0xaa"),
Q!(" vpslld " "ymm4, ymm7, 0x10"),
Q!(" vpblendw " "ymm4, ymm6, ymm4, 0xaa"),
Q!(" vpsrld " "ymm6, ymm6, 0x10"),
Q!(" vpblendw " "ymm7, ymm6, ymm7, 0xaa"),
Q!(" vpslld " "ymm6, ymm9, 0x10"),
Q!(" vpblendw " "ymm6, ymm8, ymm6, 0xaa"),
Q!(" vpsrld " "ymm8, ymm8, 0x10"),
Q!(" vpblendw " "ymm9, ymm8, ymm9, 0xaa"),
Q!(" vpslld " "ymm8, ymm11, 0x10"),
Q!(" vpblendw " "ymm8, ymm10, ymm8, 0xaa"),
Q!(" vpsrld " "ymm10, ymm10, 0x10"),
Q!(" vpblendw " "ymm11, ymm10, ymm11, 0xaa"),
Q!(" vmovdqa " "ymm12, [32 + rsi]"),
Q!(" vpermd " "ymm2, ymm12, [288 + rsi]"),
Q!(" vpermd " "ymm10, ymm12, [320 + rsi]"),
Q!(" vpsubw " "ymm12, ymm5, ymm3"),
Q!(" vpaddw " "ymm3, ymm3, ymm5"),
Q!(" vpsubw " "ymm13, ymm7, ymm4"),
Q!(" vpmullw " "ymm5, ymm12, ymm2"),
Q!(" vpaddw " "ymm4, ymm4, ymm7"),
Q!(" vpsubw " "ymm14, ymm9, ymm6"),
Q!(" vpmullw " "ymm7, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm9"),
Q!(" vpsubw " "ymm15, ymm11, ymm8"),
Q!(" vpmullw " "ymm9, ymm14, ymm2"),
Q!(" vpaddw " "ymm8, ymm8, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm10"),
Q!(" vpmulhw " "ymm13, ymm13, ymm10"),
Q!(" vpmulhw " "ymm14, ymm14, ymm10"),
Q!(" vpmulhw " "ymm15, ymm15, ymm10"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm5, ymm12, ymm5"),
Q!(" vpsubw " "ymm7, ymm13, ymm7"),
Q!(" vpsubw " "ymm9, ymm14, ymm9"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" mov " "eax, 0x4ebf4ebf"),
Q!(" vmovd " "xmm1, eax"),
Q!(" vpbroadcastd " "ymm1, xmm1"),
Q!(" vpmulhw " "ymm12, ymm3, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm3, ymm3, ymm12"),
Q!(" vmovsldup " "ymm10, ymm4"),
Q!(" vpblendd " "ymm10, ymm3, ymm10, 0xaa"),
Q!(" vpsrlq " "ymm3, ymm3, 0x20"),
Q!(" vpblendd " "ymm4, ymm3, ymm4, 0xaa"),
Q!(" vmovsldup " "ymm3, ymm8"),
Q!(" vpblendd " "ymm3, ymm6, ymm3, 0xaa"),
Q!(" vpsrlq " "ymm6, ymm6, 0x20"),
Q!(" vpblendd " "ymm8, ymm6, ymm8, 0xaa"),
Q!(" vmovsldup " "ymm6, ymm7"),
Q!(" vpblendd " "ymm6, ymm5, ymm6, 0xaa"),
Q!(" vpsrlq " "ymm5, ymm5, 0x20"),
Q!(" vpblendd " "ymm7, ymm5, ymm7, 0xaa"),
Q!(" vmovsldup " "ymm5, ymm11"),
Q!(" vpblendd " "ymm5, ymm9, ymm5, 0xaa"),
Q!(" vpsrlq " "ymm9, ymm9, 0x20"),
Q!(" vpblendd " "ymm11, ymm9, ymm11, 0xaa"),
Q!(" vpermq " "ymm2, [224 + rsi], 0x1b"),
Q!(" vpermq " "ymm9, [256 + rsi], 0x1b"),
Q!(" vpsubw " "ymm12, ymm4, ymm10"),
Q!(" vpaddw " "ymm10, ymm10, ymm4"),
Q!(" vpsubw " "ymm13, ymm8, ymm3"),
Q!(" vpmullw " "ymm4, ymm12, ymm2"),
Q!(" vpaddw " "ymm3, ymm3, ymm8"),
Q!(" vpsubw " "ymm14, ymm7, ymm6"),
Q!(" vpmullw " "ymm8, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm7"),
Q!(" vpsubw " "ymm15, ymm11, ymm5"),
Q!(" vpmullw " "ymm7, ymm14, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm9"),
Q!(" vpmulhw " "ymm13, ymm13, ymm9"),
Q!(" vpmulhw " "ymm14, ymm14, ymm9"),
Q!(" vpmulhw " "ymm15, ymm15, ymm9"),
Q!(" vpmulhw " "ymm4, ymm4, ymm0"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm7, ymm7, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm4, ymm12, ymm4"),
Q!(" vpsubw " "ymm8, ymm13, ymm8"),
Q!(" vpsubw " "ymm7, ymm14, ymm7"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm10, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm10, ymm10, ymm12"),
Q!(" vpunpcklqdq " "ymm9, ymm10, ymm3"),
Q!(" vpunpckhqdq " "ymm3, ymm10, ymm3"),
Q!(" vpunpcklqdq " "ymm10, ymm6, ymm5"),
Q!(" vpunpckhqdq " "ymm5, ymm6, ymm5"),
Q!(" vpunpcklqdq " "ymm6, ymm4, ymm8"),
Q!(" vpunpckhqdq " "ymm8, ymm4, ymm8"),
Q!(" vpunpcklqdq " "ymm4, ymm7, ymm11"),
Q!(" vpunpckhqdq " "ymm11, ymm7, ymm11"),
Q!(" vpermq " "ymm2, [160 + rsi], 0x4e"),
Q!(" vpermq " "ymm7, [192 + rsi], 0x4e"),
Q!(" vpsubw " "ymm12, ymm3, ymm9"),
Q!(" vpaddw " "ymm9, ymm9, ymm3"),
Q!(" vpsubw " "ymm13, ymm5, ymm10"),
Q!(" vpmullw " "ymm3, ymm12, ymm2"),
Q!(" vpaddw " "ymm10, ymm10, ymm5"),
Q!(" vpsubw " "ymm14, ymm8, ymm6"),
Q!(" vpmullw " "ymm5, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm8"),
Q!(" vpsubw " "ymm15, ymm11, ymm4"),
Q!(" vpmullw " "ymm8, ymm14, ymm2"),
Q!(" vpaddw " "ymm4, ymm4, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm7"),
Q!(" vpmulhw " "ymm13, ymm13, ymm7"),
Q!(" vpmulhw " "ymm14, ymm14, ymm7"),
Q!(" vpmulhw " "ymm15, ymm15, ymm7"),
Q!(" vpmulhw " "ymm3, ymm3, ymm0"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm3, ymm12, ymm3"),
Q!(" vpsubw " "ymm5, ymm13, ymm5"),
Q!(" vpsubw " "ymm8, ymm14, ymm8"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm9, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm9, ymm9, ymm12"),
Q!(" vperm2i128 " "ymm7, ymm9, ymm10, 0x20"),
Q!(" vperm2i128 " "ymm10, ymm9, ymm10, 0x31"),
Q!(" vperm2i128 " "ymm9, ymm6, ymm4, 0x20"),
Q!(" vperm2i128 " "ymm4, ymm6, ymm4, 0x31"),
Q!(" vperm2i128 " "ymm6, ymm3, ymm5, 0x20"),
Q!(" vperm2i128 " "ymm5, ymm3, ymm5, 0x31"),
Q!(" vperm2i128 " "ymm3, ymm8, ymm11, 0x20"),
Q!(" vperm2i128 " "ymm11, ymm8, ymm11, 0x31"),
Q!(" vmovdqa " "ymm2, [96 + rsi]"),
Q!(" vmovdqa " "ymm8, [128 + rsi]"),
Q!(" vpsubw " "ymm12, ymm10, ymm7"),
Q!(" vpaddw " "ymm7, ymm7, ymm10"),
Q!(" vpsubw " "ymm13, ymm4, ymm9"),
Q!(" vpmullw " "ymm10, ymm12, ymm2"),
Q!(" vpaddw " "ymm9, ymm9, ymm4"),
Q!(" vpsubw " "ymm14, ymm5, ymm6"),
Q!(" vpmullw " "ymm4, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm5"),
Q!(" vpsubw " "ymm15, ymm11, ymm3"),
Q!(" vpmullw " "ymm5, ymm14, ymm2"),
Q!(" vpaddw " "ymm3, ymm3, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm8"),
Q!(" vpmulhw " "ymm13, ymm13, ymm8"),
Q!(" vpmulhw " "ymm14, ymm14, ymm8"),
Q!(" vpmulhw " "ymm15, ymm15, ymm8"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm4, ymm4, ymm0"),
Q!(" vpmulhw " "ymm5, ymm5, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm10, ymm12, ymm10"),
Q!(" vpsubw " "ymm4, ymm13, ymm4"),
Q!(" vpsubw " "ymm5, ymm14, ymm5"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vpmulhw " "ymm12, ymm7, ymm1"),
Q!(" vpsraw " "ymm12, ymm12, 0xa"),
Q!(" vpmullw " "ymm12, ymm12, ymm0"),
Q!(" vpsubw " "ymm7, ymm7, ymm12"),
Q!(" vmovdqa " "[256 + rdi], ymm7"),
Q!(" vmovdqa " "[288 + rdi], ymm9"),
Q!(" vmovdqa " "[320 + rdi], ymm6"),
Q!(" vmovdqa " "[352 + rdi], ymm3"),
Q!(" vmovdqa " "[384 + rdi], ymm10"),
Q!(" vmovdqa " "[416 + rdi], ymm4"),
Q!(" vmovdqa " "[448 + rdi], ymm5"),
Q!(" vmovdqa " "[480 + rdi], ymm11"),
Q!(" vmovdqa " "ymm4, [rdi]"),
Q!(" vmovdqa " "ymm8, [256 + rdi]"),
Q!(" vmovdqa " "ymm5, [32 + rdi]"),
Q!(" vmovdqa " "ymm9, [288 + rdi]"),
Q!(" vpbroadcastq " "ymm2, [64 + rsi]"),
Q!(" vmovdqa " "ymm6, [64 + rdi]"),
Q!(" vmovdqa " "ymm10, [320 + rdi]"),
Q!(" vmovdqa " "ymm7, [96 + rdi]"),
Q!(" vmovdqa " "ymm11, [352 + rdi]"),
Q!(" vpbroadcastq " "ymm3, [72 + rsi]"),
Q!(" vpsubw " "ymm12, ymm8, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm8"),
Q!(" vpsubw " "ymm13, ymm9, ymm5"),
Q!(" vpmullw " "ymm8, ymm12, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm9"),
Q!(" vpsubw " "ymm14, ymm10, ymm6"),
Q!(" vpmullw " "ymm9, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm7"),
Q!(" vpmullw " "ymm10, ymm14, ymm2"),
Q!(" vpaddw " "ymm7, ymm7, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm3"),
Q!(" vpmulhw " "ymm13, ymm13, ymm3"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm8, ymm12, ymm8"),
Q!(" vpsubw " "ymm9, ymm13, ymm9"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vmovdqa " "[rdi], ymm4"),
Q!(" vmovdqa " "[32 + rdi], ymm5"),
Q!(" vmovdqa " "[64 + rdi], ymm6"),
Q!(" vmovdqa " "[96 + rdi], ymm7"),
Q!(" vmovdqa " "[256 + rdi], ymm8"),
Q!(" vmovdqa " "[288 + rdi], ymm9"),
Q!(" vmovdqa " "[320 + rdi], ymm10"),
Q!(" vmovdqa " "[352 + rdi], ymm11"),
Q!(" vmovdqa " "ymm4, [128 + rdi]"),
Q!(" vmovdqa " "ymm8, [384 + rdi]"),
Q!(" vmovdqa " "ymm5, [160 + rdi]"),
Q!(" vmovdqa " "ymm9, [416 + rdi]"),
Q!(" vpbroadcastq " "ymm2, [64 + rsi]"),
Q!(" vmovdqa " "ymm6, [192 + rdi]"),
Q!(" vmovdqa " "ymm10, [448 + rdi]"),
Q!(" vmovdqa " "ymm7, [224 + rdi]"),
Q!(" vmovdqa " "ymm11, [480 + rdi]"),
Q!(" vpbroadcastq " "ymm3, [72 + rsi]"),
Q!(" vpsubw " "ymm12, ymm8, ymm4"),
Q!(" vpaddw " "ymm4, ymm4, ymm8"),
Q!(" vpsubw " "ymm13, ymm9, ymm5"),
Q!(" vpmullw " "ymm8, ymm12, ymm2"),
Q!(" vpaddw " "ymm5, ymm5, ymm9"),
Q!(" vpsubw " "ymm14, ymm10, ymm6"),
Q!(" vpmullw " "ymm9, ymm13, ymm2"),
Q!(" vpaddw " "ymm6, ymm6, ymm10"),
Q!(" vpsubw " "ymm15, ymm11, ymm7"),
Q!(" vpmullw " "ymm10, ymm14, ymm2"),
Q!(" vpaddw " "ymm7, ymm7, ymm11"),
Q!(" vpmullw " "ymm11, ymm15, ymm2"),
Q!(" vpmulhw " "ymm12, ymm12, ymm3"),
Q!(" vpmulhw " "ymm13, ymm13, ymm3"),
Q!(" vpmulhw " "ymm14, ymm14, ymm3"),
Q!(" vpmulhw " "ymm15, ymm15, ymm3"),
Q!(" vpmulhw " "ymm8, ymm8, ymm0"),
Q!(" vpmulhw " "ymm9, ymm9, ymm0"),
Q!(" vpmulhw " "ymm10, ymm10, ymm0"),
Q!(" vpmulhw " "ymm11, ymm11, ymm0"),
Q!(" vpsubw " "ymm8, ymm12, ymm8"),
Q!(" vpsubw " "ymm9, ymm13, ymm9"),
Q!(" vpsubw " "ymm10, ymm14, ymm10"),
Q!(" vpsubw " "ymm11, ymm15, ymm11"),
Q!(" vmovdqa " "[128 + rdi], ymm4"),
Q!(" vmovdqa " "[160 + rdi], ymm5"),
Q!(" vmovdqa " "[192 + rdi], ymm6"),
Q!(" vmovdqa " "[224 + rdi], ymm7"),
Q!(" vmovdqa " "[384 + rdi], ymm8"),
Q!(" vmovdqa " "[416 + rdi], ymm9"),
Q!(" vmovdqa " "[448 + rdi], ymm10"),
Q!(" vmovdqa " "[480 + rdi], ymm11"),
inout("rdi") a.as_mut_ptr() => _,
inout("rsi") qdata.as_ptr() => _,
out("rax") _,
out("zmm0") _,
out("zmm1") _,
out("zmm10") _,
out("zmm11") _,
out("zmm12") _,
out("zmm13") _,
out("zmm14") _,
out("zmm15") _,
out("zmm2") _,
out("zmm3") _,
out("zmm4") _,
out("zmm5") _,
out("zmm6") _,
out("zmm7") _,
out("zmm8") _,
out("zmm9") _,
)
};
}