/* wc_mlkem_asm.S */ /* * Copyright (C) 2006-2026 wolfSSL Inc. * * This file is part of wolfSSL. * * wolfSSL is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * wolfSSL is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA */ #ifdef WOLFSSL_USER_SETTINGS #ifdef WOLFSSL_USER_SETTINGS_ASM /* * user_settings_asm.h is a file generated by the script user_settings_asm.sh. * The script takes in a user_settings.h and produces user_settings_asm.h, which * is a stripped down version of user_settings.h containing only preprocessor * directives. This makes the header safe to include in assembly (.S) files. */ #include "user_settings_asm.h" #else /* * Note: if user_settings.h contains any C code (e.g. a typedef or function * prototype), including it here in an assembly (.S) file will cause an * assembler failure. See user_settings_asm.h above. */ #include "user_settings.h" #endif /* WOLFSSL_USER_SETTINGS_ASM */ #endif /* WOLFSSL_USER_SETTINGS */ #ifndef HAVE_INTEL_AVX1 #define HAVE_INTEL_AVX1 #endif /* HAVE_INTEL_AVX1 */ #ifndef NO_AVX2_SUPPORT #ifndef HAVE_INTEL_AVX2 #define HAVE_INTEL_AVX2 #endif /* HAVE_INTEL_AVX2 */ #endif /* NO_AVX2_SUPPORT */ #ifdef WOLFSSL_HAVE_MLKEM #ifdef HAVE_INTEL_AVX2 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ mlkem_q: .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ mlkem_qinv: .short 0xf301,0xf301,0xf301,0xf301,0xf301,0xf301,0xf301,0xf301 .short 0xf301,0xf301,0xf301,0xf301,0xf301,0xf301,0xf301,0xf301 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ mlkem_f: .short 0x0549,0x0549,0x0549,0x0549,0x0549,0x0549,0x0549,0x0549 .short 0x0549,0x0549,0x0549,0x0549,0x0549,0x0549,0x0549,0x0549 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ mlkem_f_qinv: .short 0x5049,0x5049,0x5049,0x5049,0x5049,0x5049,0x5049,0x5049 .short 0x5049,0x5049,0x5049,0x5049,0x5049,0x5049,0x5049,0x5049 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ mlkem_v: .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_avx2_zetas: .short 0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b .short 0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b,0x0a0b .short 0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b .short 0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b,0x7b0b .short 0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a .short 0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a,0x0b9a .short 0x399a,0x399a,0x399a,0x399a,0x399a,0x399a,0x399a,0x399a .short 0x399a,0x399a,0x399a,0x399a,0x399a,0x399a,0x399a,0x399a .short 0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5 .short 0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5,0x05d5 .short 0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5 .short 0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5,0x34d5 .short 0x058e,0x058e,0x058e,0x058e,0x058e,0x058e,0x058e,0x058e .short 0x058e,0x058e,0x058e,0x058e,0x058e,0x058e,0x058e,0x058e .short 0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e .short 0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e,0xcf8e .short 0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56 .short 0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56,0x0c56 .short 0xae56,0xae56,0xae56,0xae56,0xae56,0xae56,0xae56,0xae56 .short 0xae56,0xae56,0xae56,0xae56,0xae56,0xae56,0xae56,0xae56 .short 0x026e,0x026e,0x026e,0x026e,0x026e,0x026e,0x026e,0x026e .short 0x026e,0x026e,0x026e,0x026e,0x026e,0x026e,0x026e,0x026e .short 0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e .short 0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e,0x6c6e .short 0x0629,0x0629,0x0629,0x0629,0x0629,0x0629,0x0629,0x0629 .short 0x0629,0x0629,0x0629,0x0629,0x0629,0x0629,0x0629,0x0629 .short 0xf129,0xf129,0xf129,0xf129,0xf129,0xf129,0xf129,0xf129 .short 0xf129,0xf129,0xf129,0xf129,0xf129,0xf129,0xf129,0xf129 .short 0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6 .short 0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6,0x00b6 .short 0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6 .short 0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6,0xc2b6 .short 0x023d,0x023d,0x023d,0x023d,0x023d,0x023d,0x023d,0x023d .short 0x07d4,0x07d4,0x07d4,0x07d4,0x07d4,0x07d4,0x07d4,0x07d4 .short 0xe93d,0xe93d,0xe93d,0xe93d,0xe93d,0xe93d,0xe93d,0xe93d .short 0x43d4,0x43d4,0x43d4,0x43d4,0x43d4,0x43d4,0x43d4,0x43d4 .short 0x0108,0x0108,0x0108,0x0108,0x0108,0x0108,0x0108,0x0108 .short 0x017f,0x017f,0x017f,0x017f,0x017f,0x017f,0x017f,0x017f .short 0x9908,0x9908,0x9908,0x9908,0x9908,0x9908,0x9908,0x9908 .short 0x8e7f,0x8e7f,0x8e7f,0x8e7f,0x8e7f,0x8e7f,0x8e7f,0x8e7f .short 0x04c7,0x04c7,0x04c7,0x04c7,0x028c,0x028c,0x028c,0x028c .short 0x0ad9,0x0ad9,0x0ad9,0x0ad9,0x03f7,0x03f7,0x03f7,0x03f7 .short 0xe9c7,0xe9c7,0xe9c7,0xe9c7,0xe68c,0xe68c,0xe68c,0xe68c .short 0x05d9,0x05d9,0x05d9,0x05d9,0x78f7,0x78f7,0x78f7,0x78f7 .short 0x07f4,0x07f4,0x07f4,0x07f4,0x05d3,0x05d3,0x05d3,0x05d3 .short 0x0be7,0x0be7,0x0be7,0x0be7,0x06f9,0x06f9,0x06f9,0x06f9 .short 0xa3f4,0xa3f4,0xa3f4,0xa3f4,0x4ed3,0x4ed3,0x4ed3,0x4ed3 .short 0x50e7,0x50e7,0x50e7,0x50e7,0x61f9,0x61f9,0x61f9,0x61f9 .short 0x09c4,0x09c4,0x09c4,0x09c4,0x09c4,0x09c4,0x09c4,0x09c4 .short 0x05b2,0x05b2,0x05b2,0x05b2,0x05b2,0x05b2,0x05b2,0x05b2 .short 0x15c4,0x15c4,0x15c4,0x15c4,0x15c4,0x15c4,0x15c4,0x15c4 .short 0xfbb2,0xfbb2,0xfbb2,0xfbb2,0xfbb2,0xfbb2,0xfbb2,0xfbb2 .short 0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x06bf .short 0x0c7f,0x0c7f,0x0c7f,0x0c7f,0x0c7f,0x0c7f,0x0c7f,0x0c7f .short 0x53bf,0x53bf,0x53bf,0x53bf,0x53bf,0x53bf,0x53bf,0x53bf .short 0x997f,0x997f,0x997f,0x997f,0x997f,0x997f,0x997f,0x997f .short 0x0204,0x0204,0x0204,0x0204,0x0cf9,0x0cf9,0x0cf9,0x0cf9 .short 0x0bc1,0x0bc1,0x0bc1,0x0bc1,0x0a67,0x0a67,0x0a67,0x0a67 .short 0xce04,0xce04,0xce04,0xce04,0x67f9,0x67f9,0x67f9,0x67f9 .short 0x3ec1,0x3ec1,0x3ec1,0x3ec1,0xcf67,0xcf67,0xcf67,0xcf67 .short 0x06af,0x06af,0x06af,0x06af,0x0877,0x0877,0x0877,0x0877 .short 0x007e,0x007e,0x007e,0x007e,0x05bd,0x05bd,0x05bd,0x05bd .short 0x23af,0x23af,0x23af,0x23af,0xfd77,0xfd77,0xfd77,0xfd77 .short 0x9a7e,0x9a7e,0x9a7e,0x9a7e,0x6cbd,0x6cbd,0x6cbd,0x6cbd .short 0x08b2,0x08b2,0x01ae,0x01ae,0x022b,0x022b,0x034b,0x034b .short 0x081e,0x081e,0x0367,0x0367,0x060e,0x060e,0x0069,0x0069 .short 0xfeb2,0xfeb2,0x2bae,0x2bae,0xd32b,0xd32b,0x344b,0x344b .short 0x821e,0x821e,0xc867,0xc867,0x500e,0x500e,0xab69,0xab69 .short 0x01a6,0x01a6,0x024b,0x024b,0x00b1,0x00b1,0x0c16,0x0c16 .short 0x0bde,0x0bde,0x0b35,0x0b35,0x0626,0x0626,0x0675,0x0675 .short 0x93a6,0x93a6,0x334b,0x334b,0x03b1,0x03b1,0xee16,0xee16 .short 0xc5de,0xc5de,0x5a35,0x5a35,0x1826,0x1826,0x1575,0x1575 .short 0x0c0b,0x0c0b,0x030a,0x030a,0x0487,0x0487,0x0c6e,0x0c6e .short 0x09f8,0x09f8,0x05cb,0x05cb,0x0aa7,0x0aa7,0x045f,0x045f .short 0x7d0b,0x7d0b,0x810a,0x810a,0x2987,0x2987,0x766e,0x766e .short 0x71f8,0x71f8,0xb6cb,0xb6cb,0x8fa7,0x8fa7,0x315f,0x315f .short 0x06cb,0x06cb,0x0284,0x0284,0x0999,0x0999,0x015d,0x015d .short 0x01a2,0x01a2,0x0149,0x0149,0x0c65,0x0c65,0x0cb6,0x0cb6 .short 0xb7cb,0xb7cb,0x4e84,0x4e84,0x4499,0x4499,0x485d,0x485d .short 0xc7a2,0xc7a2,0x4c49,0x4c49,0xeb65,0xeb65,0xceb6,0xceb6 .short 0x0714,0x0714,0x0714,0x0714,0x0714,0x0714,0x0714,0x0714 .short 0x0714,0x0714,0x0714,0x0714,0x0714,0x0714,0x0714,0x0714 .short 0x0314,0x0314,0x0314,0x0314,0x0314,0x0314,0x0314,0x0314 .short 0x0314,0x0314,0x0314,0x0314,0x0314,0x0314,0x0314,0x0314 .short 0x011f,0x011f,0x011f,0x011f,0x011f,0x011f,0x011f,0x011f .short 0x011f,0x011f,0x011f,0x011f,0x011f,0x011f,0x011f,0x011f .short 0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f .short 0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f,0x6e1f .short 0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca .short 0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca,0x00ca .short 0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca .short 0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca,0xbeca .short 0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2 .short 0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2,0x03c2 .short 0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2 .short 0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2,0x29c2 .short 0x084f,0x084f,0x084f,0x084f,0x084f,0x084f,0x084f,0x084f .short 0x084f,0x084f,0x084f,0x084f,0x084f,0x084f,0x084f,0x084f .short 0x054f,0x054f,0x054f,0x054f,0x054f,0x054f,0x054f,0x054f .short 0x054f,0x054f,0x054f,0x054f,0x054f,0x054f,0x054f,0x054f .short 0x073f,0x073f,0x073f,0x073f,0x073f,0x073f,0x073f,0x073f .short 0x073f,0x073f,0x073f,0x073f,0x073f,0x073f,0x073f,0x073f .short 0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f .short 0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f,0xd43f .short 0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc .short 0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc,0x05bc .short 0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc .short 0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc,0x79bc .short 0x0a58,0x0a58,0x0a58,0x0a58,0x0a58,0x0a58,0x0a58,0x0a58 .short 0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9 .short 0x9258,0x9258,0x9258,0x9258,0x9258,0x9258,0x9258,0x9258 .short 0x5ef9,0x5ef9,0x5ef9,0x5ef9,0x5ef9,0x5ef9,0x5ef9,0x5ef9 .short 0x02dc,0x02dc,0x02dc,0x02dc,0x02dc,0x02dc,0x02dc,0x02dc .short 0x0260,0x0260,0x0260,0x0260,0x0260,0x0260,0x0260,0x0260 .short 0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc .short 0x2260,0x2260,0x2260,0x2260,0x2260,0x2260,0x2260,0x2260 .short 0x09ac,0x09ac,0x09ac,0x09ac,0x0ca7,0x0ca7,0x0ca7,0x0ca7 .short 0x0bf2,0x0bf2,0x0bf2,0x0bf2,0x033e,0x033e,0x033e,0x033e .short 0x4dac,0x4dac,0x4dac,0x4dac,0x91a7,0x91a7,0x91a7,0x91a7 .short 0xc1f2,0xc1f2,0xc1f2,0xc1f2,0xdd3e,0xdd3e,0xdd3e,0xdd3e .short 0x006b,0x006b,0x006b,0x006b,0x0774,0x0774,0x0774,0x0774 .short 0x0c0a,0x0c0a,0x0c0a,0x0c0a,0x094a,0x094a,0x094a,0x094a .short 0x916b,0x916b,0x916b,0x916b,0x2374,0x2374,0x2374,0x2374 .short 0x8a0a,0x8a0a,0x8a0a,0x8a0a,0x474a,0x474a,0x474a,0x474a .short 0x06fb,0x06fb,0x06fb,0x06fb,0x06fb,0x06fb,0x06fb,0x06fb .short 0x019b,0x019b,0x019b,0x019b,0x019b,0x019b,0x019b,0x019b .short 0x47fb,0x47fb,0x47fb,0x47fb,0x47fb,0x47fb,0x47fb,0x47fb .short 0x229b,0x229b,0x229b,0x229b,0x229b,0x229b,0x229b,0x229b .short 0x0c34,0x0c34,0x0c34,0x0c34,0x0c34,0x0c34,0x0c34,0x0c34 .short 0x06de,0x06de,0x06de,0x06de,0x06de,0x06de,0x06de,0x06de .short 0x6834,0x6834,0x6834,0x6834,0x6834,0x6834,0x6834,0x6834 .short 0xc0de,0xc0de,0xc0de,0xc0de,0xc0de,0xc0de,0xc0de,0xc0de .short 0x0b73,0x0b73,0x0b73,0x0b73,0x03c1,0x03c1,0x03c1,0x03c1 .short 0x071d,0x071d,0x071d,0x071d,0x0a2c,0x0a2c,0x0a2c,0x0a2c .short 0x3473,0x3473,0x3473,0x3473,0x36c1,0x36c1,0x36c1,0x36c1 .short 0x8e1d,0x8e1d,0x8e1d,0x8e1d,0xce2c,0xce2c,0xce2c,0xce2c .short 0x01c0,0x01c0,0x01c0,0x01c0,0x08d8,0x08d8,0x08d8,0x08d8 .short 0x02a5,0x02a5,0x02a5,0x02a5,0x0806,0x0806,0x0806,0x0806 .short 0x41c0,0x41c0,0x41c0,0x41c0,0x10d8,0x10d8,0x10d8,0x10d8 .short 0xa1a5,0xa1a5,0xa1a5,0xa1a5,0xba06,0xba06,0xba06,0xba06 .short 0x0331,0x0331,0x0449,0x0449,0x025b,0x025b,0x0262,0x0262 .short 0x052a,0x052a,0x07fc,0x07fc,0x0748,0x0748,0x0180,0x0180 .short 0x8631,0x8631,0x4f49,0x4f49,0x635b,0x635b,0x0862,0x0862 .short 0xe32a,0xe32a,0x3bfc,0x3bfc,0x5f48,0x5f48,0x8180,0x8180 .short 0x0842,0x0842,0x0c79,0x0c79,0x04c2,0x04c2,0x07ca,0x07ca .short 0x0997,0x0997,0x00dc,0x00dc,0x085e,0x085e,0x0686,0x0686 .short 0xae42,0xae42,0xe779,0xe779,0x2ac2,0x2ac2,0xc5ca,0xc5ca .short 0x5e97,0x5e97,0xd4dc,0xd4dc,0x425e,0x425e,0x3886,0x3886 .short 0x0860,0x0860,0x0707,0x0707,0x0803,0x0803,0x031a,0x031a .short 0x071b,0x071b,0x09ab,0x09ab,0x099b,0x099b,0x01de,0x01de .short 0x2860,0x2860,0xac07,0xac07,0xe103,0xe103,0xb11a,0xb11a .short 0xa81b,0xa81b,0x5aab,0x5aab,0x2a9b,0x2a9b,0xbbde,0xbbde .short 0x0c95,0x0c95,0x0bcd,0x0bcd,0x03e4,0x03e4,0x03df,0x03df .short 0x03be,0x03be,0x074d,0x074d,0x05f2,0x05f2,0x065c,0x065c .short 0x7b95,0x7b95,0xa2cd,0xa2cd,0x6fe4,0x6fe4,0xb0df,0xb0df .short 0x5dbe,0x5dbe,0x1e4d,0x1e4d,0xbbf2,0xbbf2,0x5a5c,0x5a5c #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_avx2_zetas_basemul: .short 0x08b2,0x081e,0xf74e,0xf7e2,0x01ae,0x0367,0xfe52,0xfc99 .short 0x022b,0x060e,0xfdd5,0xf9f2,0x034b,0x0069,0xfcb5,0xff97 .short 0xfeb2,0x821e,0x014e,0x7de2,0x2bae,0xc867,0xd452,0x3799 .short 0xd32b,0x500e,0x2cd5,0xaff2,0x344b,0xab69,0xcbb5,0x5497 .short 0x01a6,0x0bde,0xfe5a,0xf422,0x024b,0x0b35,0xfdb5,0xf4cb .short 0x00b1,0x0626,0xff4f,0xf9da,0x0c16,0x0675,0xf3ea,0xf98b .short 0x93a6,0xc5de,0x6c5a,0x3a22,0x334b,0x5a35,0xccb5,0xa5cb .short 0x03b1,0x1826,0xfc4f,0xe7da,0xee16,0x1575,0x11ea,0xea8b .short 0x0c0b,0x09f8,0xf3f5,0xf608,0x030a,0x05cb,0xfcf6,0xfa35 .short 0x0487,0x0aa7,0xfb79,0xf559,0x0c6e,0x045f,0xf392,0xfba1 .short 0x7d0b,0x71f8,0x82f5,0x8e08,0x810a,0xb6cb,0x7ef6,0x4935 .short 0x2987,0x8fa7,0xd679,0x7059,0x766e,0x315f,0x8992,0xcea1 .short 0x06cb,0x01a2,0xf935,0xfe5e,0x0284,0x0149,0xfd7c,0xfeb7 .short 0x0999,0x0c65,0xf667,0xf39b,0x015d,0x0cb6,0xfea3,0xf34a .short 0xb7cb,0xc7a2,0x4835,0x385e,0x4e84,0x4c49,0xb17c,0xb3b7 .short 0x4499,0xeb65,0xbb67,0x149b,0x485d,0xceb6,0xb7a3,0x314a .short 0x0331,0x052a,0xfccf,0xfad6,0x0449,0x07fc,0xfbb7,0xf804 .short 0x025b,0x0748,0xfda5,0xf8b8,0x0262,0x0180,0xfd9e,0xfe80 .short 0x8631,0xe32a,0x79cf,0x1cd6,0x4f49,0x3bfc,0xb0b7,0xc404 .short 0x635b,0x5f48,0x9ca5,0xa0b8,0x0862,0x8180,0xf79e,0x7e80 .short 0x0842,0x0997,0xf7be,0xf669,0x0c79,0x00dc,0xf387,0xff24 .short 0x04c2,0x085e,0xfb3e,0xf7a2,0x07ca,0x0686,0xf836,0xf97a .short 0xae42,0x5e97,0x51be,0xa169,0xe779,0xd4dc,0x1887,0x2b24 .short 0x2ac2,0x425e,0xd53e,0xbda2,0xc5ca,0x3886,0x3a36,0xc77a .short 0x0860,0x071b,0xf7a0,0xf8e5,0x0707,0x09ab,0xf8f9,0xf655 .short 0x0803,0x099b,0xf7fd,0xf665,0x031a,0x01de,0xfce6,0xfe22 .short 0x2860,0xa81b,0xd7a0,0x57e5,0xac07,0x5aab,0x53f9,0xa555 .short 0xe103,0x2a9b,0x1efd,0xd565,0xb11a,0xbbde,0x4ee6,0x4422 .short 0x0c95,0x03be,0xf36b,0xfc42,0x0bcd,0x074d,0xf433,0xf8b3 .short 0x03e4,0x05f2,0xfc1c,0xfa0e,0x03df,0x065c,0xfc21,0xf9a4 .short 0x7b95,0x5dbe,0x846b,0xa242,0xa2cd,0x1e4d,0x5d33,0xe1b3 .short 0x6fe4,0xbbf2,0x901c,0x440e,0xb0df,0x5a5c,0x4f21,0xa5a4 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_avx2_zetas_inv: .short 0x06a5,0x06a5,0x05b4,0x05b4,0x070f,0x070f,0x0943,0x0943 .short 0x0922,0x0922,0x0134,0x0134,0x091d,0x091d,0x006c,0x006c .short 0xa5a5,0xa5a5,0xe1b4,0xe1b4,0x440f,0x440f,0xa243,0xa243 .short 0x4f22,0x4f22,0x5d34,0x5d34,0x901d,0x901d,0x846c,0x846c .short 0x0b23,0x0b23,0x0356,0x0356,0x0366,0x0366,0x05e6,0x05e6 .short 0x09e7,0x09e7,0x05fa,0x05fa,0x04fe,0x04fe,0x04a1,0x04a1 .short 0x4423,0x4423,0xa556,0xa556,0xd566,0xd566,0x57e6,0x57e6 .short 0x4ee7,0x4ee7,0x53fa,0x53fa,0x1efe,0x1efe,0xd7a1,0xd7a1 .short 0x04fb,0x04fb,0x04fb,0x04fb,0x0a5c,0x0a5c,0x0a5c,0x0a5c .short 0x0429,0x0429,0x0429,0x0429,0x0b41,0x0b41,0x0b41,0x0b41 .short 0x45fb,0x45fb,0x45fb,0x45fb,0x5e5c,0x5e5c,0x5e5c,0x5e5c .short 0xef29,0xef29,0xef29,0xef29,0xbe41,0xbe41,0xbe41,0xbe41 .short 0x02d5,0x02d5,0x02d5,0x02d5,0x05e4,0x05e4,0x05e4,0x05e4 .short 0x0940,0x0940,0x0940,0x0940,0x018e,0x018e,0x018e,0x018e .short 0x31d5,0x31d5,0x31d5,0x31d5,0x71e4,0x71e4,0x71e4,0x71e4 .short 0xc940,0xc940,0xc940,0xc940,0xcb8e,0xcb8e,0xcb8e,0xcb8e .short 0x0623,0x0623,0x0623,0x0623,0x0623,0x0623,0x0623,0x0623 .short 0x00cd,0x00cd,0x00cd,0x00cd,0x00cd,0x00cd,0x00cd,0x00cd .short 0x3f23,0x3f23,0x3f23,0x3f23,0x3f23,0x3f23,0x3f23,0x3f23 .short 0x97cd,0x97cd,0x97cd,0x97cd,0x97cd,0x97cd,0x97cd,0x97cd .short 0x0b66,0x0b66,0x0b66,0x0b66,0x0b66,0x0b66,0x0b66,0x0b66 .short 0x0606,0x0606,0x0606,0x0606,0x0606,0x0606,0x0606,0x0606 .short 0xdd66,0xdd66,0xdd66,0xdd66,0xdd66,0xdd66,0xdd66,0xdd66 .short 0xb806,0xb806,0xb806,0xb806,0xb806,0xb806,0xb806,0xb806 .short 0x0745,0x0745,0x0745,0x0745,0x0745,0x0745,0x0745,0x0745 .short 0x0745,0x0745,0x0745,0x0745,0x0745,0x0745,0x0745,0x0745 .short 0x8645,0x8645,0x8645,0x8645,0x8645,0x8645,0x8645,0x8645 .short 0x8645,0x8645,0x8645,0x8645,0x8645,0x8645,0x8645,0x8645 .short 0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2 .short 0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2,0x05c2 .short 0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2 .short 0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2,0x2bc2 .short 0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37 .short 0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37,0x0c37 .short 0x4137,0x4137,0x4137,0x4137,0x4137,0x4137,0x4137,0x4137 .short 0x4137,0x4137,0x4137,0x4137,0x4137,0x4137,0x4137,0x4137 .short 0x067b,0x067b,0x0c25,0x0c25,0x04a3,0x04a3,0x036a,0x036a .short 0x0537,0x0537,0x0088,0x0088,0x083f,0x083f,0x04bf,0x04bf .short 0xc77b,0xc77b,0x2b25,0x2b25,0xbda3,0xbda3,0xa16a,0xa16a .short 0x3a37,0x3a37,0x1888,0x1888,0xd53f,0xd53f,0x51bf,0x51bf .short 0x0b81,0x0b81,0x0505,0x0505,0x05b9,0x05b9,0x07d7,0x07d7 .short 0x0a9f,0x0a9f,0x08b8,0x08b8,0x0aa6,0x0aa6,0x09d0,0x09d0 .short 0x7e81,0x7e81,0xc405,0xc405,0xa0b9,0xa0b9,0x1cd7,0x1cd7 .short 0xf79f,0xf79f,0xb0b8,0xb0b8,0x9ca6,0x9ca6,0x79d0,0x79d0 .short 0x03b7,0x03b7,0x03b7,0x03b7,0x00f7,0x00f7,0x00f7,0x00f7 .short 0x058d,0x058d,0x058d,0x058d,0x0c96,0x0c96,0x0c96,0x0c96 .short 0xb8b7,0xb8b7,0xb8b7,0xb8b7,0x75f7,0x75f7,0x75f7,0x75f7 .short 0xdc8d,0xdc8d,0xdc8d,0xdc8d,0x6e96,0x6e96,0x6e96,0x6e96 .short 0x09c3,0x09c3,0x09c3,0x09c3,0x010f,0x010f,0x010f,0x010f .short 0x005a,0x005a,0x005a,0x005a,0x0355,0x0355,0x0355,0x0355 .short 0x22c3,0x22c3,0x22c3,0x22c3,0x3e0f,0x3e0f,0x3e0f,0x3e0f .short 0x6e5a,0x6e5a,0x6e5a,0x6e5a,0xb255,0xb255,0xb255,0xb255 .short 0x0aa1,0x0aa1,0x0aa1,0x0aa1,0x0aa1,0x0aa1,0x0aa1,0x0aa1 .short 0x0a25,0x0a25,0x0a25,0x0a25,0x0a25,0x0a25,0x0a25,0x0a25 .short 0xdda1,0xdda1,0xdda1,0xdda1,0xdda1,0xdda1,0xdda1,0xdda1 .short 0x2925,0x2925,0x2925,0x2925,0x2925,0x2925,0x2925,0x2925 .short 0x0908,0x0908,0x0908,0x0908,0x0908,0x0908,0x0908,0x0908 .short 0x02a9,0x02a9,0x02a9,0x02a9,0x02a9,0x02a9,0x02a9,0x02a9 .short 0xa108,0xa108,0xa108,0xa108,0xa108,0xa108,0xa108,0xa108 .short 0x6da9,0x6da9,0x6da9,0x6da9,0x6da9,0x6da9,0x6da9,0x6da9 .short 0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2 .short 0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2,0x04b2 .short 0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2 .short 0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2,0xfab2 .short 0x093f,0x093f,0x093f,0x093f,0x093f,0x093f,0x093f,0x093f .short 0x093f,0x093f,0x093f,0x093f,0x093f,0x093f,0x093f,0x093f .short 0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f .short 0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f,0xd63f .short 0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2 .short 0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2,0x0be2 .short 0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2 .short 0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2,0x91e2 .short 0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed .short 0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed,0x05ed .short 0xfced,0xfced,0xfced,0xfced,0xfced,0xfced,0xfced,0xfced .short 0xfced,0xfced,0xfced,0xfced,0xfced,0xfced,0xfced,0xfced .short 0x004b,0x004b,0x0bb8,0x0bb8,0x009c,0x009c,0x0b5f,0x0b5f .short 0x0ba4,0x0ba4,0x0a7d,0x0a7d,0x0368,0x0368,0x0636,0x0636 .short 0x314b,0x314b,0xb3b8,0xb3b8,0x149c,0x149c,0x385f,0x385f .short 0xb7a4,0xb7a4,0xb17d,0xb17d,0xbb68,0xbb68,0x4836,0x4836 .short 0x08a2,0x08a2,0x0736,0x0736,0x025a,0x025a,0x0309,0x0309 .short 0x0093,0x0093,0x09f7,0x09f7,0x087a,0x087a,0x00f6,0x00f6 .short 0xcea2,0xcea2,0x4936,0x4936,0x705a,0x705a,0x8e09,0x8e09 .short 0x8993,0x8993,0x7ef7,0x7ef7,0xd67a,0xd67a,0x82f6,0x82f6 .short 0x0744,0x0744,0x0744,0x0744,0x0c83,0x0c83,0x0c83,0x0c83 .short 0x048a,0x048a,0x048a,0x048a,0x0652,0x0652,0x0652,0x0652 .short 0x9344,0x9344,0x9344,0x9344,0x6583,0x6583,0x6583,0x6583 .short 0x028a,0x028a,0x028a,0x028a,0xdc52,0xdc52,0xdc52,0xdc52 .short 0x029a,0x029a,0x029a,0x029a,0x0140,0x0140,0x0140,0x0140 .short 0x0008,0x0008,0x0008,0x0008,0x0afd,0x0afd,0x0afd,0x0afd .short 0x309a,0x309a,0x309a,0x309a,0xc140,0xc140,0xc140,0xc140 .short 0x9808,0x9808,0x9808,0x9808,0x31fd,0x31fd,0x31fd,0x31fd .short 0x0082,0x0082,0x0082,0x0082,0x0082,0x0082,0x0082,0x0082 .short 0x0642,0x0642,0x0642,0x0642,0x0642,0x0642,0x0642,0x0642 .short 0x6682,0x6682,0x6682,0x6682,0x6682,0x6682,0x6682,0x6682 .short 0xac42,0xac42,0xac42,0xac42,0xac42,0xac42,0xac42,0xac42 .short 0x074f,0x074f,0x074f,0x074f,0x074f,0x074f,0x074f,0x074f .short 0x033d,0x033d,0x033d,0x033d,0x033d,0x033d,0x033d,0x033d .short 0x044f,0x044f,0x044f,0x044f,0x044f,0x044f,0x044f,0x044f .short 0xea3d,0xea3d,0xea3d,0xea3d,0xea3d,0xea3d,0xea3d,0xea3d .short 0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b .short 0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b,0x0c4b .short 0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b .short 0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b,0x3d4b .short 0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8 .short 0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8,0x06d8 .short 0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8 .short 0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8,0x0ed8 .short 0x0773,0x0773,0x0773,0x0773,0x0773,0x0773,0x0773,0x0773 .short 0x0773,0x0773,0x0773,0x0773,0x0773,0x0773,0x0773,0x0773 .short 0x3073,0x3073,0x3073,0x3073,0x3073,0x3073,0x3073,0x3073 .short 0x3073,0x3073,0x3073,0x3073,0x3073,0x3073,0x3073,0x3073 .short 0x068c,0x068c,0x01cc,0x01cc,0x06db,0x06db,0x0123,0x0123 .short 0x00eb,0x00eb,0x0ab6,0x0ab6,0x0c50,0x0c50,0x0b5b,0x0b5b .short 0xea8c,0xea8c,0xa5cc,0xa5cc,0xe7db,0xe7db,0x3a23,0x3a23 .short 0x11eb,0x11eb,0xccb6,0xccb6,0xfc50,0xfc50,0x6c5b,0x6c5b .short 0x0c98,0x0c98,0x099a,0x099a,0x06f3,0x06f3,0x04e3,0x04e3 .short 0x09b6,0x09b6,0x0b53,0x0b53,0x0ad6,0x0ad6,0x044f,0x044f .short 0x5498,0x5498,0x379a,0x379a,0xaff3,0xaff3,0x7de3,0x7de3 .short 0xcbb6,0xcbb6,0xd453,0xd453,0x2cd6,0x2cd6,0x014f,0x014f .short 0x0608,0x0608,0x0608,0x0608,0x011a,0x011a,0x011a,0x011a .short 0x072e,0x072e,0x072e,0x072e,0x050d,0x050d,0x050d,0x050d .short 0x9e08,0x9e08,0x9e08,0x9e08,0xaf1a,0xaf1a,0xaf1a,0xaf1a .short 0xb12e,0xb12e,0xb12e,0xb12e,0x5c0d,0x5c0d,0x5c0d,0x5c0d .short 0x090a,0x090a,0x090a,0x090a,0x0228,0x0228,0x0228,0x0228 .short 0x0a75,0x0a75,0x0a75,0x0a75,0x083a,0x083a,0x083a,0x083a .short 0x870a,0x870a,0x870a,0x870a,0xfa28,0xfa28,0xfa28,0xfa28 .short 0x1975,0x1975,0x1975,0x1975,0x163a,0x163a,0x163a,0x163a .short 0x0b82,0x0b82,0x0b82,0x0b82,0x0b82,0x0b82,0x0b82,0x0b82 .short 0x0bf9,0x0bf9,0x0bf9,0x0bf9,0x0bf9,0x0bf9,0x0bf9,0x0bf9 .short 0x7182,0x7182,0x7182,0x7182,0x7182,0x7182,0x7182,0x7182 .short 0x66f9,0x66f9,0x66f9,0x66f9,0x66f9,0x66f9,0x66f9,0x66f9 .short 0x052d,0x052d,0x052d,0x052d,0x052d,0x052d,0x052d,0x052d .short 0x0ac4,0x0ac4,0x0ac4,0x0ac4,0x0ac4,0x0ac4,0x0ac4,0x0ac4 .short 0xbc2d,0xbc2d,0xbc2d,0xbc2d,0xbc2d,0xbc2d,0xbc2d,0xbc2d .short 0x16c4,0x16c4,0x16c4,0x16c4,0x16c4,0x16c4,0x16c4,0x16c4 .short 0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93 .short 0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93,0x0a93 .short 0x9393,0x9393,0x9393,0x9393,0x9393,0x9393,0x9393,0x9393 .short 0x9393,0x9393,0x9393,0x9393,0x9393,0x9393,0x9393,0x9393 .short 0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab .short 0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab,0x00ab .short 0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab .short 0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab,0x51ab .short 0x072c,0x072c,0x072c,0x072c,0x072c,0x072c,0x072c,0x072c .short 0x072c,0x072c,0x072c,0x072c,0x072c,0x072c,0x072c,0x072c .short 0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c .short 0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c,0xcb2c .short 0x0167,0x0167,0x0167,0x0167,0x0167,0x0167,0x0167,0x0167 .short 0x0167,0x0167,0x0167,0x0167,0x0167,0x0167,0x0167,0x0167 .short 0xc667,0xc667,0xc667,0xc667,0xc667,0xc667,0xc667,0xc667 .short 0xc667,0xc667,0xc667,0xc667,0xc667,0xc667,0xc667,0xc667 .short 0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6 .short 0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6,0x02f6 .short 0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6 .short 0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6,0x84f6 .short 0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1 .short 0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1,0x05a1 .short 0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1 .short 0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1,0xd8a1 #ifndef __APPLE__ .text .globl mlkem_keygen_avx2 .type mlkem_keygen_avx2,@function .align 16 mlkem_keygen_avx2: #else .section __TEXT,__text .globl _mlkem_keygen_avx2 .p2align 4 _mlkem_keygen_avx2: #endif /* __APPLE__ */ pushq %r12 vmovdqu mlkem_q(%rip), %ymm14 vmovdqu mlkem_v(%rip), %ymm15 movq %rdi, %r11 movslq %r8d, %r9 movq %rdi, %r10 L_mlkem_keygen_avx2_priv: # ntt leaq L_mlkem_avx2_zetas(%rip), %r12 vmovdqu (%r12), %ymm10 vmovdqu 32(%r12), %ymm12 vmovdqu 128(%r10), %ymm0 vmovdqu 160(%r10), %ymm1 vmovdqu 192(%r10), %ymm2 vmovdqu 224(%r10), %ymm3 vmovdqu 384(%r10), %ymm4 vmovdqu 416(%r10), %ymm5 vmovdqu 448(%r10), %ymm6 vmovdqu 480(%r10), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm0, 128(%r10) vmovdqu %ymm1, 160(%r10) vmovdqu %ymm2, 192(%r10) vmovdqu %ymm3, 224(%r10) vmovdqu %ymm4, 384(%r10) vmovdqu %ymm5, 416(%r10) vmovdqu %ymm6, 448(%r10) vmovdqu %ymm7, 480(%r10) vmovdqu (%r10), %ymm0 vmovdqu 32(%r10), %ymm1 vmovdqu 64(%r10), %ymm2 vmovdqu 96(%r10), %ymm3 vmovdqu 256(%r10), %ymm4 vmovdqu 288(%r10), %ymm5 vmovdqu 320(%r10), %ymm6 vmovdqu 352(%r10), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm4, 256(%r10) vmovdqu %ymm5, 288(%r10) vmovdqu %ymm6, 320(%r10) vmovdqu %ymm7, 352(%r10) vmovdqu 128(%r10), %ymm4 vmovdqu 160(%r10), %ymm5 vmovdqu 192(%r10), %ymm6 vmovdqu 224(%r10), %ymm7 # 64: 0/3 vmovdqu 64(%r12), %ymm10 vmovdqu 96(%r12), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 0/3 vmovdqu 128(%r12), %ymm10 vmovdqu 160(%r12), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 0/3 vmovdqu 192(%r12), %ymm10 vmovdqu 224(%r12), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 0/3 vmovdqu 256(%r12), %ymm10 vmovdqu 288(%r12), %ymm12 vmovdqu 320(%r12), %ymm11 vmovdqu 352(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 0/3 vmovdqu 384(%r12), %ymm10 vmovdqu 416(%r12), %ymm12 vmovdqu 448(%r12), %ymm11 vmovdqu 480(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 0/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 512(%r12), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 544(%r12), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 576(%r12), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 608(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 0/3 vmovdqu 640(%r12), %ymm10 vmovdqu 672(%r12), %ymm12 vmovdqu 704(%r12), %ymm11 vmovdqu 736(%r12), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 0/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 768(%r12), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 800(%r12), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 832(%r12), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 864(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 0/3 vmovdqu 896(%r12), %ymm10 vmovdqu 928(%r12), %ymm12 vmovdqu 960(%r12), %ymm11 vmovdqu 992(%r12), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 0/3 vmovdqu 1024(%r12), %ymm10 vmovdqu 1056(%r12), %ymm12 vmovdqu 1088(%r12), %ymm11 vmovdqu 1120(%r12), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 0/3 vmovdqu 1152(%r12), %ymm10 vmovdqu 1184(%r12), %ymm12 vmovdqu 1216(%r12), %ymm11 vmovdqu 1248(%r12), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, (%r10) vmovdqu %ymm9, 32(%r10) vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 64(%r10) vmovdqu %ymm9, 96(%r10) vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 128(%r10) vmovdqu %ymm9, 160(%r10) vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 192(%r10) vmovdqu %ymm9, 224(%r10) vmovdqu 256(%r10), %ymm0 vmovdqu 288(%r10), %ymm1 vmovdqu 320(%r10), %ymm2 vmovdqu 352(%r10), %ymm3 vmovdqu 384(%r10), %ymm4 vmovdqu 416(%r10), %ymm5 vmovdqu 448(%r10), %ymm6 vmovdqu 480(%r10), %ymm7 # 64: 1/3 vmovdqu 1280(%r12), %ymm10 vmovdqu 1312(%r12), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 1/3 vmovdqu 1344(%r12), %ymm10 vmovdqu 1376(%r12), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 1/3 vmovdqu 1408(%r12), %ymm10 vmovdqu 1440(%r12), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 1/3 vmovdqu 1472(%r12), %ymm10 vmovdqu 1504(%r12), %ymm12 vmovdqu 1536(%r12), %ymm11 vmovdqu 1568(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 1/3 vmovdqu 1600(%r12), %ymm10 vmovdqu 1632(%r12), %ymm12 vmovdqu 1664(%r12), %ymm11 vmovdqu 1696(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 1/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1728(%r12), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 1760(%r12), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 1792(%r12), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 1824(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 1/3 vmovdqu 1856(%r12), %ymm10 vmovdqu 1888(%r12), %ymm12 vmovdqu 1920(%r12), %ymm11 vmovdqu 1952(%r12), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 1/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1984(%r12), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 2016(%r12), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 2048(%r12), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 2080(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 1/3 vmovdqu 2112(%r12), %ymm10 vmovdqu 2144(%r12), %ymm12 vmovdqu 2176(%r12), %ymm11 vmovdqu 2208(%r12), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 1/3 vmovdqu 2240(%r12), %ymm10 vmovdqu 2272(%r12), %ymm12 vmovdqu 2304(%r12), %ymm11 vmovdqu 2336(%r12), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 1/3 vmovdqu 2368(%r12), %ymm10 vmovdqu 2400(%r12), %ymm12 vmovdqu 2432(%r12), %ymm11 vmovdqu 2464(%r12), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, 256(%r10) vmovdqu %ymm9, 288(%r10) vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 320(%r10) vmovdqu %ymm9, 352(%r10) vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 384(%r10) vmovdqu %ymm9, 416(%r10) vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 448(%r10) vmovdqu %ymm9, 480(%r10) addq $0x200, %r10 subq $0x01, %r9 jg L_mlkem_keygen_avx2_priv vmovdqu mlkem_qinv(%rip), %ymm13 movslq %r8d, %rax movq %rsi, %r10 L_mlkem_keygen_avx2_acc: # Pointwise acc mont movslq %r8d, %r9 # Base mul mont leaq L_mlkem_avx2_zetas_basemul(%rip), %r12 vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdi), %ymm4 vmovdqu 32(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r12), %ymm10 vmovdqu 32(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, (%r10) vmovdqu %ymm1, 32(%r10) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdi), %ymm4 vmovdqu 96(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r12), %ymm10 vmovdqu 96(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 64(%r10) vmovdqu %ymm1, 96(%r10) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r12), %ymm10 vmovdqu 160(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 128(%r10) vmovdqu %ymm1, 160(%r10) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdi), %ymm4 vmovdqu 224(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r12), %ymm10 vmovdqu 224(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 192(%r10) vmovdqu %ymm1, 224(%r10) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdi), %ymm4 vmovdqu 288(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r12), %ymm10 vmovdqu 288(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 256(%r10) vmovdqu %ymm1, 288(%r10) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdi), %ymm4 vmovdqu 352(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r12), %ymm10 vmovdqu 352(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 320(%r10) vmovdqu %ymm1, 352(%r10) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r12), %ymm10 vmovdqu 416(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 384(%r10) vmovdqu %ymm1, 416(%r10) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdi), %ymm4 vmovdqu 480(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r12), %ymm10 vmovdqu 480(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 448(%r10) vmovdqu %ymm1, 480(%r10) addq $0x200, %rcx addq $0x200, %rdi subq $2, %r9 jz L_pointwise_acc_mont_end_keygen L_pointwise_acc_mont_start_keygen: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %r12 vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdi), %ymm4 vmovdqu 32(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r12), %ymm10 vmovdqu 32(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%r10), %ymm6 vmovdqu 32(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%r10) vmovdqu %ymm1, 32(%r10) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdi), %ymm4 vmovdqu 96(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r12), %ymm10 vmovdqu 96(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%r10), %ymm6 vmovdqu 96(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%r10) vmovdqu %ymm1, 96(%r10) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r12), %ymm10 vmovdqu 160(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%r10), %ymm6 vmovdqu 160(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%r10) vmovdqu %ymm1, 160(%r10) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdi), %ymm4 vmovdqu 224(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r12), %ymm10 vmovdqu 224(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%r10), %ymm6 vmovdqu 224(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%r10) vmovdqu %ymm1, 224(%r10) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdi), %ymm4 vmovdqu 288(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r12), %ymm10 vmovdqu 288(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%r10), %ymm6 vmovdqu 288(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%r10) vmovdqu %ymm1, 288(%r10) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdi), %ymm4 vmovdqu 352(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r12), %ymm10 vmovdqu 352(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%r10), %ymm6 vmovdqu 352(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%r10) vmovdqu %ymm1, 352(%r10) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r12), %ymm10 vmovdqu 416(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%r10), %ymm6 vmovdqu 416(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%r10) vmovdqu %ymm1, 416(%r10) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdi), %ymm4 vmovdqu 480(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r12), %ymm10 vmovdqu 480(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%r10), %ymm6 vmovdqu 480(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%r10) vmovdqu %ymm1, 480(%r10) addq $0x200, %rcx addq $0x200, %rdi subq $0x01, %r9 jg L_pointwise_acc_mont_start_keygen L_pointwise_acc_mont_end_keygen: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %r12 vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdi), %ymm4 vmovdqu 32(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r12), %ymm10 vmovdqu 32(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%r10), %ymm6 vmovdqu 32(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%r10) vmovdqu %ymm1, 32(%r10) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdi), %ymm4 vmovdqu 96(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r12), %ymm10 vmovdqu 96(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%r10), %ymm6 vmovdqu 96(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%r10) vmovdqu %ymm1, 96(%r10) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r12), %ymm10 vmovdqu 160(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%r10), %ymm6 vmovdqu 160(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%r10) vmovdqu %ymm1, 160(%r10) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdi), %ymm4 vmovdqu 224(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r12), %ymm10 vmovdqu 224(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%r10), %ymm6 vmovdqu 224(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%r10) vmovdqu %ymm1, 224(%r10) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdi), %ymm4 vmovdqu 288(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r12), %ymm10 vmovdqu 288(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%r10), %ymm6 vmovdqu 288(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%r10) vmovdqu %ymm1, 288(%r10) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdi), %ymm4 vmovdqu 352(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r12), %ymm10 vmovdqu 352(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%r10), %ymm6 vmovdqu 352(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%r10) vmovdqu %ymm1, 352(%r10) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r12), %ymm10 vmovdqu 416(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%r10), %ymm6 vmovdqu 416(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%r10) vmovdqu %ymm1, 416(%r10) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdi), %ymm4 vmovdqu 480(%rdi), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r12), %ymm10 vmovdqu 480(%r12), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm13, %ymm1, %ymm8 vpmullw %ymm13, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%r10), %ymm6 vmovdqu 480(%r10), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%r10) vmovdqu %ymm1, 480(%r10) addq $0x200, %rcx movq %r11, %rdi addq $0x200, %r10 subq $0x01, %rax jg L_mlkem_keygen_avx2_acc movslq %r8d, %rax vmovdqu mlkem_f(%rip), %ymm12 vmovdqu mlkem_f_qinv(%rip), %ymm13 movslq %r8d, %rax movq %rsi, %r10 L_mlkem_keygen_avx2_to_mont: # To Mont vmovdqu (%r10), %ymm0 vmovdqu 32(%r10), %ymm1 vmovdqu 64(%r10), %ymm2 vmovdqu 96(%r10), %ymm3 vpmullw %ymm13, %ymm0, %ymm4 vpmulhw %ymm12, %ymm0, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm0 vpmullw %ymm13, %ymm1, %ymm4 vpmulhw %ymm12, %ymm1, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm1 vpmullw %ymm13, %ymm2, %ymm4 vpmulhw %ymm12, %ymm2, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm2 vpmullw %ymm13, %ymm3, %ymm4 vpmulhw %ymm12, %ymm3, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm3 vmovdqu %ymm0, (%r10) vmovdqu %ymm1, 32(%r10) vmovdqu %ymm2, 64(%r10) vmovdqu %ymm3, 96(%r10) vmovdqu 128(%r10), %ymm0 vmovdqu 160(%r10), %ymm1 vmovdqu 192(%r10), %ymm2 vmovdqu 224(%r10), %ymm3 vpmullw %ymm13, %ymm0, %ymm4 vpmulhw %ymm12, %ymm0, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm0 vpmullw %ymm13, %ymm1, %ymm4 vpmulhw %ymm12, %ymm1, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm1 vpmullw %ymm13, %ymm2, %ymm4 vpmulhw %ymm12, %ymm2, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm2 vpmullw %ymm13, %ymm3, %ymm4 vpmulhw %ymm12, %ymm3, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm3 vmovdqu %ymm0, 128(%r10) vmovdqu %ymm1, 160(%r10) vmovdqu %ymm2, 192(%r10) vmovdqu %ymm3, 224(%r10) vmovdqu 256(%r10), %ymm0 vmovdqu 288(%r10), %ymm1 vmovdqu 320(%r10), %ymm2 vmovdqu 352(%r10), %ymm3 vpmullw %ymm13, %ymm0, %ymm4 vpmulhw %ymm12, %ymm0, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm0 vpmullw %ymm13, %ymm1, %ymm4 vpmulhw %ymm12, %ymm1, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm1 vpmullw %ymm13, %ymm2, %ymm4 vpmulhw %ymm12, %ymm2, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm2 vpmullw %ymm13, %ymm3, %ymm4 vpmulhw %ymm12, %ymm3, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm3 vmovdqu %ymm0, 256(%r10) vmovdqu %ymm1, 288(%r10) vmovdqu %ymm2, 320(%r10) vmovdqu %ymm3, 352(%r10) vmovdqu 384(%r10), %ymm0 vmovdqu 416(%r10), %ymm1 vmovdqu 448(%r10), %ymm2 vmovdqu 480(%r10), %ymm3 vpmullw %ymm13, %ymm0, %ymm4 vpmulhw %ymm12, %ymm0, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm0 vpmullw %ymm13, %ymm1, %ymm4 vpmulhw %ymm12, %ymm1, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm1 vpmullw %ymm13, %ymm2, %ymm4 vpmulhw %ymm12, %ymm2, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm2 vpmullw %ymm13, %ymm3, %ymm4 vpmulhw %ymm12, %ymm3, %ymm5 vpmulhw %ymm14, %ymm4, %ymm4 vpsubw %ymm4, %ymm5, %ymm3 vmovdqu %ymm0, 384(%r10) vmovdqu %ymm1, 416(%r10) vmovdqu %ymm2, 448(%r10) vmovdqu %ymm3, 480(%r10) addq $0x200, %r10 subq $0x01, %rax jg L_mlkem_keygen_avx2_to_mont movslq %r8d, %rax L_mlkem_keygen_avx2_to_mont_ntt_err: # ntt leaq L_mlkem_avx2_zetas(%rip), %r12 vmovdqu (%r12), %ymm10 vmovdqu 32(%r12), %ymm12 vmovdqu 128(%rdx), %ymm0 vmovdqu 160(%rdx), %ymm1 vmovdqu 192(%rdx), %ymm2 vmovdqu 224(%rdx), %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vmovdqu 448(%rdx), %ymm6 vmovdqu 480(%rdx), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu %ymm2, 192(%rdx) vmovdqu %ymm3, 224(%rdx) vmovdqu %ymm4, 384(%rdx) vmovdqu %ymm5, 416(%rdx) vmovdqu %ymm6, 448(%rdx) vmovdqu %ymm7, 480(%rdx) vmovdqu (%rdx), %ymm0 vmovdqu 32(%rdx), %ymm1 vmovdqu 64(%rdx), %ymm2 vmovdqu 96(%rdx), %ymm3 vmovdqu 256(%rdx), %ymm4 vmovdqu 288(%rdx), %ymm5 vmovdqu 320(%rdx), %ymm6 vmovdqu 352(%rdx), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm4, 256(%rdx) vmovdqu %ymm5, 288(%rdx) vmovdqu %ymm6, 320(%rdx) vmovdqu %ymm7, 352(%rdx) vmovdqu 128(%rdx), %ymm4 vmovdqu 160(%rdx), %ymm5 vmovdqu 192(%rdx), %ymm6 vmovdqu 224(%rdx), %ymm7 # 64: 0/3 vmovdqu 64(%r12), %ymm10 vmovdqu 96(%r12), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 0/3 vmovdqu 128(%r12), %ymm10 vmovdqu 160(%r12), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 0/3 vmovdqu 192(%r12), %ymm10 vmovdqu 224(%r12), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 0/3 vmovdqu 256(%r12), %ymm10 vmovdqu 288(%r12), %ymm12 vmovdqu 320(%r12), %ymm11 vmovdqu 352(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 0/3 vmovdqu 384(%r12), %ymm10 vmovdqu 416(%r12), %ymm12 vmovdqu 448(%r12), %ymm11 vmovdqu 480(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 0/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 512(%r12), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 544(%r12), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 576(%r12), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 608(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 0/3 vmovdqu 640(%r12), %ymm10 vmovdqu 672(%r12), %ymm12 vmovdqu 704(%r12), %ymm11 vmovdqu 736(%r12), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 0/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 768(%r12), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 800(%r12), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 832(%r12), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 864(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 0/3 vmovdqu 896(%r12), %ymm10 vmovdqu 928(%r12), %ymm12 vmovdqu 960(%r12), %ymm11 vmovdqu 992(%r12), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 0/3 vmovdqu 1024(%r12), %ymm10 vmovdqu 1056(%r12), %ymm12 vmovdqu 1088(%r12), %ymm11 vmovdqu 1120(%r12), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 0/3 vmovdqu 1152(%r12), %ymm10 vmovdqu 1184(%r12), %ymm12 vmovdqu 1216(%r12), %ymm11 vmovdqu 1248(%r12), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vmovdqu (%rsi), %ymm8 vmovdqu 32(%rsi), %ymm9 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, (%rsi) vmovdqu %ymm9, 32(%rsi) vmovdqu 64(%rsi), %ymm8 vmovdqu 96(%rsi), %ymm9 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 64(%rsi) vmovdqu %ymm9, 96(%rsi) vmovdqu 128(%rsi), %ymm8 vmovdqu 160(%rsi), %ymm9 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 128(%rsi) vmovdqu %ymm9, 160(%rsi) vmovdqu 192(%rsi), %ymm8 vmovdqu 224(%rsi), %ymm9 vpaddw %ymm8, %ymm6, %ymm6 vpaddw %ymm9, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 192(%rsi) vmovdqu %ymm9, 224(%rsi) vmovdqu 256(%rdx), %ymm0 vmovdqu 288(%rdx), %ymm1 vmovdqu 320(%rdx), %ymm2 vmovdqu 352(%rdx), %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vmovdqu 448(%rdx), %ymm6 vmovdqu 480(%rdx), %ymm7 # 64: 1/3 vmovdqu 1280(%r12), %ymm10 vmovdqu 1312(%r12), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 1/3 vmovdqu 1344(%r12), %ymm10 vmovdqu 1376(%r12), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 1/3 vmovdqu 1408(%r12), %ymm10 vmovdqu 1440(%r12), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 1/3 vmovdqu 1472(%r12), %ymm10 vmovdqu 1504(%r12), %ymm12 vmovdqu 1536(%r12), %ymm11 vmovdqu 1568(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 1/3 vmovdqu 1600(%r12), %ymm10 vmovdqu 1632(%r12), %ymm12 vmovdqu 1664(%r12), %ymm11 vmovdqu 1696(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 1/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1728(%r12), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 1760(%r12), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 1792(%r12), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 1824(%r12), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 1/3 vmovdqu 1856(%r12), %ymm10 vmovdqu 1888(%r12), %ymm12 vmovdqu 1920(%r12), %ymm11 vmovdqu 1952(%r12), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 1/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1984(%r12), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 2016(%r12), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 2048(%r12), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 2080(%r12), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 1/3 vmovdqu 2112(%r12), %ymm10 vmovdqu 2144(%r12), %ymm12 vmovdqu 2176(%r12), %ymm11 vmovdqu 2208(%r12), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 1/3 vmovdqu 2240(%r12), %ymm10 vmovdqu 2272(%r12), %ymm12 vmovdqu 2304(%r12), %ymm11 vmovdqu 2336(%r12), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 1/3 vmovdqu 2368(%r12), %ymm10 vmovdqu 2400(%r12), %ymm12 vmovdqu 2432(%r12), %ymm11 vmovdqu 2464(%r12), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vmovdqu 256(%rsi), %ymm8 vmovdqu 288(%rsi), %ymm9 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, 256(%rsi) vmovdqu %ymm9, 288(%rsi) vmovdqu 320(%rsi), %ymm8 vmovdqu 352(%rsi), %ymm9 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 320(%rsi) vmovdqu %ymm9, 352(%rsi) vmovdqu 384(%rsi), %ymm8 vmovdqu 416(%rsi), %ymm9 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 384(%rsi) vmovdqu %ymm9, 416(%rsi) vmovdqu 448(%rsi), %ymm8 vmovdqu 480(%rsi), %ymm9 vpaddw %ymm8, %ymm6, %ymm6 vpaddw %ymm9, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 448(%rsi) vmovdqu %ymm9, 480(%rsi) addq $0x200, %rdx addq $0x200, %rsi subq $0x01, %rax jg L_mlkem_keygen_avx2_to_mont_ntt_err vzeroupper popq %r12 repz retq #ifndef __APPLE__ .size mlkem_keygen_avx2,.-mlkem_keygen_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_encapsulate_avx2 .type mlkem_encapsulate_avx2,@function .align 16 mlkem_encapsulate_avx2: #else .section __TEXT,__text .globl _mlkem_encapsulate_avx2 .p2align 4 _mlkem_encapsulate_avx2: #endif /* __APPLE__ */ pushq %r12 pushq %r13 pushq %r14 pushq %r15 pushq %rbx movq 48(%rsp), %rax movq 56(%rsp), %r10 movq 64(%rsp), %r11 subq $48, %rsp vmovdqu mlkem_q(%rip), %ymm14 vmovdqu mlkem_v(%rip), %ymm15 movq %r8, %r15 movslq %r11d, %r13 movq %r8, %r14 L_mlkem_encapsulate_avx2_trans: # ntt leaq L_mlkem_avx2_zetas(%rip), %rbx vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm12 vmovdqu 128(%r14), %ymm0 vmovdqu 160(%r14), %ymm1 vmovdqu 192(%r14), %ymm2 vmovdqu 224(%r14), %ymm3 vmovdqu 384(%r14), %ymm4 vmovdqu 416(%r14), %ymm5 vmovdqu 448(%r14), %ymm6 vmovdqu 480(%r14), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm0, 128(%r14) vmovdqu %ymm1, 160(%r14) vmovdqu %ymm2, 192(%r14) vmovdqu %ymm3, 224(%r14) vmovdqu %ymm4, 384(%r14) vmovdqu %ymm5, 416(%r14) vmovdqu %ymm6, 448(%r14) vmovdqu %ymm7, 480(%r14) vmovdqu (%r14), %ymm0 vmovdqu 32(%r14), %ymm1 vmovdqu 64(%r14), %ymm2 vmovdqu 96(%r14), %ymm3 vmovdqu 256(%r14), %ymm4 vmovdqu 288(%r14), %ymm5 vmovdqu 320(%r14), %ymm6 vmovdqu 352(%r14), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm4, 256(%r14) vmovdqu %ymm5, 288(%r14) vmovdqu %ymm6, 320(%r14) vmovdqu %ymm7, 352(%r14) vmovdqu 128(%r14), %ymm4 vmovdqu 160(%r14), %ymm5 vmovdqu 192(%r14), %ymm6 vmovdqu 224(%r14), %ymm7 # 64: 0/3 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 0/3 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 0/3 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 0/3 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm12 vmovdqu 320(%rbx), %ymm11 vmovdqu 352(%rbx), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 0/3 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm12 vmovdqu 448(%rbx), %ymm11 vmovdqu 480(%rbx), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 0/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 512(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 544(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 576(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 608(%rbx), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 0/3 vmovdqu 640(%rbx), %ymm10 vmovdqu 672(%rbx), %ymm12 vmovdqu 704(%rbx), %ymm11 vmovdqu 736(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 0/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 768(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 800(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 832(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 864(%rbx), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 0/3 vmovdqu 896(%rbx), %ymm10 vmovdqu 928(%rbx), %ymm12 vmovdqu 960(%rbx), %ymm11 vmovdqu 992(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 0/3 vmovdqu 1024(%rbx), %ymm10 vmovdqu 1056(%rbx), %ymm12 vmovdqu 1088(%rbx), %ymm11 vmovdqu 1120(%rbx), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 0/3 vmovdqu 1152(%rbx), %ymm10 vmovdqu 1184(%rbx), %ymm12 vmovdqu 1216(%rbx), %ymm11 vmovdqu 1248(%rbx), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vmovdqu %ymm0, (%r14) vmovdqu %ymm1, 32(%r14) vmovdqu %ymm2, 64(%r14) vmovdqu %ymm3, 96(%r14) vmovdqu %ymm4, 128(%r14) vmovdqu %ymm5, 160(%r14) vmovdqu %ymm6, 192(%r14) vmovdqu %ymm7, 224(%r14) vmovdqu 256(%r14), %ymm0 vmovdqu 288(%r14), %ymm1 vmovdqu 320(%r14), %ymm2 vmovdqu 352(%r14), %ymm3 vmovdqu 384(%r14), %ymm4 vmovdqu 416(%r14), %ymm5 vmovdqu 448(%r14), %ymm6 vmovdqu 480(%r14), %ymm7 # 64: 1/3 vmovdqu 1280(%rbx), %ymm10 vmovdqu 1312(%rbx), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 1/3 vmovdqu 1344(%rbx), %ymm10 vmovdqu 1376(%rbx), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 1/3 vmovdqu 1408(%rbx), %ymm10 vmovdqu 1440(%rbx), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 1/3 vmovdqu 1472(%rbx), %ymm10 vmovdqu 1504(%rbx), %ymm12 vmovdqu 1536(%rbx), %ymm11 vmovdqu 1568(%rbx), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 1/3 vmovdqu 1600(%rbx), %ymm10 vmovdqu 1632(%rbx), %ymm12 vmovdqu 1664(%rbx), %ymm11 vmovdqu 1696(%rbx), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 1/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1728(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 1760(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 1792(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 1824(%rbx), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 1/3 vmovdqu 1856(%rbx), %ymm10 vmovdqu 1888(%rbx), %ymm12 vmovdqu 1920(%rbx), %ymm11 vmovdqu 1952(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 1/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1984(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 2016(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 2048(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 2080(%rbx), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 1/3 vmovdqu 2112(%rbx), %ymm10 vmovdqu 2144(%rbx), %ymm12 vmovdqu 2176(%rbx), %ymm11 vmovdqu 2208(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 1/3 vmovdqu 2240(%rbx), %ymm10 vmovdqu 2272(%rbx), %ymm12 vmovdqu 2304(%rbx), %ymm11 vmovdqu 2336(%rbx), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 1/3 vmovdqu 2368(%rbx), %ymm10 vmovdqu 2400(%rbx), %ymm12 vmovdqu 2432(%rbx), %ymm11 vmovdqu 2464(%rbx), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vmovdqu %ymm0, 256(%r14) vmovdqu %ymm1, 288(%r14) vmovdqu %ymm2, 320(%r14) vmovdqu %ymm3, 352(%r14) vmovdqu %ymm4, 384(%r14) vmovdqu %ymm5, 416(%r14) vmovdqu %ymm6, 448(%r14) vmovdqu %ymm7, 480(%r14) addq $0x200, %r14 subq $0x01, %r13 jg L_mlkem_encapsulate_avx2_trans movslq %r11d, %r12 L_mlkem_encapsulate_avx2_calc: vmovdqu mlkem_qinv(%rip), %ymm12 # Pointwise acc mont movslq %r11d, %r13 # Base mul mont leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rcx addq $0x200, %r8 subq $2, %r13 jz L_pointwise_acc_mont_end_encap_bp L_pointwise_acc_mont_start_encap_bp: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rsi), %ymm6 vmovdqu 32(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rsi), %ymm6 vmovdqu 96(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rsi), %ymm6 vmovdqu 160(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rsi), %ymm6 vmovdqu 288(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rsi), %ymm6 vmovdqu 416(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rcx addq $0x200, %r8 subq $0x01, %r13 jg L_pointwise_acc_mont_start_encap_bp L_pointwise_acc_mont_end_encap_bp: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rcx), %ymm2 vmovdqu 32(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rsi), %ymm6 vmovdqu 32(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rcx), %ymm2 vmovdqu 96(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rsi), %ymm6 vmovdqu 96(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rcx), %ymm2 vmovdqu 160(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rsi), %ymm6 vmovdqu 160(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rcx), %ymm2 vmovdqu 224(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rcx), %ymm2 vmovdqu 288(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rsi), %ymm6 vmovdqu 288(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rcx), %ymm2 vmovdqu 352(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rcx), %ymm2 vmovdqu 416(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rsi), %ymm6 vmovdqu 416(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rcx), %ymm2 vmovdqu 480(%rcx), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rcx movq %r15, %r8 # invntt leaq L_mlkem_avx2_zetas_inv(%rip), %rbx vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 128(%rsi), %ymm4 vmovdqu 160(%rsi), %ymm5 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 # 2: 1/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu (%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 32(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 64(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 96(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 1/2 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm12 vmovdqu 192(%rbx), %ymm11 vmovdqu 224(%rbx), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 1/2 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm12 vmovdqu 320(%rbx), %ymm11 vmovdqu 352(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 1/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 384(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 416(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 448(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 480(%rbx), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 1/2 vmovdqu 512(%rbx), %ymm10 vmovdqu 544(%rbx), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 1/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 576(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 608(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 640(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 672(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 1/2 vmovdqu 704(%rbx), %ymm10 vmovdqu 736(%rbx), %ymm12 vmovdqu 768(%rbx), %ymm11 vmovdqu 800(%rbx), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 1/2 vmovdqu 832(%rbx), %ymm10 vmovdqu 864(%rbx), %ymm12 vmovdqu 896(%rbx), %ymm11 vmovdqu 928(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 1/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 960(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 992(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 1024(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 1056(%rbx), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 1/2 vmovdqu 1088(%rbx), %ymm10 vmovdqu 1120(%rbx), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 1/2 vmovdqu 1152(%rbx), %ymm10 vmovdqu 1184(%rbx), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu %ymm4, 128(%rsi) vmovdqu %ymm5, 160(%rsi) vmovdqu %ymm6, 192(%rsi) vmovdqu %ymm7, 224(%rsi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vmovdqu 320(%rsi), %ymm2 vmovdqu 352(%rsi), %ymm3 vmovdqu 384(%rsi), %ymm4 vmovdqu 416(%rsi), %ymm5 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 # 2: 2/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1216(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 1248(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 1280(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 1312(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 2/2 vmovdqu 1344(%rbx), %ymm10 vmovdqu 1376(%rbx), %ymm12 vmovdqu 1408(%rbx), %ymm11 vmovdqu 1440(%rbx), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 2/2 vmovdqu 1472(%rbx), %ymm10 vmovdqu 1504(%rbx), %ymm12 vmovdqu 1536(%rbx), %ymm11 vmovdqu 1568(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 2/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 1600(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 1632(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 1664(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 1696(%rbx), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 2/2 vmovdqu 1728(%rbx), %ymm10 vmovdqu 1760(%rbx), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 2/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1792(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 1824(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 1856(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 1888(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 2/2 vmovdqu 1920(%rbx), %ymm10 vmovdqu 1952(%rbx), %ymm12 vmovdqu 1984(%rbx), %ymm11 vmovdqu 2016(%rbx), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 2/2 vmovdqu 2048(%rbx), %ymm10 vmovdqu 2080(%rbx), %ymm12 vmovdqu 2112(%rbx), %ymm11 vmovdqu 2144(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 2/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 2176(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 2208(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 2240(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 2272(%rbx), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 2/2 vmovdqu 2304(%rbx), %ymm10 vmovdqu 2336(%rbx), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 2/2 vmovdqu 2368(%rbx), %ymm10 vmovdqu 2400(%rbx), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu %ymm2, 320(%rsi) vmovdqu %ymm3, 352(%rsi) # 128 vmovdqu 2432(%rbx), %ymm10 vmovdqu 2464(%rbx), %ymm12 vmovdqu 2496(%rbx), %ymm11 vmovdqu 2528(%rbx), %ymm13 vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm1 vmovdqu 192(%rsi), %ymm2 vmovdqu 224(%rsi), %ymm3 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu %ymm2, 192(%rsi) vmovdqu %ymm3, 224(%rsi) vmovdqu %ymm4, 384(%rsi) vmovdqu %ymm5, 416(%rsi) vmovdqu %ymm6, 448(%rsi) vmovdqu %ymm7, 480(%rsi) vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 256(%rsi), %ymm4 vmovdqu 288(%rsi), %ymm5 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu %ymm4, 256(%rsi) vmovdqu %ymm5, 288(%rsi) vmovdqu %ymm6, 320(%rsi) vmovdqu %ymm7, 352(%rsi) # Add Errors vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu (%r9), %ymm4 vmovdqu 32(%r9), %ymm5 vmovdqu 64(%r9), %ymm6 vmovdqu 96(%r9), %ymm7 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm1 vmovdqu 192(%rsi), %ymm2 vmovdqu 224(%rsi), %ymm3 vmovdqu 128(%r9), %ymm4 vmovdqu 160(%r9), %ymm5 vmovdqu 192(%r9), %ymm6 vmovdqu 224(%r9), %ymm7 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu %ymm2, 192(%rsi) vmovdqu %ymm3, 224(%rsi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vmovdqu 320(%rsi), %ymm2 vmovdqu 352(%rsi), %ymm3 vmovdqu 256(%r9), %ymm4 vmovdqu 288(%r9), %ymm5 vmovdqu 320(%r9), %ymm6 vmovdqu 352(%r9), %ymm7 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu %ymm2, 320(%rsi) vmovdqu %ymm3, 352(%rsi) vmovdqu 384(%rsi), %ymm0 vmovdqu 416(%rsi), %ymm1 vmovdqu 448(%rsi), %ymm2 vmovdqu 480(%rsi), %ymm3 vmovdqu 384(%r9), %ymm4 vmovdqu 416(%r9), %ymm5 vmovdqu 448(%r9), %ymm6 vmovdqu 480(%r9), %ymm7 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu %ymm2, 448(%rsi) vmovdqu %ymm3, 480(%rsi) addq $0x200, %r9 addq $0x200, %rsi subq $0x01, %r12 jg L_mlkem_encapsulate_avx2_calc vmovdqu mlkem_qinv(%rip), %ymm12 # Pointwise acc mont movslq %r11d, %r13 # Base mul mont leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rdx) vmovdqu %ymm1, 96(%rdx) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rdx) vmovdqu %ymm1, 224(%rdx) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rdx) vmovdqu %ymm1, 288(%rdx) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rdx) vmovdqu %ymm1, 352(%rdx) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rdx) vmovdqu %ymm1, 416(%rdx) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rdx) vmovdqu %ymm1, 480(%rdx) addq $0x200, %rdi addq $0x200, %r8 subq $2, %r13 jz L_pointwise_acc_mont_end_encap_v L_pointwise_acc_mont_start_encap_v: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rdx), %ymm6 vmovdqu 32(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rdx), %ymm6 vmovdqu 96(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rdx) vmovdqu %ymm1, 96(%rdx) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rdx), %ymm6 vmovdqu 160(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rdx), %ymm6 vmovdqu 224(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rdx) vmovdqu %ymm1, 224(%rdx) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rdx), %ymm6 vmovdqu 288(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rdx) vmovdqu %ymm1, 288(%rdx) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rdx), %ymm6 vmovdqu 352(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rdx) vmovdqu %ymm1, 352(%rdx) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rdx), %ymm6 vmovdqu 416(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rdx) vmovdqu %ymm1, 416(%rdx) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rdx), %ymm6 vmovdqu 480(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rdx) vmovdqu %ymm1, 480(%rdx) addq $0x200, %rdi addq $0x200, %r8 subq $0x01, %r13 jg L_pointwise_acc_mont_start_encap_v L_pointwise_acc_mont_end_encap_v: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%r8), %ymm4 vmovdqu 32(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%rbx), %ymm10 vmovdqu 32(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rdx), %ymm6 vmovdqu 32(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%r8), %ymm4 vmovdqu 96(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%rbx), %ymm10 vmovdqu 96(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rdx), %ymm6 vmovdqu 96(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rdx) vmovdqu %ymm1, 96(%rdx) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%r8), %ymm4 vmovdqu 160(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rdx), %ymm6 vmovdqu 160(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%r8), %ymm4 vmovdqu 224(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%rbx), %ymm10 vmovdqu 224(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rdx), %ymm6 vmovdqu 224(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rdx) vmovdqu %ymm1, 224(%rdx) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%r8), %ymm4 vmovdqu 288(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rdx), %ymm6 vmovdqu 288(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rdx) vmovdqu %ymm1, 288(%rdx) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%r8), %ymm4 vmovdqu 352(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%rbx), %ymm10 vmovdqu 352(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rdx), %ymm6 vmovdqu 352(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rdx) vmovdqu %ymm1, 352(%rdx) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%r8), %ymm4 vmovdqu 416(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%rbx), %ymm10 vmovdqu 416(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rdx), %ymm6 vmovdqu 416(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rdx) vmovdqu %ymm1, 416(%rdx) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%r8), %ymm4 vmovdqu 480(%r8), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%rbx), %ymm10 vmovdqu 480(%rbx), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rdx), %ymm6 vmovdqu 480(%rdx), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rdx) vmovdqu %ymm1, 480(%rdx) addq $0x200, %rdi # invntt leaq L_mlkem_avx2_zetas_inv(%rip), %rbx vmovdqu (%rdx), %ymm0 vmovdqu 32(%rdx), %ymm1 vmovdqu 64(%rdx), %ymm2 vmovdqu 96(%rdx), %ymm3 vmovdqu 128(%rdx), %ymm4 vmovdqu 160(%rdx), %ymm5 vmovdqu 192(%rdx), %ymm6 vmovdqu 224(%rdx), %ymm7 # 2: 1/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu (%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 32(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 64(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 96(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 1/2 vmovdqu 128(%rbx), %ymm10 vmovdqu 160(%rbx), %ymm12 vmovdqu 192(%rbx), %ymm11 vmovdqu 224(%rbx), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 1/2 vmovdqu 256(%rbx), %ymm10 vmovdqu 288(%rbx), %ymm12 vmovdqu 320(%rbx), %ymm11 vmovdqu 352(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 1/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 384(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 416(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 448(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 480(%rbx), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 1/2 vmovdqu 512(%rbx), %ymm10 vmovdqu 544(%rbx), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 1/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 576(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 608(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 640(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 672(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 1/2 vmovdqu 704(%rbx), %ymm10 vmovdqu 736(%rbx), %ymm12 vmovdqu 768(%rbx), %ymm11 vmovdqu 800(%rbx), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 1/2 vmovdqu 832(%rbx), %ymm10 vmovdqu 864(%rbx), %ymm12 vmovdqu 896(%rbx), %ymm11 vmovdqu 928(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 1/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 960(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 992(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 1024(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 1056(%rbx), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 1/2 vmovdqu 1088(%rbx), %ymm10 vmovdqu 1120(%rbx), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 1/2 vmovdqu 1152(%rbx), %ymm10 vmovdqu 1184(%rbx), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu %ymm2, 64(%rdx) vmovdqu %ymm3, 96(%rdx) vmovdqu %ymm4, 128(%rdx) vmovdqu %ymm5, 160(%rdx) vmovdqu %ymm6, 192(%rdx) vmovdqu %ymm7, 224(%rdx) vmovdqu 256(%rdx), %ymm0 vmovdqu 288(%rdx), %ymm1 vmovdqu 320(%rdx), %ymm2 vmovdqu 352(%rdx), %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vmovdqu 448(%rdx), %ymm6 vmovdqu 480(%rdx), %ymm7 # 2: 2/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1216(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 1248(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 1280(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 1312(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 2/2 vmovdqu 1344(%rbx), %ymm10 vmovdqu 1376(%rbx), %ymm12 vmovdqu 1408(%rbx), %ymm11 vmovdqu 1440(%rbx), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 2/2 vmovdqu 1472(%rbx), %ymm10 vmovdqu 1504(%rbx), %ymm12 vmovdqu 1536(%rbx), %ymm11 vmovdqu 1568(%rbx), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 2/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 1600(%rbx), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 1632(%rbx), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 1664(%rbx), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 1696(%rbx), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 2/2 vmovdqu 1728(%rbx), %ymm10 vmovdqu 1760(%rbx), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 2/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1792(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 1824(%rbx), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 1856(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 1888(%rbx), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 2/2 vmovdqu 1920(%rbx), %ymm10 vmovdqu 1952(%rbx), %ymm12 vmovdqu 1984(%rbx), %ymm11 vmovdqu 2016(%rbx), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 2/2 vmovdqu 2048(%rbx), %ymm10 vmovdqu 2080(%rbx), %ymm12 vmovdqu 2112(%rbx), %ymm11 vmovdqu 2144(%rbx), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 2/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 2176(%rbx), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 2208(%rbx), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 2240(%rbx), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 2272(%rbx), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 2/2 vmovdqu 2304(%rbx), %ymm10 vmovdqu 2336(%rbx), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 2/2 vmovdqu 2368(%rbx), %ymm10 vmovdqu 2400(%rbx), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, 256(%rdx) vmovdqu %ymm1, 288(%rdx) vmovdqu %ymm2, 320(%rdx) vmovdqu %ymm3, 352(%rdx) # 128 vmovdqu 2432(%rbx), %ymm10 vmovdqu 2464(%rbx), %ymm12 vmovdqu 2496(%rbx), %ymm11 vmovdqu 2528(%rbx), %ymm13 vmovdqu 128(%rdx), %ymm0 vmovdqu 160(%rdx), %ymm1 vmovdqu 192(%rdx), %ymm2 vmovdqu 224(%rdx), %ymm3 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu %ymm2, 192(%rdx) vmovdqu %ymm3, 224(%rdx) vmovdqu %ymm4, 384(%rdx) vmovdqu %ymm5, 416(%rdx) vmovdqu %ymm6, 448(%rdx) vmovdqu %ymm7, 480(%rdx) vmovdqu (%rdx), %ymm0 vmovdqu 32(%rdx), %ymm1 vmovdqu 64(%rdx), %ymm2 vmovdqu 96(%rdx), %ymm3 vmovdqu 256(%rdx), %ymm4 vmovdqu 288(%rdx), %ymm5 vmovdqu 320(%rdx), %ymm6 vmovdqu 352(%rdx), %ymm7 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu %ymm2, 64(%rdx) vmovdqu %ymm3, 96(%rdx) vmovdqu %ymm4, 256(%rdx) vmovdqu %ymm5, 288(%rdx) vmovdqu %ymm6, 320(%rdx) vmovdqu %ymm7, 352(%rdx) # Add Errors vmovdqu (%r10), %ymm0 vmovdqu 32(%r10), %ymm1 vmovdqu 64(%r10), %ymm2 vmovdqu 96(%r10), %ymm3 vmovdqu (%rax), %ymm4 vmovdqu 32(%rax), %ymm5 vmovdqu 64(%rax), %ymm6 vmovdqu 96(%rax), %ymm7 vpaddw %ymm0, %ymm4, %ymm4 vpaddw %ymm1, %ymm5, %ymm5 vpaddw %ymm2, %ymm6, %ymm6 vpaddw %ymm3, %ymm7, %ymm7 vmovdqu (%rdx), %ymm0 vmovdqu 32(%rdx), %ymm1 vmovdqu 64(%rdx), %ymm2 vmovdqu 96(%rdx), %ymm3 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, (%rdx) vmovdqu %ymm1, 32(%rdx) vmovdqu %ymm2, 64(%rdx) vmovdqu %ymm3, 96(%rdx) vmovdqu 128(%r10), %ymm0 vmovdqu 160(%r10), %ymm1 vmovdqu 192(%r10), %ymm2 vmovdqu 224(%r10), %ymm3 vmovdqu 128(%rax), %ymm4 vmovdqu 160(%rax), %ymm5 vmovdqu 192(%rax), %ymm6 vmovdqu 224(%rax), %ymm7 vpaddw %ymm0, %ymm4, %ymm4 vpaddw %ymm1, %ymm5, %ymm5 vpaddw %ymm2, %ymm6, %ymm6 vpaddw %ymm3, %ymm7, %ymm7 vmovdqu 128(%rdx), %ymm0 vmovdqu 160(%rdx), %ymm1 vmovdqu 192(%rdx), %ymm2 vmovdqu 224(%rdx), %ymm3 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 128(%rdx) vmovdqu %ymm1, 160(%rdx) vmovdqu %ymm2, 192(%rdx) vmovdqu %ymm3, 224(%rdx) vmovdqu 256(%r10), %ymm0 vmovdqu 288(%r10), %ymm1 vmovdqu 320(%r10), %ymm2 vmovdqu 352(%r10), %ymm3 vmovdqu 256(%rax), %ymm4 vmovdqu 288(%rax), %ymm5 vmovdqu 320(%rax), %ymm6 vmovdqu 352(%rax), %ymm7 vpaddw %ymm0, %ymm4, %ymm4 vpaddw %ymm1, %ymm5, %ymm5 vpaddw %ymm2, %ymm6, %ymm6 vpaddw %ymm3, %ymm7, %ymm7 vmovdqu 256(%rdx), %ymm0 vmovdqu 288(%rdx), %ymm1 vmovdqu 320(%rdx), %ymm2 vmovdqu 352(%rdx), %ymm3 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 256(%rdx) vmovdqu %ymm1, 288(%rdx) vmovdqu %ymm2, 320(%rdx) vmovdqu %ymm3, 352(%rdx) vmovdqu 384(%r10), %ymm0 vmovdqu 416(%r10), %ymm1 vmovdqu 448(%r10), %ymm2 vmovdqu 480(%r10), %ymm3 vmovdqu 384(%rax), %ymm4 vmovdqu 416(%rax), %ymm5 vmovdqu 448(%rax), %ymm6 vmovdqu 480(%rax), %ymm7 vpaddw %ymm0, %ymm4, %ymm4 vpaddw %ymm1, %ymm5, %ymm5 vpaddw %ymm2, %ymm6, %ymm6 vpaddw %ymm3, %ymm7, %ymm7 vmovdqu 384(%rdx), %ymm0 vmovdqu 416(%rdx), %ymm1 vmovdqu 448(%rdx), %ymm2 vmovdqu 480(%rdx), %ymm3 vpaddw %ymm4, %ymm0, %ymm4 vpaddw %ymm5, %ymm1, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpaddw %ymm6, %ymm2, %ymm6 vpaddw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 384(%rdx) vmovdqu %ymm1, 416(%rdx) vmovdqu %ymm2, 448(%rdx) vmovdqu %ymm3, 480(%rdx) vzeroupper addq $48, %rsp popq %rbx popq %r15 popq %r14 popq %r13 popq %r12 repz retq #ifndef __APPLE__ .size mlkem_encapsulate_avx2,.-mlkem_encapsulate_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_decapsulate_avx2 .type mlkem_decapsulate_avx2,@function .align 16 mlkem_decapsulate_avx2: #else .section __TEXT,__text .globl _mlkem_decapsulate_avx2 .p2align 4 _mlkem_decapsulate_avx2: #endif /* __APPLE__ */ vmovdqu mlkem_q(%rip), %ymm14 vmovdqu mlkem_v(%rip), %ymm15 movslq %r8d, %rax movq %rdx, %r9 L_mlkem_decapsulate_avx2_trans: # ntt leaq L_mlkem_avx2_zetas(%rip), %r10 vmovdqu (%r10), %ymm10 vmovdqu 32(%r10), %ymm12 vmovdqu 128(%r9), %ymm0 vmovdqu 160(%r9), %ymm1 vmovdqu 192(%r9), %ymm2 vmovdqu 224(%r9), %ymm3 vmovdqu 384(%r9), %ymm4 vmovdqu 416(%r9), %ymm5 vmovdqu 448(%r9), %ymm6 vmovdqu 480(%r9), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm0, 128(%r9) vmovdqu %ymm1, 160(%r9) vmovdqu %ymm2, 192(%r9) vmovdqu %ymm3, 224(%r9) vmovdqu %ymm4, 384(%r9) vmovdqu %ymm5, 416(%r9) vmovdqu %ymm6, 448(%r9) vmovdqu %ymm7, 480(%r9) vmovdqu (%r9), %ymm0 vmovdqu 32(%r9), %ymm1 vmovdqu 64(%r9), %ymm2 vmovdqu 96(%r9), %ymm3 vmovdqu 256(%r9), %ymm4 vmovdqu 288(%r9), %ymm5 vmovdqu 320(%r9), %ymm6 vmovdqu 352(%r9), %ymm7 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vmovdqu %ymm4, 256(%r9) vmovdqu %ymm5, 288(%r9) vmovdqu %ymm6, 320(%r9) vmovdqu %ymm7, 352(%r9) vmovdqu 128(%r9), %ymm4 vmovdqu 160(%r9), %ymm5 vmovdqu 192(%r9), %ymm6 vmovdqu 224(%r9), %ymm7 # 64: 0/3 vmovdqu 64(%r10), %ymm10 vmovdqu 96(%r10), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 0/3 vmovdqu 128(%r10), %ymm10 vmovdqu 160(%r10), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 0/3 vmovdqu 192(%r10), %ymm10 vmovdqu 224(%r10), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 0/3 vmovdqu 256(%r10), %ymm10 vmovdqu 288(%r10), %ymm12 vmovdqu 320(%r10), %ymm11 vmovdqu 352(%r10), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 0/3 vmovdqu 384(%r10), %ymm10 vmovdqu 416(%r10), %ymm12 vmovdqu 448(%r10), %ymm11 vmovdqu 480(%r10), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 0/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 512(%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 544(%r10), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 576(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 608(%r10), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 0/3 vmovdqu 640(%r10), %ymm10 vmovdqu 672(%r10), %ymm12 vmovdqu 704(%r10), %ymm11 vmovdqu 736(%r10), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 0/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 768(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 800(%r10), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 832(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 864(%r10), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 0/3 vmovdqu 896(%r10), %ymm10 vmovdqu 928(%r10), %ymm12 vmovdqu 960(%r10), %ymm11 vmovdqu 992(%r10), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 0/3 vmovdqu 1024(%r10), %ymm10 vmovdqu 1056(%r10), %ymm12 vmovdqu 1088(%r10), %ymm11 vmovdqu 1120(%r10), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 0/3 vmovdqu 1152(%r10), %ymm10 vmovdqu 1184(%r10), %ymm12 vmovdqu 1216(%r10), %ymm11 vmovdqu 1248(%r10), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, (%r9) vmovdqu %ymm9, 32(%r9) vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 64(%r9) vmovdqu %ymm9, 96(%r9) vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 128(%r9) vmovdqu %ymm9, 160(%r9) vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 192(%r9) vmovdqu %ymm9, 224(%r9) vmovdqu 256(%r9), %ymm0 vmovdqu 288(%r9), %ymm1 vmovdqu 320(%r9), %ymm2 vmovdqu 352(%r9), %ymm3 vmovdqu 384(%r9), %ymm4 vmovdqu 416(%r9), %ymm5 vmovdqu 448(%r9), %ymm6 vmovdqu 480(%r9), %ymm7 # 64: 1/3 vmovdqu 1280(%r10), %ymm10 vmovdqu 1312(%r10), %ymm12 vpmullw %ymm12, %ymm4, %ymm8 vpmullw %ymm12, %ymm5, %ymm9 vpmulhw %ymm10, %ymm4, %ymm4 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vpsubw %ymm8, %ymm0, %ymm4 vpsubw %ymm9, %ymm1, %ymm5 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm2, %ymm6 vpsubw %ymm9, %ymm3, %ymm7 vpaddw %ymm8, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 # 32: 1/3 vmovdqu 1344(%r10), %ymm10 vmovdqu 1376(%r10), %ymm12 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm2 vpsubw %ymm9, %ymm1, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 # 32: 1/3 vmovdqu 1408(%r10), %ymm10 vmovdqu 1440(%r10), %ymm12 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm6 vpsubw %ymm9, %ymm5, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 # 16: 1/3 vmovdqu 1472(%r10), %ymm10 vmovdqu 1504(%r10), %ymm12 vmovdqu 1536(%r10), %ymm11 vmovdqu 1568(%r10), %ymm13 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 16: 1/3 vmovdqu 1600(%r10), %ymm10 vmovdqu 1632(%r10), %ymm12 vmovdqu 1664(%r10), %ymm11 vmovdqu 1696(%r10), %ymm13 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 8: 1/3 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1728(%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm1 vmovdqu 1760(%r10), %ymm12 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vmovdqu 1792(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm3 vmovdqu 1824(%r10), %ymm13 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm0 vpsubw %ymm2, %ymm3, %ymm2 vpsubw %ymm0, %ymm8, %ymm1 vpsubw %ymm2, %ymm9, %ymm3 vpaddw %ymm0, %ymm8, %ymm8 vpaddw %ymm2, %ymm9, %ymm9 # 4: 1/3 vmovdqu 1856(%r10), %ymm10 vmovdqu 1888(%r10), %ymm12 vmovdqu 1920(%r10), %ymm11 vmovdqu 1952(%r10), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 8: 1/3 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1984(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm5 vmovdqu 2016(%r10), %ymm12 vperm2i128 $32, %ymm7, %ymm6, %ymm9 vmovdqu 2048(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm7 vmovdqu 2080(%r10), %ymm13 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm4 vpsubw %ymm6, %ymm7, %ymm6 vpsubw %ymm4, %ymm8, %ymm5 vpsubw %ymm6, %ymm9, %ymm7 vpaddw %ymm4, %ymm8, %ymm8 vpaddw %ymm6, %ymm9, %ymm9 # 4: 1/3 vmovdqu 2112(%r10), %ymm10 vmovdqu 2144(%r10), %ymm12 vmovdqu 2176(%r10), %ymm11 vmovdqu 2208(%r10), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 # 2: 1/3 vmovdqu 2240(%r10), %ymm10 vmovdqu 2272(%r10), %ymm12 vmovdqu 2304(%r10), %ymm11 vmovdqu 2336(%r10), %ymm13 vpsllq $32, %ymm1, %ymm8 vpsrlq $32, %ymm0, %ymm9 vpblendd $0xaa, %ymm8, %ymm0, %ymm0 vpblendd $0x55, %ymm9, %ymm1, %ymm1 vpsllq $32, %ymm3, %ymm8 vpsrlq $32, %ymm2, %ymm9 vpblendd $0xaa, %ymm8, %ymm2, %ymm2 vpblendd $0x55, %ymm9, %ymm3, %ymm3 vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm1, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vpsubw %ymm8, %ymm0, %ymm1 vpsubw %ymm9, %ymm2, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm2, %ymm2 # 2: 1/3 vmovdqu 2368(%r10), %ymm10 vmovdqu 2400(%r10), %ymm12 vmovdqu 2432(%r10), %ymm11 vmovdqu 2464(%r10), %ymm13 vpsllq $32, %ymm5, %ymm8 vpsrlq $32, %ymm4, %ymm9 vpblendd $0xaa, %ymm8, %ymm4, %ymm4 vpblendd $0x55, %ymm9, %ymm5, %ymm5 vpsllq $32, %ymm7, %ymm8 vpsrlq $32, %ymm6, %ymm9 vpblendd $0xaa, %ymm8, %ymm6, %ymm6 vpblendd $0x55, %ymm9, %ymm7, %ymm7 vpmullw %ymm12, %ymm5, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm5, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vpsubw %ymm8, %ymm4, %ymm5 vpsubw %ymm9, %ymm6, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm6, %ymm6 vpunpckldq %ymm1, %ymm0, %ymm8 vpunpckhdq %ymm1, %ymm0, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm0 vperm2i128 $49, %ymm9, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm2, %ymm8 vpunpckhdq %ymm3, %ymm2, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm2 vperm2i128 $49, %ymm9, %ymm8, %ymm3 vpunpckldq %ymm5, %ymm4, %ymm8 vpunpckhdq %ymm5, %ymm4, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm4 vperm2i128 $49, %ymm9, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm6, %ymm8 vpunpckhdq %ymm7, %ymm6, %ymm9 vperm2i128 $32, %ymm9, %ymm8, %ymm6 vperm2i128 $49, %ymm9, %ymm8, %ymm7 vpmulhw %ymm15, %ymm0, %ymm8 vpmulhw %ymm15, %ymm1, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm8 vpsubw %ymm9, %ymm1, %ymm9 vmovdqu %ymm8, 256(%r9) vmovdqu %ymm9, 288(%r9) vpmulhw %ymm15, %ymm2, %ymm8 vpmulhw %ymm15, %ymm3, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm8 vpsubw %ymm9, %ymm3, %ymm9 vmovdqu %ymm8, 320(%r9) vmovdqu %ymm9, 352(%r9) vpmulhw %ymm15, %ymm4, %ymm8 vpmulhw %ymm15, %ymm5, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm8 vpsubw %ymm9, %ymm5, %ymm9 vmovdqu %ymm8, 384(%r9) vmovdqu %ymm9, 416(%r9) vpmulhw %ymm15, %ymm6, %ymm8 vpmulhw %ymm15, %ymm7, %ymm9 vpsraw $10, %ymm8, %ymm8 vpsraw $10, %ymm9, %ymm9 vpmullw %ymm14, %ymm8, %ymm8 vpmullw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm8 vpsubw %ymm9, %ymm7, %ymm9 vmovdqu %ymm8, 448(%r9) vmovdqu %ymm9, 480(%r9) addq $0x200, %r9 subq $0x01, %rax jg L_mlkem_decapsulate_avx2_trans vmovdqu mlkem_qinv(%rip), %ymm12 # Pointwise acc mont movslq %r8d, %rax # Base mul mont leaq L_mlkem_avx2_zetas_basemul(%rip), %r10 vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdx), %ymm4 vmovdqu 32(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r10), %ymm10 vmovdqu 32(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdx), %ymm4 vmovdqu 96(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r10), %ymm10 vmovdqu 96(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdx), %ymm4 vmovdqu 160(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r10), %ymm10 vmovdqu 160(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdx), %ymm4 vmovdqu 224(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r10), %ymm10 vmovdqu 224(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdx), %ymm4 vmovdqu 288(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r10), %ymm10 vmovdqu 288(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdx), %ymm4 vmovdqu 352(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r10), %ymm10 vmovdqu 352(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r10), %ymm10 vmovdqu 416(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdx), %ymm4 vmovdqu 480(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r10), %ymm10 vmovdqu 480(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rdi addq $0x200, %rdx subq $2, %rax jz L_pointwise_acc_mont_end_decap L_pointwise_acc_mont_start_decap: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %r10 vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdx), %ymm4 vmovdqu 32(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r10), %ymm10 vmovdqu 32(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rsi), %ymm6 vmovdqu 32(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdx), %ymm4 vmovdqu 96(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r10), %ymm10 vmovdqu 96(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rsi), %ymm6 vmovdqu 96(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdx), %ymm4 vmovdqu 160(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r10), %ymm10 vmovdqu 160(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rsi), %ymm6 vmovdqu 160(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdx), %ymm4 vmovdqu 224(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r10), %ymm10 vmovdqu 224(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdx), %ymm4 vmovdqu 288(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r10), %ymm10 vmovdqu 288(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rsi), %ymm6 vmovdqu 288(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdx), %ymm4 vmovdqu 352(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r10), %ymm10 vmovdqu 352(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r10), %ymm10 vmovdqu 416(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rsi), %ymm6 vmovdqu 416(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdx), %ymm4 vmovdqu 480(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r10), %ymm10 vmovdqu 480(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rdi addq $0x200, %rdx subq $0x01, %rax jg L_pointwise_acc_mont_start_decap L_pointwise_acc_mont_end_decap: # Base mul mont add leaq L_mlkem_avx2_zetas_basemul(%rip), %r10 vmovdqu (%rdi), %ymm2 vmovdqu 32(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu (%rdx), %ymm4 vmovdqu 32(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu (%r10), %ymm10 vmovdqu 32(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu (%rsi), %ymm6 vmovdqu 32(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 64(%rdx), %ymm4 vmovdqu 96(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 64(%r10), %ymm10 vmovdqu 96(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 64(%rsi), %ymm6 vmovdqu 96(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm1, 96(%rsi) vmovdqu 128(%rdi), %ymm2 vmovdqu 160(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 128(%rdx), %ymm4 vmovdqu 160(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 128(%r10), %ymm10 vmovdqu 160(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 128(%rsi), %ymm6 vmovdqu 160(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu 192(%rdi), %ymm2 vmovdqu 224(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 192(%rdx), %ymm4 vmovdqu 224(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 192(%r10), %ymm10 vmovdqu 224(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 192(%rsi) vmovdqu %ymm1, 224(%rsi) vmovdqu 256(%rdi), %ymm2 vmovdqu 288(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 256(%rdx), %ymm4 vmovdqu 288(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 256(%r10), %ymm10 vmovdqu 288(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 256(%rsi), %ymm6 vmovdqu 288(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 320(%rdx), %ymm4 vmovdqu 352(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 320(%r10), %ymm10 vmovdqu 352(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 320(%rsi) vmovdqu %ymm1, 352(%rsi) vmovdqu 384(%rdi), %ymm2 vmovdqu 416(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 384(%rdx), %ymm4 vmovdqu 416(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 384(%r10), %ymm10 vmovdqu 416(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 384(%rsi), %ymm6 vmovdqu 416(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vpslld $16, %ymm3, %ymm6 vpsrld $16, %ymm2, %ymm7 vpblendw $0xaa, %ymm6, %ymm2, %ymm2 vpblendw $0x55, %ymm7, %ymm3, %ymm3 vmovdqu 448(%rdx), %ymm4 vmovdqu 480(%rdx), %ymm5 vpslld $16, %ymm5, %ymm6 vpsrld $16, %ymm4, %ymm7 vpblendw $0xaa, %ymm6, %ymm4, %ymm4 vpblendw $0x55, %ymm7, %ymm5, %ymm5 vmovdqu 448(%r10), %ymm10 vmovdqu 480(%r10), %ymm11 vpmullw %ymm5, %ymm3, %ymm0 vpmulhw %ymm5, %ymm3, %ymm6 vpmullw %ymm4, %ymm2, %ymm1 vpmulhw %ymm4, %ymm2, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm0, %ymm8 vpmullw %ymm12, %ymm1, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm0 vpsubw %ymm9, %ymm7, %ymm1 vpmullw %ymm11, %ymm0, %ymm6 vpmulhw %ymm10, %ymm0, %ymm7 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm6, %ymm7, %ymm0 vpaddw %ymm1, %ymm0, %ymm0 vpmullw %ymm5, %ymm2, %ymm1 vpmulhw %ymm5, %ymm2, %ymm6 vpmullw %ymm4, %ymm3, %ymm2 vpmulhw %ymm4, %ymm3, %ymm7 # Mont Reduce vpmullw %ymm12, %ymm1, %ymm8 vpmullw %ymm12, %ymm2, %ymm9 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm1 vpsubw %ymm9, %ymm7, %ymm2 vpaddw %ymm2, %ymm1, %ymm1 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 vpaddw %ymm6, %ymm0, %ymm0 vpaddw %ymm7, %ymm1, %ymm1 vpslld $16, %ymm1, %ymm6 vpsrld $16, %ymm0, %ymm7 vpblendw $0xaa, %ymm6, %ymm0, %ymm0 vpblendw $0x55, %ymm7, %ymm1, %ymm1 vmovdqu %ymm0, 448(%rsi) vmovdqu %ymm1, 480(%rsi) addq $0x200, %rdi # invntt leaq L_mlkem_avx2_zetas_inv(%rip), %r10 vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 128(%rsi), %ymm4 vmovdqu 160(%rsi), %ymm5 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 # 2: 1/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu (%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 32(%r10), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 64(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 96(%r10), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 1/2 vmovdqu 128(%r10), %ymm10 vmovdqu 160(%r10), %ymm12 vmovdqu 192(%r10), %ymm11 vmovdqu 224(%r10), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 1/2 vmovdqu 256(%r10), %ymm10 vmovdqu 288(%r10), %ymm12 vmovdqu 320(%r10), %ymm11 vmovdqu 352(%r10), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 1/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 384(%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 416(%r10), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 448(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 480(%r10), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 1/2 vmovdqu 512(%r10), %ymm10 vmovdqu 544(%r10), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 1/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 576(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 608(%r10), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 640(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 672(%r10), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 1/2 vmovdqu 704(%r10), %ymm10 vmovdqu 736(%r10), %ymm12 vmovdqu 768(%r10), %ymm11 vmovdqu 800(%r10), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 1/2 vmovdqu 832(%r10), %ymm10 vmovdqu 864(%r10), %ymm12 vmovdqu 896(%r10), %ymm11 vmovdqu 928(%r10), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 1/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 960(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 992(%r10), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 1024(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 1056(%r10), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 1/2 vmovdqu 1088(%r10), %ymm10 vmovdqu 1120(%r10), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 1/2 vmovdqu 1152(%r10), %ymm10 vmovdqu 1184(%r10), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu %ymm4, 128(%rsi) vmovdqu %ymm5, 160(%rsi) vmovdqu %ymm6, 192(%rsi) vmovdqu %ymm7, 224(%rsi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vmovdqu 320(%rsi), %ymm2 vmovdqu 352(%rsi), %ymm3 vmovdqu 384(%rsi), %ymm4 vmovdqu 416(%rsi), %ymm5 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 # 2: 2/2 vperm2i128 $32, %ymm1, %ymm0, %ymm8 vmovdqu 1216(%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm0, %ymm9 vmovdqu 1248(%r10), %ymm12 vpsllq $32, %ymm9, %ymm0 vpsrlq $32, %ymm8, %ymm1 vpblendd $0xaa, %ymm0, %ymm8, %ymm0 vpblendd $0x55, %ymm1, %ymm9, %ymm1 vperm2i128 $32, %ymm3, %ymm2, %ymm8 vmovdqu 1280(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm2, %ymm9 vmovdqu 1312(%r10), %ymm13 vpsllq $32, %ymm9, %ymm2 vpsrlq $32, %ymm8, %ymm3 vpblendd $0xaa, %ymm2, %ymm8, %ymm2 vpblendd $0x55, %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 4: 2/2 vmovdqu 1344(%r10), %ymm10 vmovdqu 1376(%r10), %ymm12 vmovdqu 1408(%r10), %ymm11 vmovdqu 1440(%r10), %ymm13 vpunpckldq %ymm1, %ymm8, %ymm0 vpunpckhdq %ymm1, %ymm8, %ymm1 vpunpckldq %ymm3, %ymm9, %ymm2 vpunpckhdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 8: 2/2 vmovdqu 1472(%r10), %ymm10 vmovdqu 1504(%r10), %ymm12 vmovdqu 1536(%r10), %ymm11 vmovdqu 1568(%r10), %ymm13 vpunpcklqdq %ymm1, %ymm8, %ymm0 vpunpckhqdq %ymm1, %ymm8, %ymm1 vpunpcklqdq %ymm3, %ymm9, %ymm2 vpunpckhqdq %ymm3, %ymm9, %ymm3 vpaddw %ymm1, %ymm0, %ymm8 vpaddw %ymm3, %ymm2, %ymm9 vpsubw %ymm1, %ymm0, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm2 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm2, %ymm2 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm8, %ymm8 vpsubw %ymm2, %ymm9, %ymm9 vpmullw %ymm12, %ymm1, %ymm0 vpmullw %ymm13, %ymm3, %ymm2 vpmulhw %ymm10, %ymm1, %ymm1 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm0, %ymm0 vpmulhw %ymm14, %ymm2, %ymm2 vpsubw %ymm0, %ymm1, %ymm1 vpsubw %ymm2, %ymm3, %ymm3 # 16: 2/2 vperm2i128 $32, %ymm1, %ymm8, %ymm0 vmovdqu 1600(%r10), %ymm10 vperm2i128 $49, %ymm1, %ymm8, %ymm1 vmovdqu 1632(%r10), %ymm12 vperm2i128 $32, %ymm3, %ymm9, %ymm2 vmovdqu 1664(%r10), %ymm11 vperm2i128 $49, %ymm3, %ymm9, %ymm3 vmovdqu 1696(%r10), %ymm13 vpsubw %ymm1, %ymm0, %ymm8 vpsubw %ymm3, %ymm2, %ymm9 vpaddw %ymm1, %ymm0, %ymm0 vpaddw %ymm3, %ymm2, %ymm2 vpmullw %ymm12, %ymm8, %ymm1 vpmullw %ymm13, %ymm9, %ymm3 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm1, %ymm1 vpmulhw %ymm14, %ymm3, %ymm3 vpsubw %ymm1, %ymm8, %ymm1 vpsubw %ymm3, %ymm9, %ymm3 # 32: 2/2 vmovdqu 1728(%r10), %ymm10 vmovdqu 1760(%r10), %ymm12 vpaddw %ymm2, %ymm0, %ymm8 vpaddw %ymm3, %ymm1, %ymm9 vpsubw %ymm2, %ymm0, %ymm2 vpsubw %ymm3, %ymm1, %ymm3 vpmulhw %ymm15, %ymm8, %ymm0 vpmulhw %ymm15, %ymm9, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm8, %ymm0 vpsubw %ymm1, %ymm9, %ymm1 vpmullw %ymm12, %ymm2, %ymm8 vpmullw %ymm12, %ymm3, %ymm9 vpmulhw %ymm10, %ymm2, %ymm2 vpmulhw %ymm10, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 # 2: 2/2 vperm2i128 $32, %ymm5, %ymm4, %ymm8 vmovdqu 1792(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm4, %ymm9 vmovdqu 1824(%r10), %ymm12 vpsllq $32, %ymm9, %ymm4 vpsrlq $32, %ymm8, %ymm5 vpblendd $0xaa, %ymm4, %ymm8, %ymm4 vpblendd $0x55, %ymm5, %ymm9, %ymm5 vperm2i128 $32, %ymm7, %ymm6, %ymm8 vmovdqu 1856(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm6, %ymm9 vmovdqu 1888(%r10), %ymm13 vpsllq $32, %ymm9, %ymm6 vpsrlq $32, %ymm8, %ymm7 vpblendd $0xaa, %ymm6, %ymm8, %ymm6 vpblendd $0x55, %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 4: 2/2 vmovdqu 1920(%r10), %ymm10 vmovdqu 1952(%r10), %ymm12 vmovdqu 1984(%r10), %ymm11 vmovdqu 2016(%r10), %ymm13 vpunpckldq %ymm5, %ymm8, %ymm4 vpunpckhdq %ymm5, %ymm8, %ymm5 vpunpckldq %ymm7, %ymm9, %ymm6 vpunpckhdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 8: 2/2 vmovdqu 2048(%r10), %ymm10 vmovdqu 2080(%r10), %ymm12 vmovdqu 2112(%r10), %ymm11 vmovdqu 2144(%r10), %ymm13 vpunpcklqdq %ymm5, %ymm8, %ymm4 vpunpckhqdq %ymm5, %ymm8, %ymm5 vpunpcklqdq %ymm7, %ymm9, %ymm6 vpunpckhqdq %ymm7, %ymm9, %ymm7 vpaddw %ymm5, %ymm4, %ymm8 vpaddw %ymm7, %ymm6, %ymm9 vpsubw %ymm5, %ymm4, %ymm5 vpsubw %ymm7, %ymm6, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm6 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm6, %ymm6 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm8, %ymm8 vpsubw %ymm6, %ymm9, %ymm9 vpmullw %ymm12, %ymm5, %ymm4 vpmullw %ymm13, %ymm7, %ymm6 vpmulhw %ymm10, %ymm5, %ymm5 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm6, %ymm6 vpsubw %ymm4, %ymm5, %ymm5 vpsubw %ymm6, %ymm7, %ymm7 # 16: 2/2 vperm2i128 $32, %ymm5, %ymm8, %ymm4 vmovdqu 2176(%r10), %ymm10 vperm2i128 $49, %ymm5, %ymm8, %ymm5 vmovdqu 2208(%r10), %ymm12 vperm2i128 $32, %ymm7, %ymm9, %ymm6 vmovdqu 2240(%r10), %ymm11 vperm2i128 $49, %ymm7, %ymm9, %ymm7 vmovdqu 2272(%r10), %ymm13 vpsubw %ymm5, %ymm4, %ymm8 vpsubw %ymm7, %ymm6, %ymm9 vpaddw %ymm5, %ymm4, %ymm4 vpaddw %ymm7, %ymm6, %ymm6 vpmullw %ymm12, %ymm8, %ymm5 vpmullw %ymm13, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm11, %ymm9, %ymm9 vpmulhw %ymm14, %ymm5, %ymm5 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm5, %ymm8, %ymm5 vpsubw %ymm7, %ymm9, %ymm7 # 32: 2/2 vmovdqu 2304(%r10), %ymm10 vmovdqu 2336(%r10), %ymm12 vpaddw %ymm6, %ymm4, %ymm8 vpaddw %ymm7, %ymm5, %ymm9 vpsubw %ymm6, %ymm4, %ymm6 vpsubw %ymm7, %ymm5, %ymm7 vpmulhw %ymm15, %ymm8, %ymm4 vpmulhw %ymm15, %ymm9, %ymm5 vpsraw $10, %ymm4, %ymm4 vpsraw $10, %ymm5, %ymm5 vpmullw %ymm14, %ymm4, %ymm4 vpmullw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 # 64: 2/2 vmovdqu 2368(%r10), %ymm10 vmovdqu 2400(%r10), %ymm12 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpsubw %ymm6, %ymm2, %ymm8 vpsubw %ymm7, %ymm3, %ymm9 vpaddw %ymm6, %ymm2, %ymm2 vpaddw %ymm7, %ymm3, %ymm3 vpmullw %ymm12, %ymm8, %ymm6 vpmullw %ymm12, %ymm9, %ymm7 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm6, %ymm6 vpmulhw %ymm14, %ymm7, %ymm7 vpsubw %ymm6, %ymm8, %ymm6 vpsubw %ymm7, %ymm9, %ymm7 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu %ymm2, 320(%rsi) vmovdqu %ymm3, 352(%rsi) # 128 vmovdqu 2432(%r10), %ymm10 vmovdqu 2464(%r10), %ymm12 vmovdqu 2496(%r10), %ymm11 vmovdqu 2528(%r10), %ymm13 vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm1 vmovdqu 192(%rsi), %ymm2 vmovdqu 224(%rsi), %ymm3 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu %ymm2, 192(%rsi) vmovdqu %ymm3, 224(%rsi) vmovdqu %ymm4, 384(%rsi) vmovdqu %ymm5, 416(%rsi) vmovdqu %ymm6, 448(%rsi) vmovdqu %ymm7, 480(%rsi) vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 256(%rsi), %ymm4 vmovdqu 288(%rsi), %ymm5 vmovdqu 320(%rsi), %ymm6 vmovdqu 352(%rsi), %ymm7 vpsubw %ymm4, %ymm0, %ymm8 vpsubw %ymm5, %ymm1, %ymm9 vpaddw %ymm4, %ymm0, %ymm0 vpaddw %ymm5, %ymm1, %ymm1 vpmullw %ymm12, %ymm8, %ymm4 vpmullw %ymm12, %ymm9, %ymm5 vpmulhw %ymm10, %ymm8, %ymm8 vpmulhw %ymm10, %ymm9, %ymm9 vpmulhw %ymm14, %ymm4, %ymm4 vpmulhw %ymm14, %ymm5, %ymm5 vpsubw %ymm4, %ymm8, %ymm4 vpsubw %ymm5, %ymm9, %ymm5 vpaddw %ymm6, %ymm2, %ymm8 vpaddw %ymm7, %ymm3, %ymm9 vpsubw %ymm6, %ymm2, %ymm6 vpsubw %ymm7, %ymm3, %ymm7 vpmulhw %ymm15, %ymm8, %ymm2 vpmulhw %ymm15, %ymm9, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm8, %ymm2 vpsubw %ymm3, %ymm9, %ymm3 vpmullw %ymm12, %ymm6, %ymm8 vpmullw %ymm12, %ymm7, %ymm9 vpmulhw %ymm10, %ymm6, %ymm6 vpmulhw %ymm10, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vpmullw %ymm13, %ymm0, %ymm8 vpmullw %ymm13, %ymm1, %ymm9 vpmulhw %ymm11, %ymm0, %ymm0 vpmulhw %ymm11, %ymm1, %ymm1 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm0, %ymm0 vpsubw %ymm9, %ymm1, %ymm1 vpmullw %ymm13, %ymm2, %ymm8 vpmullw %ymm13, %ymm3, %ymm9 vpmulhw %ymm11, %ymm2, %ymm2 vpmulhw %ymm11, %ymm3, %ymm3 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm2, %ymm2 vpsubw %ymm9, %ymm3, %ymm3 vpmullw %ymm13, %ymm4, %ymm8 vpmullw %ymm13, %ymm5, %ymm9 vpmulhw %ymm11, %ymm4, %ymm4 vpmulhw %ymm11, %ymm5, %ymm5 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm4, %ymm4 vpsubw %ymm9, %ymm5, %ymm5 vpmullw %ymm13, %ymm6, %ymm8 vpmullw %ymm13, %ymm7, %ymm9 vpmulhw %ymm11, %ymm6, %ymm6 vpmulhw %ymm11, %ymm7, %ymm7 vpmulhw %ymm14, %ymm8, %ymm8 vpmulhw %ymm14, %ymm9, %ymm9 vpsubw %ymm8, %ymm6, %ymm6 vpsubw %ymm9, %ymm7, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu %ymm4, 256(%rsi) vmovdqu %ymm5, 288(%rsi) vmovdqu %ymm6, 320(%rsi) vmovdqu %ymm7, 352(%rsi) # Sub Errors vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu (%rcx), %ymm4 vmovdqu 32(%rcx), %ymm5 vmovdqu 64(%rcx), %ymm6 vmovdqu 96(%rcx), %ymm7 vpsubw %ymm0, %ymm4, %ymm4 vpsubw %ymm1, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpsubw %ymm2, %ymm6, %ymm6 vpsubw %ymm3, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, (%rsi) vmovdqu %ymm1, 32(%rsi) vmovdqu %ymm2, 64(%rsi) vmovdqu %ymm3, 96(%rsi) vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm1 vmovdqu 192(%rsi), %ymm2 vmovdqu 224(%rsi), %ymm3 vmovdqu 128(%rcx), %ymm4 vmovdqu 160(%rcx), %ymm5 vmovdqu 192(%rcx), %ymm6 vmovdqu 224(%rcx), %ymm7 vpsubw %ymm0, %ymm4, %ymm4 vpsubw %ymm1, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpsubw %ymm2, %ymm6, %ymm6 vpsubw %ymm3, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 128(%rsi) vmovdqu %ymm1, 160(%rsi) vmovdqu %ymm2, 192(%rsi) vmovdqu %ymm3, 224(%rsi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vmovdqu 320(%rsi), %ymm2 vmovdqu 352(%rsi), %ymm3 vmovdqu 256(%rcx), %ymm4 vmovdqu 288(%rcx), %ymm5 vmovdqu 320(%rcx), %ymm6 vmovdqu 352(%rcx), %ymm7 vpsubw %ymm0, %ymm4, %ymm4 vpsubw %ymm1, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpsubw %ymm2, %ymm6, %ymm6 vpsubw %ymm3, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 256(%rsi) vmovdqu %ymm1, 288(%rsi) vmovdqu %ymm2, 320(%rsi) vmovdqu %ymm3, 352(%rsi) vmovdqu 384(%rsi), %ymm0 vmovdqu 416(%rsi), %ymm1 vmovdqu 448(%rsi), %ymm2 vmovdqu 480(%rsi), %ymm3 vmovdqu 384(%rcx), %ymm4 vmovdqu 416(%rcx), %ymm5 vmovdqu 448(%rcx), %ymm6 vmovdqu 480(%rcx), %ymm7 vpsubw %ymm0, %ymm4, %ymm4 vpsubw %ymm1, %ymm5, %ymm5 vpmulhw %ymm15, %ymm4, %ymm0 vpmulhw %ymm15, %ymm5, %ymm1 vpsraw $10, %ymm0, %ymm0 vpsraw $10, %ymm1, %ymm1 vpmullw %ymm14, %ymm0, %ymm0 vpmullw %ymm14, %ymm1, %ymm1 vpsubw %ymm0, %ymm4, %ymm0 vpsubw %ymm1, %ymm5, %ymm1 vpsubw %ymm2, %ymm6, %ymm6 vpsubw %ymm3, %ymm7, %ymm7 vpmulhw %ymm15, %ymm6, %ymm2 vpmulhw %ymm15, %ymm7, %ymm3 vpsraw $10, %ymm2, %ymm2 vpsraw $10, %ymm3, %ymm3 vpmullw %ymm14, %ymm2, %ymm2 vpmullw %ymm14, %ymm3, %ymm3 vpsubw %ymm2, %ymm6, %ymm2 vpsubw %ymm3, %ymm7, %ymm3 vmovdqu %ymm0, 384(%rsi) vmovdqu %ymm1, 416(%rsi) vmovdqu %ymm2, 448(%rsi) vmovdqu %ymm3, 480(%rsi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_decapsulate_avx2,.-mlkem_decapsulate_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_csubq_avx2 .type mlkem_csubq_avx2,@function .align 16 mlkem_csubq_avx2: #else .section __TEXT,__text .globl _mlkem_csubq_avx2 .p2align 4 _mlkem_csubq_avx2: #endif /* __APPLE__ */ vmovdqu mlkem_q(%rip), %ymm12 vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vmovdqu 192(%rdi), %ymm6 vmovdqu 224(%rdi), %ymm7 vpsubw %ymm12, %ymm0, %ymm8 vpsubw %ymm12, %ymm1, %ymm9 vpsubw %ymm12, %ymm2, %ymm10 vpsubw %ymm12, %ymm3, %ymm11 vpsraw $15, %ymm8, %ymm0 vpsraw $15, %ymm9, %ymm1 vpsraw $15, %ymm10, %ymm2 vpsraw $15, %ymm11, %ymm3 vpand %ymm12, %ymm0, %ymm0 vpand %ymm12, %ymm1, %ymm1 vpand %ymm12, %ymm2, %ymm2 vpand %ymm12, %ymm3, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm10, %ymm2, %ymm2 vpaddw %ymm11, %ymm3, %ymm3 vpsubw %ymm12, %ymm4, %ymm8 vpsubw %ymm12, %ymm5, %ymm9 vpsubw %ymm12, %ymm6, %ymm10 vpsubw %ymm12, %ymm7, %ymm11 vpsraw $15, %ymm8, %ymm4 vpsraw $15, %ymm9, %ymm5 vpsraw $15, %ymm10, %ymm6 vpsraw $15, %ymm11, %ymm7 vpand %ymm12, %ymm4, %ymm4 vpand %ymm12, %ymm5, %ymm5 vpand %ymm12, %ymm6, %ymm6 vpand %ymm12, %ymm7, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpaddw %ymm10, %ymm6, %ymm6 vpaddw %ymm11, %ymm7, %ymm7 vmovdqu %ymm0, (%rdi) vmovdqu %ymm1, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vmovdqu %ymm4, 128(%rdi) vmovdqu %ymm5, 160(%rdi) vmovdqu %ymm6, 192(%rdi) vmovdqu %ymm7, 224(%rdi) vmovdqu 256(%rdi), %ymm0 vmovdqu 288(%rdi), %ymm1 vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vmovdqu 448(%rdi), %ymm6 vmovdqu 480(%rdi), %ymm7 vpsubw %ymm12, %ymm0, %ymm8 vpsubw %ymm12, %ymm1, %ymm9 vpsubw %ymm12, %ymm2, %ymm10 vpsubw %ymm12, %ymm3, %ymm11 vpsraw $15, %ymm8, %ymm0 vpsraw $15, %ymm9, %ymm1 vpsraw $15, %ymm10, %ymm2 vpsraw $15, %ymm11, %ymm3 vpand %ymm12, %ymm0, %ymm0 vpand %ymm12, %ymm1, %ymm1 vpand %ymm12, %ymm2, %ymm2 vpand %ymm12, %ymm3, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm10, %ymm2, %ymm2 vpaddw %ymm11, %ymm3, %ymm3 vpsubw %ymm12, %ymm4, %ymm8 vpsubw %ymm12, %ymm5, %ymm9 vpsubw %ymm12, %ymm6, %ymm10 vpsubw %ymm12, %ymm7, %ymm11 vpsraw $15, %ymm8, %ymm4 vpsraw $15, %ymm9, %ymm5 vpsraw $15, %ymm10, %ymm6 vpsraw $15, %ymm11, %ymm7 vpand %ymm12, %ymm4, %ymm4 vpand %ymm12, %ymm5, %ymm5 vpand %ymm12, %ymm6, %ymm6 vpand %ymm12, %ymm7, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpaddw %ymm10, %ymm6, %ymm6 vpaddw %ymm11, %ymm7, %ymm7 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm1, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vmovdqu %ymm4, 384(%rdi) vmovdqu %ymm5, 416(%rdi) vmovdqu %ymm6, 448(%rdi) vmovdqu %ymm7, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_csubq_avx2,.-mlkem_csubq_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_rej_idx: .quad 0xffffffffffffffff,0xffffffffffffff00 .quad 0xffffffffffffff02,0xffffffffffff0200 .quad 0xffffffffffffff04,0xffffffffffff0400 .quad 0xffffffffffff0402,0xffffffffff040200 .quad 0xffffffffffffff06,0xffffffffffff0600 .quad 0xffffffffffff0602,0xffffffffff060200 .quad 0xffffffffffff0604,0xffffffffff060400 .quad 0xffffffffff060402,0xffffffff06040200 .quad 0xffffffffffffff08,0xffffffffffff0800 .quad 0xffffffffffff0802,0xffffffffff080200 .quad 0xffffffffffff0804,0xffffffffff080400 .quad 0xffffffffff080402,0xffffffff08040200 .quad 0xffffffffffff0806,0xffffffffff080600 .quad 0xffffffffff080602,0xffffffff08060200 .quad 0xffffffffff080604,0xffffffff08060400 .quad 0xffffffff08060402,0xffffff0806040200 .quad 0xffffffffffffff0a,0xffffffffffff0a00 .quad 0xffffffffffff0a02,0xffffffffff0a0200 .quad 0xffffffffffff0a04,0xffffffffff0a0400 .quad 0xffffffffff0a0402,0xffffffff0a040200 .quad 0xffffffffffff0a06,0xffffffffff0a0600 .quad 0xffffffffff0a0602,0xffffffff0a060200 .quad 0xffffffffff0a0604,0xffffffff0a060400 .quad 0xffffffff0a060402,0xffffff0a06040200 .quad 0xffffffffffff0a08,0xffffffffff0a0800 .quad 0xffffffffff0a0802,0xffffffff0a080200 .quad 0xffffffffff0a0804,0xffffffff0a080400 .quad 0xffffffff0a080402,0xffffff0a08040200 .quad 0xffffffffff0a0806,0xffffffff0a080600 .quad 0xffffffff0a080602,0xffffff0a08060200 .quad 0xffffffff0a080604,0xffffff0a08060400 .quad 0xffffff0a08060402,0xffff0a0806040200 .quad 0xffffffffffffff0c,0xffffffffffff0c00 .quad 0xffffffffffff0c02,0xffffffffff0c0200 .quad 0xffffffffffff0c04,0xffffffffff0c0400 .quad 0xffffffffff0c0402,0xffffffff0c040200 .quad 0xffffffffffff0c06,0xffffffffff0c0600 .quad 0xffffffffff0c0602,0xffffffff0c060200 .quad 0xffffffffff0c0604,0xffffffff0c060400 .quad 0xffffffff0c060402,0xffffff0c06040200 .quad 0xffffffffffff0c08,0xffffffffff0c0800 .quad 0xffffffffff0c0802,0xffffffff0c080200 .quad 0xffffffffff0c0804,0xffffffff0c080400 .quad 0xffffffff0c080402,0xffffff0c08040200 .quad 0xffffffffff0c0806,0xffffffff0c080600 .quad 0xffffffff0c080602,0xffffff0c08060200 .quad 0xffffffff0c080604,0xffffff0c08060400 .quad 0xffffff0c08060402,0xffff0c0806040200 .quad 0xffffffffffff0c0a,0xffffffffff0c0a00 .quad 0xffffffffff0c0a02,0xffffffff0c0a0200 .quad 0xffffffffff0c0a04,0xffffffff0c0a0400 .quad 0xffffffff0c0a0402,0xffffff0c0a040200 .quad 0xffffffffff0c0a06,0xffffffff0c0a0600 .quad 0xffffffff0c0a0602,0xffffff0c0a060200 .quad 0xffffffff0c0a0604,0xffffff0c0a060400 .quad 0xffffff0c0a060402,0xffff0c0a06040200 .quad 0xffffffffff0c0a08,0xffffffff0c0a0800 .quad 0xffffffff0c0a0802,0xffffff0c0a080200 .quad 0xffffffff0c0a0804,0xffffff0c0a080400 .quad 0xffffff0c0a080402,0xffff0c0a08040200 .quad 0xffffffff0c0a0806,0xffffff0c0a080600 .quad 0xffffff0c0a080602,0xffff0c0a08060200 .quad 0xffffff0c0a080604,0xffff0c0a08060400 .quad 0xffff0c0a08060402,0xff0c0a0806040200 .quad 0xffffffffffffff0e,0xffffffffffff0e00 .quad 0xffffffffffff0e02,0xffffffffff0e0200 .quad 0xffffffffffff0e04,0xffffffffff0e0400 .quad 0xffffffffff0e0402,0xffffffff0e040200 .quad 0xffffffffffff0e06,0xffffffffff0e0600 .quad 0xffffffffff0e0602,0xffffffff0e060200 .quad 0xffffffffff0e0604,0xffffffff0e060400 .quad 0xffffffff0e060402,0xffffff0e06040200 .quad 0xffffffffffff0e08,0xffffffffff0e0800 .quad 0xffffffffff0e0802,0xffffffff0e080200 .quad 0xffffffffff0e0804,0xffffffff0e080400 .quad 0xffffffff0e080402,0xffffff0e08040200 .quad 0xffffffffff0e0806,0xffffffff0e080600 .quad 0xffffffff0e080602,0xffffff0e08060200 .quad 0xffffffff0e080604,0xffffff0e08060400 .quad 0xffffff0e08060402,0xffff0e0806040200 .quad 0xffffffffffff0e0a,0xffffffffff0e0a00 .quad 0xffffffffff0e0a02,0xffffffff0e0a0200 .quad 0xffffffffff0e0a04,0xffffffff0e0a0400 .quad 0xffffffff0e0a0402,0xffffff0e0a040200 .quad 0xffffffffff0e0a06,0xffffffff0e0a0600 .quad 0xffffffff0e0a0602,0xffffff0e0a060200 .quad 0xffffffff0e0a0604,0xffffff0e0a060400 .quad 0xffffff0e0a060402,0xffff0e0a06040200 .quad 0xffffffffff0e0a08,0xffffffff0e0a0800 .quad 0xffffffff0e0a0802,0xffffff0e0a080200 .quad 0xffffffff0e0a0804,0xffffff0e0a080400 .quad 0xffffff0e0a080402,0xffff0e0a08040200 .quad 0xffffffff0e0a0806,0xffffff0e0a080600 .quad 0xffffff0e0a080602,0xffff0e0a08060200 .quad 0xffffff0e0a080604,0xffff0e0a08060400 .quad 0xffff0e0a08060402,0xff0e0a0806040200 .quad 0xffffffffffff0e0c,0xffffffffff0e0c00 .quad 0xffffffffff0e0c02,0xffffffff0e0c0200 .quad 0xffffffffff0e0c04,0xffffffff0e0c0400 .quad 0xffffffff0e0c0402,0xffffff0e0c040200 .quad 0xffffffffff0e0c06,0xffffffff0e0c0600 .quad 0xffffffff0e0c0602,0xffffff0e0c060200 .quad 0xffffffff0e0c0604,0xffffff0e0c060400 .quad 0xffffff0e0c060402,0xffff0e0c06040200 .quad 0xffffffffff0e0c08,0xffffffff0e0c0800 .quad 0xffffffff0e0c0802,0xffffff0e0c080200 .quad 0xffffffff0e0c0804,0xffffff0e0c080400 .quad 0xffffff0e0c080402,0xffff0e0c08040200 .quad 0xffffffff0e0c0806,0xffffff0e0c080600 .quad 0xffffff0e0c080602,0xffff0e0c08060200 .quad 0xffffff0e0c080604,0xffff0e0c08060400 .quad 0xffff0e0c08060402,0xff0e0c0806040200 .quad 0xffffffffff0e0c0a,0xffffffff0e0c0a00 .quad 0xffffffff0e0c0a02,0xffffff0e0c0a0200 .quad 0xffffffff0e0c0a04,0xffffff0e0c0a0400 .quad 0xffffff0e0c0a0402,0xffff0e0c0a040200 .quad 0xffffffff0e0c0a06,0xffffff0e0c0a0600 .quad 0xffffff0e0c0a0602,0xffff0e0c0a060200 .quad 0xffffff0e0c0a0604,0xffff0e0c0a060400 .quad 0xffff0e0c0a060402,0xff0e0c0a06040200 .quad 0xffffffff0e0c0a08,0xffffff0e0c0a0800 .quad 0xffffff0e0c0a0802,0xffff0e0c0a080200 .quad 0xffffff0e0c0a0804,0xffff0e0c0a080400 .quad 0xffff0e0c0a080402,0xff0e0c0a08040200 .quad 0xffffff0e0c0a0806,0xffff0e0c0a080600 .quad 0xffff0e0c0a080602,0xff0e0c0a08060200 .quad 0xffff0e0c0a080604,0xff0e0c0a08060400 .quad 0xff0e0c0a08060402,0x0e0c0a0806040200 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_rej_q: .quad 0x0d010d010d010d01,0x0d010d010d010d01 .quad 0x0d010d010d010d01,0x0d010d010d010d01 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_rej_ones: .quad 0x0101010101010101,0x0101010101010101 .quad 0x0101010101010101,0x0101010101010101 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_rej_mask: .quad 0x0fff0fff0fff0fff,0x0fff0fff0fff0fff .quad 0x0fff0fff0fff0fff,0x0fff0fff0fff0fff #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_rej_shuffle: .quad 0x0504040302010100,0x0b0a0a0908070706 .quad 0x0908080706050504,0x0f0e0e0d0c0b0b0a #ifndef __APPLE__ .text .globl mlkem_rej_uniform_n_avx2 .type mlkem_rej_uniform_n_avx2,@function .align 16 mlkem_rej_uniform_n_avx2: #else .section __TEXT,__text .globl _mlkem_rej_uniform_n_avx2 .p2align 4 _mlkem_rej_uniform_n_avx2: #endif /* __APPLE__ */ pushq %rbx pushq %r12 pushq %r13 pushq %r14 pushq %r15 pushq %rbp movq %rcx, %r8 movl %esi, %eax vmovdqu L_mlkem_rej_q(%rip), %ymm6 vmovdqu L_mlkem_rej_ones(%rip), %ymm7 vmovdqu L_mlkem_rej_mask(%rip), %ymm8 vmovdqu L_mlkem_rej_shuffle(%rip), %ymm9 leaq L_mlkem_rej_idx(%rip), %r9 movq $0x1111111111111111, %r14 movq $0xe0c0a0806040200, %rbp movq $0x101010101010101, %r13 vpermq $0x94, (%rdx), %ymm0 vpermq $0x94, 24(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 48(%rdx), %ymm0 vpermq $0x94, 72(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 96(%rdx), %ymm0 vpermq $0x94, 120(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 144(%rdx), %ymm0 vpermq $0x94, 168(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 192(%rdx), %ymm0 vpermq $0x94, 216(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 240(%rdx), %ymm0 vpermq $0x94, 264(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi vpermq $0x94, 288(%rdx), %ymm0 vpermq $0x94, 312(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi addq $0x150, %rdx subl $0x150, %r8d L_mlkem_rej_uniform_n_avx2_start_256: vpermq $0x94, (%rdx), %ymm0 vpermq $0x94, 24(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi addq $48, %rdx subl $48, %r8d cmpl $48, %r8d jl L_mlkem_rej_uniform_n_avx2_done_256 cmpl $32, %esi jge L_mlkem_rej_uniform_n_avx2_start_256 L_mlkem_rej_uniform_n_avx2_done_256: cmpl $8, %esi jl L_mlkem_rej_uniform_n_avx2_done_128 cmpl $12, %r8d jl L_mlkem_rej_uniform_n_avx2_done_128 L_mlkem_rej_uniform_n_avx2_start_128: vmovdqu (%rdx), %xmm0 vpshufb %xmm9, %xmm0, %xmm0 vpsrlw $4, %xmm0, %xmm2 vpblendw $0xaa, %xmm2, %xmm0, %xmm0 vpand %xmm8, %xmm0, %xmm0 vpcmpgtw %xmm0, %xmm6, %xmm2 vpmovmskb %xmm2, %rbx movq $0x5555, %r10 pextl %r10d, %ebx, %ebx movq (%r9,%rbx,8), %xmm3 vpaddb %xmm7, %xmm3, %xmm4 vpunpcklbw %xmm4, %xmm3, %xmm3 vpshufb %xmm3, %xmm0, %xmm0 vmovdqu %xmm0, (%rdi) popcntl %ebx, %ecx leaq (%rdi,%rcx,2), %rdi subl %ecx, %esi addq $12, %rdx subl $12, %r8d cmpl $12, %r8d jl L_mlkem_rej_uniform_n_avx2_done_128 cmpl $8, %esi jge L_mlkem_rej_uniform_n_avx2_start_128 L_mlkem_rej_uniform_n_avx2_done_128: cmpl $0x00, %r8d je L_mlkem_rej_uniform_n_avx2_done_64 cmpl $0x00, %esi je L_mlkem_rej_uniform_n_avx2_done_64 movq $0xfff0fff0fff0fff, %r15 movq $0x2000200020002000, %r10 movq $0xd010d010d010d01, %r11 movq $0x1000100010001000, %r12 L_mlkem_rej_uniform_n_avx2_start_64: movq (%rdx), %rcx pdepq %r15, %rcx, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_0_avx2_rej_large_0 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_n_avx2_done_64 L_mlkem_rej_uniform_0_avx2_rej_large_0: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_0_avx2_rej_large_1 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_n_avx2_done_64 L_mlkem_rej_uniform_0_avx2_rej_large_1: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_0_avx2_rej_large_2 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_n_avx2_done_64 L_mlkem_rej_uniform_0_avx2_rej_large_2: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_0_avx2_rej_large_3 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_n_avx2_done_64 L_mlkem_rej_uniform_0_avx2_rej_large_3: addq $6, %rdx subl $6, %r8d jle L_mlkem_rej_uniform_n_avx2_done_64 cmpl $0x00, %esi jg L_mlkem_rej_uniform_n_avx2_start_64 L_mlkem_rej_uniform_n_avx2_done_64: vzeroupper subl %esi, %eax popq %rbp popq %r15 popq %r14 popq %r13 popq %r12 popq %rbx repz retq #ifndef __APPLE__ .size mlkem_rej_uniform_n_avx2,.-mlkem_rej_uniform_n_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_rej_uniform_avx2 .type mlkem_rej_uniform_avx2,@function .align 16 mlkem_rej_uniform_avx2: #else .section __TEXT,__text .globl _mlkem_rej_uniform_avx2 .p2align 4 _mlkem_rej_uniform_avx2: #endif /* __APPLE__ */ pushq %rbx pushq %r12 pushq %r13 pushq %r14 pushq %r15 pushq %rbp movq %rcx, %r8 movl %esi, %eax cmpl $0x00, %esi je L_mlkem_rej_uniform_avx2_done_64 cmpl $8, %esi jl L_mlkem_rej_uniform_avx2_done_128 vmovdqu L_mlkem_rej_q(%rip), %ymm6 vmovdqu L_mlkem_rej_ones(%rip), %ymm7 vmovdqu L_mlkem_rej_mask(%rip), %ymm8 vmovdqu L_mlkem_rej_shuffle(%rip), %ymm9 leaq L_mlkem_rej_idx(%rip), %r9 movq $0x1111111111111111, %r14 movq $0xe0c0a0806040200, %rbp movq $0x101010101010101, %r13 cmpl $32, %esi jl L_mlkem_rej_uniform_avx2_done_256 vpermq $0x94, (%rdx), %ymm0 vpermq $0x94, 24(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi addq $48, %rdx subl $48, %r8d cmpl $32, %esi jl L_mlkem_rej_uniform_avx2_done_256 vpermq $0x94, (%rdx), %ymm0 vpermq $0x94, 24(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi addq $48, %rdx subl $48, %r8d cmpl $32, %esi jl L_mlkem_rej_uniform_avx2_done_256 L_mlkem_rej_uniform_avx2_start_256: vpermq $0x94, (%rdx), %ymm0 vpermq $0x94, 24(%rdx), %ymm1 vpshufb %ymm9, %ymm0, %ymm0 vpshufb %ymm9, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpblendw $0xaa, %ymm2, %ymm0, %ymm0 vpblendw $0xaa, %ymm3, %ymm1, %ymm1 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpcmpgtw %ymm0, %ymm6, %ymm2 vpcmpgtw %ymm1, %ymm6, %ymm3 vpacksswb %ymm3, %ymm2, %ymm2 vpmovmskb %ymm2, %rbx movzbl %bl, %r10d movzbl %bh, %ecx movq %rbx, %r11 movq %rbx, %r12 shrq $16, %r11 shrq $24, %r12 andq $0xff, %r11 andq $0xff, %r12 movq (%r9,%r10,8), %xmm2 movq (%r9,%rcx,8), %xmm3 movq (%r9,%r11,8), %xmm4 movq (%r9,%r12,8), %xmm5 vinserti128 $0x01, %xmm4, %ymm2, %ymm2 vinserti128 $0x01, %xmm5, %ymm3, %ymm3 vpaddb %ymm7, %ymm2, %ymm4 vpaddb %ymm7, %ymm3, %ymm5 vpunpcklbw %ymm4, %ymm2, %ymm2 vpunpcklbw %ymm5, %ymm3, %ymm3 vpshufb %ymm2, %ymm0, %ymm0 vpshufb %ymm3, %ymm1, %ymm1 movq %rbx, %r10 movq %rbx, %r11 movq %rbx, %r12 andq $0xff, %rbx shrq $16, %r10 shrq $8, %r11 shrq $24, %r12 andq $0xff, %r10 andq $0xff, %r11 popcntl %ebx, %ebx popcntl %r10d, %r10d popcntl %r11d, %r11d popcntl %r12d, %r12d vmovdqu %xmm0, (%rdi) vextracti128 $0x01, %ymm0, %xmm0 leaq (%rdi,%rbx,2), %rdi subl %ebx, %esi vmovdqu %xmm0, (%rdi) leaq (%rdi,%r10,2), %rdi subl %r10d, %esi vmovdqu %xmm1, (%rdi) vextracti128 $0x01, %ymm1, %xmm1 leaq (%rdi,%r11,2), %rdi subl %r11d, %esi vmovdqu %xmm1, (%rdi) leaq (%rdi,%r12,2), %rdi subl %r12d, %esi addq $48, %rdx subl $48, %r8d cmpl $48, %r8d jl L_mlkem_rej_uniform_avx2_done_256 cmpl $32, %esi jge L_mlkem_rej_uniform_avx2_start_256 L_mlkem_rej_uniform_avx2_done_256: cmpl $8, %esi jl L_mlkem_rej_uniform_avx2_done_128 cmpl $12, %r8d jl L_mlkem_rej_uniform_avx2_done_128 L_mlkem_rej_uniform_avx2_start_128: vmovdqu (%rdx), %xmm0 vpshufb %xmm9, %xmm0, %xmm0 vpsrlw $4, %xmm0, %xmm2 vpblendw $0xaa, %xmm2, %xmm0, %xmm0 vpand %xmm8, %xmm0, %xmm0 vpcmpgtw %xmm0, %xmm6, %xmm2 vpmovmskb %xmm2, %rbx movq $0x5555, %r10 pextl %r10d, %ebx, %ebx movq (%r9,%rbx,8), %xmm3 vpaddb %xmm7, %xmm3, %xmm4 vpunpcklbw %xmm4, %xmm3, %xmm3 vpshufb %xmm3, %xmm0, %xmm0 vmovdqu %xmm0, (%rdi) popcntl %ebx, %ecx leaq (%rdi,%rcx,2), %rdi subl %ecx, %esi addq $12, %rdx subl $12, %r8d cmpl $12, %r8d jl L_mlkem_rej_uniform_avx2_done_128 cmpl $8, %esi jge L_mlkem_rej_uniform_avx2_start_128 L_mlkem_rej_uniform_avx2_done_128: cmpl $0x00, %r8d je L_mlkem_rej_uniform_avx2_done_64 cmpl $0x00, %esi je L_mlkem_rej_uniform_avx2_done_64 movq $0xfff0fff0fff0fff, %r15 movq $0x2000200020002000, %r10 movq $0xd010d010d010d01, %r11 movq $0x1000100010001000, %r12 L_mlkem_rej_uniform_avx2_start_64: movq (%rdx), %rcx pdepq %r15, %rcx, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_avx2_rej_large_0 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_avx2_done_64 L_mlkem_rej_uniform_avx2_rej_large_0: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_avx2_rej_large_1 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_avx2_done_64 L_mlkem_rej_uniform_avx2_rej_large_1: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_avx2_rej_large_2 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_avx2_done_64 L_mlkem_rej_uniform_avx2_rej_large_2: shrq $16, %rcx cmpw $0xd01, %cx jge L_mlkem_rej_uniform_avx2_rej_large_3 movw %cx, (%rdi) addq $2, %rdi subl $0x01, %esi je L_mlkem_rej_uniform_avx2_done_64 L_mlkem_rej_uniform_avx2_rej_large_3: addq $6, %rdx subl $6, %r8d jle L_mlkem_rej_uniform_avx2_done_64 cmpl $0x00, %esi jg L_mlkem_rej_uniform_avx2_start_64 L_mlkem_rej_uniform_avx2_done_64: vzeroupper subl %esi, %eax popq %rbp popq %r15 popq %r14 popq %r13 popq %r12 popq %rbx repz retq #ifndef __APPLE__ .size mlkem_rej_uniform_avx2,.-mlkem_rej_uniform_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_249: .quad 0x0024924900249249,0x0024924900249249 .quad 0x0024924900249249,0x0024924900249249 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_6db: .quad 0x006db6db006db6db,0x006db6db006db6db .quad 0x006db6db006db6db,0x006db6db006db6db #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_07: .quad 0x0000000700000007,0x0000000700000007 .quad 0x0000000700000007,0x0000000700000007 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_70: .quad 0x0007000000070000,0x0007000000070000 .quad 0x0007000000070000,0x0007000000070000 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_3: .quad 0x0003000300030003,0x0003000300030003 .quad 0x0003000300030003,0x0003000300030003 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_shuff: .quad 0xff050403ff020100,0xff0b0a09ff080706 .quad 0xff090807ff060504,0xff0f0e0dff0c0b0a #ifndef __APPLE__ .text .globl mlkem_cbd_eta3_avx2 .type mlkem_cbd_eta3_avx2,@function .align 16 mlkem_cbd_eta3_avx2: #else .section __TEXT,__text .globl _mlkem_cbd_eta3_avx2 .p2align 4 _mlkem_cbd_eta3_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_mask_249(%rip), %ymm8 vmovdqu L_mlkem_mask_6db(%rip), %ymm9 vmovdqu L_mlkem_mask_07(%rip), %ymm10 vmovdqu L_mlkem_mask_70(%rip), %ymm11 vmovdqu L_mlkem_mask_3(%rip), %ymm12 vmovdqu L_mlkem_shuff(%rip), %ymm13 vmovdqu (%rsi), %ymm0 vmovdqu 24(%rsi), %ymm1 vpermq $0x94, %ymm0, %ymm0 vpermq $0x94, %ymm1, %ymm1 vpshufb %ymm13, %ymm0, %ymm0 vpshufb %ymm13, %ymm1, %ymm1 vpsrld $0x01, %ymm0, %ymm2 vpsrld $0x01, %ymm1, %ymm3 vpsrld $2, %ymm0, %ymm4 vpsrld $2, %ymm1, %ymm5 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpaddd %ymm2, %ymm0, %ymm0 vpaddd %ymm3, %ymm1, %ymm1 vpaddd %ymm4, %ymm0, %ymm0 vpaddd %ymm5, %ymm1, %ymm1 vpsrld $3, %ymm0, %ymm2 vpsrld $3, %ymm1, %ymm3 vpaddd %ymm9, %ymm0, %ymm0 vpaddd %ymm9, %ymm1, %ymm1 vpsubd %ymm2, %ymm0, %ymm0 vpsubd %ymm3, %ymm1, %ymm1 vpslld $10, %ymm0, %ymm2 vpslld $10, %ymm1, %ymm3 vpsrld $12, %ymm0, %ymm4 vpsrld $12, %ymm1, %ymm5 vpsrld $2, %ymm0, %ymm6 vpsrld $2, %ymm1, %ymm7 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm10, %ymm4, %ymm4 vpand %ymm10, %ymm5, %ymm5 vpand %ymm11, %ymm6, %ymm6 vpand %ymm11, %ymm7, %ymm7 vpaddw %ymm2, %ymm0, %ymm0 vpaddw %ymm3, %ymm1, %ymm1 vpaddw %ymm6, %ymm4, %ymm2 vpaddw %ymm7, %ymm5, %ymm3 vpsubw %ymm12, %ymm0, %ymm0 vpsubw %ymm12, %ymm1, %ymm1 vpsubw %ymm12, %ymm2, %ymm2 vpsubw %ymm12, %ymm3, %ymm3 vpunpckldq %ymm2, %ymm0, %ymm4 vpunpckldq %ymm3, %ymm1, %ymm5 vpunpckhdq %ymm2, %ymm0, %ymm6 vpunpckhdq %ymm3, %ymm1, %ymm7 vperm2i128 $32, %ymm6, %ymm4, %ymm0 vperm2i128 $32, %ymm7, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm4, %ymm2 vperm2i128 $49, %ymm7, %ymm5, %ymm3 vmovdqu %ymm0, (%rdi) vmovdqu %ymm2, 32(%rdi) vmovdqu %ymm1, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vmovdqu 48(%rsi), %ymm0 vmovdqu 72(%rsi), %ymm1 vpermq $0x94, %ymm0, %ymm0 vpermq $0x94, %ymm1, %ymm1 vpshufb %ymm13, %ymm0, %ymm0 vpshufb %ymm13, %ymm1, %ymm1 vpsrld $0x01, %ymm0, %ymm2 vpsrld $0x01, %ymm1, %ymm3 vpsrld $2, %ymm0, %ymm4 vpsrld $2, %ymm1, %ymm5 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpaddd %ymm2, %ymm0, %ymm0 vpaddd %ymm3, %ymm1, %ymm1 vpaddd %ymm4, %ymm0, %ymm0 vpaddd %ymm5, %ymm1, %ymm1 vpsrld $3, %ymm0, %ymm2 vpsrld $3, %ymm1, %ymm3 vpaddd %ymm9, %ymm0, %ymm0 vpaddd %ymm9, %ymm1, %ymm1 vpsubd %ymm2, %ymm0, %ymm0 vpsubd %ymm3, %ymm1, %ymm1 vpslld $10, %ymm0, %ymm2 vpslld $10, %ymm1, %ymm3 vpsrld $12, %ymm0, %ymm4 vpsrld $12, %ymm1, %ymm5 vpsrld $2, %ymm0, %ymm6 vpsrld $2, %ymm1, %ymm7 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm10, %ymm4, %ymm4 vpand %ymm10, %ymm5, %ymm5 vpand %ymm11, %ymm6, %ymm6 vpand %ymm11, %ymm7, %ymm7 vpaddw %ymm2, %ymm0, %ymm0 vpaddw %ymm3, %ymm1, %ymm1 vpaddw %ymm6, %ymm4, %ymm2 vpaddw %ymm7, %ymm5, %ymm3 vpsubw %ymm12, %ymm0, %ymm0 vpsubw %ymm12, %ymm1, %ymm1 vpsubw %ymm12, %ymm2, %ymm2 vpsubw %ymm12, %ymm3, %ymm3 vpunpckldq %ymm2, %ymm0, %ymm4 vpunpckldq %ymm3, %ymm1, %ymm5 vpunpckhdq %ymm2, %ymm0, %ymm6 vpunpckhdq %ymm3, %ymm1, %ymm7 vperm2i128 $32, %ymm6, %ymm4, %ymm0 vperm2i128 $32, %ymm7, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm4, %ymm2 vperm2i128 $49, %ymm7, %ymm5, %ymm3 vmovdqu %ymm0, 128(%rdi) vmovdqu %ymm2, 160(%rdi) vmovdqu %ymm1, 192(%rdi) vmovdqu %ymm3, 224(%rdi) vmovdqu 96(%rsi), %ymm0 vmovdqu 120(%rsi), %ymm1 vpermq $0x94, %ymm0, %ymm0 vpermq $0x94, %ymm1, %ymm1 vpshufb %ymm13, %ymm0, %ymm0 vpshufb %ymm13, %ymm1, %ymm1 vpsrld $0x01, %ymm0, %ymm2 vpsrld $0x01, %ymm1, %ymm3 vpsrld $2, %ymm0, %ymm4 vpsrld $2, %ymm1, %ymm5 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpaddd %ymm2, %ymm0, %ymm0 vpaddd %ymm3, %ymm1, %ymm1 vpaddd %ymm4, %ymm0, %ymm0 vpaddd %ymm5, %ymm1, %ymm1 vpsrld $3, %ymm0, %ymm2 vpsrld $3, %ymm1, %ymm3 vpaddd %ymm9, %ymm0, %ymm0 vpaddd %ymm9, %ymm1, %ymm1 vpsubd %ymm2, %ymm0, %ymm0 vpsubd %ymm3, %ymm1, %ymm1 vpslld $10, %ymm0, %ymm2 vpslld $10, %ymm1, %ymm3 vpsrld $12, %ymm0, %ymm4 vpsrld $12, %ymm1, %ymm5 vpsrld $2, %ymm0, %ymm6 vpsrld $2, %ymm1, %ymm7 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm10, %ymm4, %ymm4 vpand %ymm10, %ymm5, %ymm5 vpand %ymm11, %ymm6, %ymm6 vpand %ymm11, %ymm7, %ymm7 vpaddw %ymm2, %ymm0, %ymm0 vpaddw %ymm3, %ymm1, %ymm1 vpaddw %ymm6, %ymm4, %ymm2 vpaddw %ymm7, %ymm5, %ymm3 vpsubw %ymm12, %ymm0, %ymm0 vpsubw %ymm12, %ymm1, %ymm1 vpsubw %ymm12, %ymm2, %ymm2 vpsubw %ymm12, %ymm3, %ymm3 vpunpckldq %ymm2, %ymm0, %ymm4 vpunpckldq %ymm3, %ymm1, %ymm5 vpunpckhdq %ymm2, %ymm0, %ymm6 vpunpckhdq %ymm3, %ymm1, %ymm7 vperm2i128 $32, %ymm6, %ymm4, %ymm0 vperm2i128 $32, %ymm7, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm4, %ymm2 vperm2i128 $49, %ymm7, %ymm5, %ymm3 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm2, 288(%rdi) vmovdqu %ymm1, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vmovdqu 144(%rsi), %ymm0 vmovdqu 168(%rsi), %ymm1 vpermq $0x94, %ymm0, %ymm0 vpermq $0x94, %ymm1, %ymm1 vpshufb %ymm13, %ymm0, %ymm0 vpshufb %ymm13, %ymm1, %ymm1 vpsrld $0x01, %ymm0, %ymm2 vpsrld $0x01, %ymm1, %ymm3 vpsrld $2, %ymm0, %ymm4 vpsrld $2, %ymm1, %ymm5 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpaddd %ymm2, %ymm0, %ymm0 vpaddd %ymm3, %ymm1, %ymm1 vpaddd %ymm4, %ymm0, %ymm0 vpaddd %ymm5, %ymm1, %ymm1 vpsrld $3, %ymm0, %ymm2 vpsrld $3, %ymm1, %ymm3 vpaddd %ymm9, %ymm0, %ymm0 vpaddd %ymm9, %ymm1, %ymm1 vpsubd %ymm2, %ymm0, %ymm0 vpsubd %ymm3, %ymm1, %ymm1 vpslld $10, %ymm0, %ymm2 vpslld $10, %ymm1, %ymm3 vpsrld $12, %ymm0, %ymm4 vpsrld $12, %ymm1, %ymm5 vpsrld $2, %ymm0, %ymm6 vpsrld $2, %ymm1, %ymm7 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm10, %ymm4, %ymm4 vpand %ymm10, %ymm5, %ymm5 vpand %ymm11, %ymm6, %ymm6 vpand %ymm11, %ymm7, %ymm7 vpaddw %ymm2, %ymm0, %ymm0 vpaddw %ymm3, %ymm1, %ymm1 vpaddw %ymm6, %ymm4, %ymm2 vpaddw %ymm7, %ymm5, %ymm3 vpsubw %ymm12, %ymm0, %ymm0 vpsubw %ymm12, %ymm1, %ymm1 vpsubw %ymm12, %ymm2, %ymm2 vpsubw %ymm12, %ymm3, %ymm3 vpunpckldq %ymm2, %ymm0, %ymm4 vpunpckldq %ymm3, %ymm1, %ymm5 vpunpckhdq %ymm2, %ymm0, %ymm6 vpunpckhdq %ymm3, %ymm1, %ymm7 vperm2i128 $32, %ymm6, %ymm4, %ymm0 vperm2i128 $32, %ymm7, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm4, %ymm2 vperm2i128 $49, %ymm7, %ymm5, %ymm3 vmovdqu %ymm0, 384(%rdi) vmovdqu %ymm2, 416(%rdi) vmovdqu %ymm1, 448(%rdi) vmovdqu %ymm3, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_cbd_eta3_avx2,.-mlkem_cbd_eta3_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_55: .quad 0x5555555555555555,0x5555555555555555 .quad 0x5555555555555555,0x5555555555555555 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_33: .quad 0x3333333333333333,0x3333333333333333 .quad 0x3333333333333333,0x3333333333333333 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_03: .quad 0x0303030303030303,0x0303030303030303 .quad 0x0303030303030303,0x0303030303030303 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_mask_0f: .quad 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f .quad 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f #ifndef __APPLE__ .text .globl mlkem_cbd_eta2_avx2 .type mlkem_cbd_eta2_avx2,@function .align 16 mlkem_cbd_eta2_avx2: #else .section __TEXT,__text .globl _mlkem_cbd_eta2_avx2 .p2align 4 _mlkem_cbd_eta2_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_mask_55(%rip), %ymm8 vmovdqu L_mlkem_mask_33(%rip), %ymm9 vmovdqu L_mlkem_mask_03(%rip), %ymm10 vmovdqu L_mlkem_mask_0f(%rip), %ymm11 vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vpsrlw $0x01, %ymm0, %ymm2 vpsrlw $0x01, %ymm1, %ymm3 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpaddb %ymm2, %ymm0, %ymm0 vpaddb %ymm3, %ymm1, %ymm1 vpsrlw $2, %ymm0, %ymm2 vpsrlw $2, %ymm1, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpaddb %ymm9, %ymm0, %ymm0 vpaddb %ymm9, %ymm1, %ymm1 vpsubb %ymm2, %ymm0, %ymm0 vpsubb %ymm3, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpand %ymm11, %ymm0, %ymm0 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpsubb %ymm10, %ymm0, %ymm0 vpsubb %ymm10, %ymm1, %ymm1 vpsubb %ymm10, %ymm2, %ymm2 vpsubb %ymm10, %ymm3, %ymm3 vpunpcklbw %ymm2, %ymm0, %ymm4 vpunpcklbw %ymm3, %ymm1, %ymm5 vpunpckhbw %ymm2, %ymm0, %ymm6 vpunpckhbw %ymm3, %ymm1, %ymm7 vpmovsxbw %xmm4, %ymm0 vpmovsxbw %xmm5, %ymm1 vextracti128 $0x01, %ymm4, %xmm2 vextracti128 $0x01, %ymm5, %xmm3 vpmovsxbw %xmm2, %ymm2 vpmovsxbw %xmm3, %ymm3 vpmovsxbw %xmm6, %ymm4 vpmovsxbw %xmm7, %ymm5 vextracti128 $0x01, %ymm6, %xmm6 vextracti128 $0x01, %ymm7, %xmm7 vpmovsxbw %xmm6, %ymm6 vpmovsxbw %xmm7, %ymm7 vmovdqu %ymm0, (%rdi) vmovdqu %ymm4, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm6, 96(%rdi) vmovdqu %ymm1, 128(%rdi) vmovdqu %ymm5, 160(%rdi) vmovdqu %ymm3, 192(%rdi) vmovdqu %ymm7, 224(%rdi) vmovdqu 64(%rsi), %ymm0 vmovdqu 96(%rsi), %ymm1 vpsrlw $0x01, %ymm0, %ymm2 vpsrlw $0x01, %ymm1, %ymm3 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpaddb %ymm2, %ymm0, %ymm0 vpaddb %ymm3, %ymm1, %ymm1 vpsrlw $2, %ymm0, %ymm2 vpsrlw $2, %ymm1, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpaddb %ymm9, %ymm0, %ymm0 vpaddb %ymm9, %ymm1, %ymm1 vpsubb %ymm2, %ymm0, %ymm0 vpsubb %ymm3, %ymm1, %ymm1 vpsrlw $4, %ymm0, %ymm2 vpsrlw $4, %ymm1, %ymm3 vpand %ymm11, %ymm0, %ymm0 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpsubb %ymm10, %ymm0, %ymm0 vpsubb %ymm10, %ymm1, %ymm1 vpsubb %ymm10, %ymm2, %ymm2 vpsubb %ymm10, %ymm3, %ymm3 vpunpcklbw %ymm2, %ymm0, %ymm4 vpunpcklbw %ymm3, %ymm1, %ymm5 vpunpckhbw %ymm2, %ymm0, %ymm6 vpunpckhbw %ymm3, %ymm1, %ymm7 vpmovsxbw %xmm4, %ymm0 vpmovsxbw %xmm5, %ymm1 vextracti128 $0x01, %ymm4, %xmm2 vextracti128 $0x01, %ymm5, %xmm3 vpmovsxbw %xmm2, %ymm2 vpmovsxbw %xmm3, %ymm3 vpmovsxbw %xmm6, %ymm4 vpmovsxbw %xmm7, %ymm5 vextracti128 $0x01, %ymm6, %xmm6 vextracti128 $0x01, %ymm7, %xmm7 vpmovsxbw %xmm6, %ymm6 vpmovsxbw %xmm7, %ymm7 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm4, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm6, 352(%rdi) vmovdqu %ymm1, 384(%rdi) vmovdqu %ymm5, 416(%rdi) vmovdqu %ymm3, 448(%rdi) vmovdqu %ymm7, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_cbd_eta2_avx2,.-mlkem_cbd_eta2_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_mask: .short 0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff .short 0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_shift: .quad 0x0400000104000001,0x0400000104000001 .quad 0x0400000104000001,0x0400000104000001 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_shlv: .quad 0x000000000000000c,0x000000000000000c .quad 0x000000000000000c,0x000000000000000c #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_shuf: .byte 0x00,0x01,0x02,0x03,0x04,0x08,0x09,0x0a .byte 0x0b,0x0c,0xff,0xff,0xff,0xff,0xff,0xff .byte 0x09,0x0a,0x0b,0x0c,0xff,0xff,0xff,0xff .byte 0xff,0xff,0x00,0x01,0x02,0x03,0x04,0x08 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_v: .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_offset: .short 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f .short 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_10_avx2_shift12: .short 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000 .short 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000 #ifndef __APPLE__ .text .globl mlkem_compress_10_avx2 .type mlkem_compress_10_avx2,@function .align 16 mlkem_compress_10_avx2: #else .section __TEXT,__text .globl _mlkem_compress_10_avx2 .p2align 4 _mlkem_compress_10_avx2: #endif /* __APPLE__ */ vmovdqu (%rsi), %ymm0 vmovdqu L_mlkem_compress_10_avx2_mask(%rip), %ymm9 vmovdqu L_mlkem_compress_10_avx2_shift(%rip), %ymm8 vmovdqu L_mlkem_compress_10_avx2_shlv(%rip), %ymm10 vmovdqu L_mlkem_compress_10_avx2_shuf(%rip), %ymm11 vmovdqu L_mlkem_compress_10_avx2_v(%rip), %ymm6 vmovdqu L_mlkem_compress_10_avx2_offset(%rip), %ymm12 vmovdqu L_mlkem_compress_10_avx2_shift12(%rip), %ymm13 vpsllw $3, %ymm6, %ymm7 L_mlkem_compress_10_avx2_start: vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, (%rdi) vmovdqu %xmm1, 20(%rdi) vmovss %xmm2, 16(%rdi) vmovss %xmm4, 36(%rdi) vmovdqu 64(%rsi), %ymm0 vmovdqu 96(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 40(%rdi) vmovdqu %xmm1, 60(%rdi) vmovss %xmm2, 56(%rdi) vmovss %xmm4, 76(%rdi) vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 80(%rdi) vmovdqu %xmm1, 100(%rdi) vmovss %xmm2, 96(%rdi) vmovss %xmm4, 116(%rdi) vmovdqu 192(%rsi), %ymm0 vmovdqu 224(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 120(%rdi) vmovdqu %xmm1, 140(%rdi) vmovss %xmm2, 136(%rdi) vmovss %xmm4, 156(%rdi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 160(%rdi) vmovdqu %xmm1, 180(%rdi) vmovss %xmm2, 176(%rdi) vmovss %xmm4, 196(%rdi) vmovdqu 320(%rsi), %ymm0 vmovdqu 352(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 200(%rdi) vmovdqu %xmm1, 220(%rdi) vmovss %xmm2, 216(%rdi) vmovss %xmm4, 236(%rdi) vmovdqu 384(%rsi), %ymm0 vmovdqu 416(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 240(%rdi) vmovdqu %xmm1, 260(%rdi) vmovss %xmm2, 256(%rdi) vmovss %xmm4, 276(%rdi) vmovdqu 448(%rsi), %ymm0 vmovdqu 480(%rsi), %ymm1 vpmullw %ymm7, %ymm0, %ymm2 vpmullw %ymm7, %ymm1, %ymm4 vpaddw %ymm12, %ymm0, %ymm3 vpaddw %ymm12, %ymm1, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm1, %ymm1 vpmulhuw %ymm6, %ymm0, %ymm0 vpmulhuw %ymm6, %ymm1, %ymm1 vpsubw %ymm3, %ymm2, %ymm3 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm3, %ymm2, %ymm2 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm2, %ymm2 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm2, %ymm0, %ymm0 vpsubw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm13, %ymm0, %ymm0 vpmulhrsw %ymm13, %ymm1, %ymm1 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpmaddwd %ymm8, %ymm0, %ymm0 vpmaddwd %ymm8, %ymm1, %ymm1 vpsllvd %ymm10, %ymm0, %ymm0 vpsllvd %ymm10, %ymm1, %ymm1 vpsrlq $12, %ymm0, %ymm0 vpsrlq $12, %ymm1, %ymm1 vpshufb %ymm11, %ymm0, %ymm0 vpshufb %ymm11, %ymm1, %ymm1 vextracti128 $0x01, %ymm0, %xmm2 vextracti128 $0x01, %ymm1, %xmm4 vpblendw $0xe0, %xmm2, %xmm0, %xmm0 vpblendw $0xe0, %xmm4, %xmm1, %xmm1 vmovdqu %xmm0, 280(%rdi) vmovdqu %xmm1, 300(%rdi) vmovss %xmm2, 296(%rdi) vmovss %xmm4, 316(%rdi) addq $0x140, %rdi addq $0x200, %rsi subl $0x01, %edx jg L_mlkem_compress_10_avx2_start vzeroupper repz retq #ifndef __APPLE__ .size mlkem_compress_10_avx2,.-mlkem_compress_10_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_10_avx2_mask: .long 0x7fe01ff8,0x7fe01ff8,0x7fe01ff8,0x7fe01ff8 .long 0x7fe01ff8,0x7fe01ff8,0x7fe01ff8,0x7fe01ff8 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_decompress_10_avx2_sllv: .quad 0x0000000000000004,0x0000000000000004 .quad 0x0000000000000004,0x0000000000000004 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_10_avx2_q: .long 0x0d013404,0x0d013404,0x0d013404,0x0d013404 .long 0x0d013404,0x0d013404,0x0d013404,0x0d013404 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_10_avx2_shuf: .byte 0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04 .byte 0x05,0x06,0x06,0x07,0x07,0x08,0x08,0x09 .byte 0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06 .byte 0x07,0x08,0x08,0x09,0x09,0x0a,0x0a,0x0b #ifndef __APPLE__ .text .globl mlkem_decompress_10_avx2 .type mlkem_decompress_10_avx2,@function .align 16 mlkem_decompress_10_avx2: #else .section __TEXT,__text .globl _mlkem_decompress_10_avx2 .p2align 4 _mlkem_decompress_10_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_decompress_10_avx2_mask(%rip), %ymm4 vmovdqu L_mlkem_decompress_10_avx2_q(%rip), %ymm5 vmovdqu L_mlkem_decompress_10_avx2_shuf(%rip), %ymm6 vmovdqu L_mlkem_decompress_10_avx2_sllv(%rip), %ymm7 L_mlkem_decompress_10_avx2_start: vpermq $0x94, (%rsi), %ymm0 vpermq $0x94, 20(%rsi), %ymm1 vpermq $0x94, 40(%rsi), %ymm2 vpermq $0x94, 60(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpsllvd %ymm7, %ymm0, %ymm0 vpsllvd %ymm7, %ymm1, %ymm1 vpsllvd %ymm7, %ymm2, %ymm2 vpsllvd %ymm7, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm5, %ymm0, %ymm0 vpmulhrsw %ymm5, %ymm1, %ymm1 vpmulhrsw %ymm5, %ymm2, %ymm2 vpmulhrsw %ymm5, %ymm3, %ymm3 vmovdqu %ymm0, (%rdi) vmovdqu %ymm1, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vpermq $0x94, 80(%rsi), %ymm0 vpermq $0x94, 100(%rsi), %ymm1 vpermq $0x94, 120(%rsi), %ymm2 vpermq $0x94, 140(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpsllvd %ymm7, %ymm0, %ymm0 vpsllvd %ymm7, %ymm1, %ymm1 vpsllvd %ymm7, %ymm2, %ymm2 vpsllvd %ymm7, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm5, %ymm0, %ymm0 vpmulhrsw %ymm5, %ymm1, %ymm1 vpmulhrsw %ymm5, %ymm2, %ymm2 vpmulhrsw %ymm5, %ymm3, %ymm3 vmovdqu %ymm0, 128(%rdi) vmovdqu %ymm1, 160(%rdi) vmovdqu %ymm2, 192(%rdi) vmovdqu %ymm3, 224(%rdi) vpermq $0x94, 160(%rsi), %ymm0 vpermq $0x94, 180(%rsi), %ymm1 vpermq $0x94, 200(%rsi), %ymm2 vpermq $0x94, 220(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpsllvd %ymm7, %ymm0, %ymm0 vpsllvd %ymm7, %ymm1, %ymm1 vpsllvd %ymm7, %ymm2, %ymm2 vpsllvd %ymm7, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm5, %ymm0, %ymm0 vpmulhrsw %ymm5, %ymm1, %ymm1 vpmulhrsw %ymm5, %ymm2, %ymm2 vpmulhrsw %ymm5, %ymm3, %ymm3 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm1, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vpermq $0x94, 240(%rsi), %ymm0 vpermq $0x94, 260(%rsi), %ymm1 vpermq $0x94, 280(%rsi), %ymm2 vpermq $0x94, 300(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpsllvd %ymm7, %ymm0, %ymm0 vpsllvd %ymm7, %ymm1, %ymm1 vpsllvd %ymm7, %ymm2, %ymm2 vpsllvd %ymm7, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm5, %ymm0, %ymm0 vpmulhrsw %ymm5, %ymm1, %ymm1 vpmulhrsw %ymm5, %ymm2, %ymm2 vpmulhrsw %ymm5, %ymm3, %ymm3 vmovdqu %ymm0, 384(%rdi) vmovdqu %ymm1, 416(%rdi) vmovdqu %ymm2, 448(%rdi) vmovdqu %ymm3, 480(%rdi) addq $0x140, %rsi addq $0x200, %rdi subl $0x01, %edx jg L_mlkem_decompress_10_avx2_start vzeroupper repz retq #ifndef __APPLE__ .size mlkem_decompress_10_avx2,.-mlkem_decompress_10_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_v: .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_off: .short 0x0024,0x0024,0x0024,0x0024,0x0024,0x0024,0x0024,0x0024 .short 0x0024,0x0024,0x0024,0x0024,0x0024,0x0024,0x0024,0x0024 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_shift13: .short 0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000 .short 0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_mask: .short 0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff .short 0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff,0x07ff #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_shift: .quad 0x0800000108000001,0x0800000108000001 .quad 0x0800000108000001,0x0800000108000001 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_sllvd: .long 0x0000000a,0x00000000,0x0000000a,0x00000000 .long 0x0000000a,0x00000000,0x0000000a,0x00000000 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_srlvq: .quad 0x000000000000000a,0x000000000000001e .quad 0x000000000000000a,0x000000000000001e #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_11_avx2_shuf: .byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 .byte 0x08,0x09,0x0a,0xff,0xff,0xff,0xff,0xff .byte 0x05,0x06,0x07,0x08,0x09,0x0a,0xff,0xff .byte 0xff,0xff,0x00,0x00,0x01,0x02,0x03,0x04 #ifndef __APPLE__ .text .globl mlkem_compress_11_avx2 .type mlkem_compress_11_avx2,@function .align 16 mlkem_compress_11_avx2: #else .section __TEXT,__text .globl _mlkem_compress_11_avx2 .p2align 4 _mlkem_compress_11_avx2: #endif /* __APPLE__ */ vmovdqu (%rsi), %ymm0 vmovdqu L_mlkem_compress_11_avx2_v(%rip), %ymm7 vmovdqu L_mlkem_compress_11_avx2_off(%rip), %ymm8 vmovdqu L_mlkem_compress_11_avx2_shift13(%rip), %ymm9 vmovdqu L_mlkem_compress_11_avx2_mask(%rip), %ymm10 vmovdqu L_mlkem_compress_11_avx2_shift(%rip), %ymm11 vmovdqu L_mlkem_compress_11_avx2_sllvd(%rip), %ymm12 vmovdqu L_mlkem_compress_11_avx2_srlvq(%rip), %ymm13 vmovdqu L_mlkem_compress_11_avx2_shuf(%rip), %ymm14 vpsllw $3, %ymm7, %ymm6 L_mlkem_compress_11_avx2_start: vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, (%rdi) vmovq %xmm1, 16(%rdi) vmovdqu %xmm3, 22(%rdi) vmovq %xmm4, 38(%rdi) vmovdqu 64(%rsi), %ymm0 vmovdqu 96(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 44(%rdi) vmovq %xmm1, 60(%rdi) vmovdqu %xmm3, 66(%rdi) vmovq %xmm4, 82(%rdi) vmovdqu 128(%rsi), %ymm0 vmovdqu 160(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 88(%rdi) vmovq %xmm1, 104(%rdi) vmovdqu %xmm3, 110(%rdi) vmovq %xmm4, 126(%rdi) vmovdqu 192(%rsi), %ymm0 vmovdqu 224(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 132(%rdi) vmovq %xmm1, 148(%rdi) vmovdqu %xmm3, 154(%rdi) vmovq %xmm4, 170(%rdi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 176(%rdi) vmovq %xmm1, 192(%rdi) vmovdqu %xmm3, 198(%rdi) vmovq %xmm4, 214(%rdi) vmovdqu 320(%rsi), %ymm0 vmovdqu 352(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 220(%rdi) vmovq %xmm1, 236(%rdi) vmovdqu %xmm3, 242(%rdi) vmovq %xmm4, 258(%rdi) vmovdqu 384(%rsi), %ymm0 vmovdqu 416(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 264(%rdi) vmovq %xmm1, 280(%rdi) vmovdqu %xmm3, 286(%rdi) vmovq %xmm4, 302(%rdi) vmovdqu 448(%rsi), %ymm0 vmovdqu 480(%rsi), %ymm3 vpmullw %ymm6, %ymm0, %ymm1 vpmullw %ymm6, %ymm3, %ymm4 vpaddw %ymm8, %ymm0, %ymm2 vpaddw %ymm8, %ymm3, %ymm5 vpsllw $3, %ymm0, %ymm0 vpsllw $3, %ymm3, %ymm3 vpmulhw %ymm7, %ymm0, %ymm0 vpmulhw %ymm7, %ymm3, %ymm3 vpsubw %ymm2, %ymm1, %ymm2 vpsubw %ymm5, %ymm4, %ymm5 vpandn %ymm2, %ymm1, %ymm1 vpandn %ymm5, %ymm4, %ymm4 vpsrlw $15, %ymm1, %ymm1 vpsrlw $15, %ymm4, %ymm4 vpsubw %ymm1, %ymm0, %ymm0 vpsubw %ymm4, %ymm3, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm10, %ymm0, %ymm0 vpand %ymm10, %ymm3, %ymm3 vpmaddwd %ymm11, %ymm0, %ymm0 vpmaddwd %ymm11, %ymm3, %ymm3 vpsllvd %ymm12, %ymm0, %ymm0 vpsllvd %ymm12, %ymm3, %ymm3 vpsrldq $8, %ymm0, %ymm1 vpsrldq $8, %ymm3, %ymm4 vpsrlvq %ymm13, %ymm0, %ymm0 vpsrlvq %ymm13, %ymm3, %ymm3 vpsllq $34, %ymm1, %ymm1 vpsllq $34, %ymm4, %ymm4 vpaddq %ymm1, %ymm0, %ymm0 vpaddq %ymm4, %ymm3, %ymm3 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm3, %ymm3 vextracti128 $0x01, %ymm0, %xmm1 vextracti128 $0x01, %ymm3, %xmm4 vpblendvb %xmm14, %xmm1, %xmm0, %xmm0 vpblendvb %xmm14, %xmm4, %xmm3, %xmm3 vmovdqu %xmm0, 308(%rdi) vmovq %xmm1, 324(%rdi) vmovdqu %xmm3, 330(%rdi) vmovq %xmm4, 346(%rdi) addq $0x160, %rdi addq $0x200, %rsi subl $0x01, %edx jg L_mlkem_compress_11_avx2_start vzeroupper repz retq #ifndef __APPLE__ .size mlkem_compress_11_avx2,.-mlkem_compress_11_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_q: .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_shuf: .byte 0x00,0x01,0x01,0x02,0x02,0x03,0x04,0x05 .byte 0x05,0x06,0x06,0x07,0x08,0x09,0x09,0x0a .byte 0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08 .byte 0x08,0x09,0x09,0x0a,0x0b,0x0c,0x0c,0x0d #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_sllv: .long 0x00000000,0x00000001,0x00000000,0x00000000 .long 0x00000000,0x00000001,0x00000000,0x00000000 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_srlv: .quad 0x0000000000000000,0x0000000000000002 .quad 0x0000000000000000,0x0000000000000002 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_shift: .short 0x0020,0x0004,0x0001,0x0020,0x0008,0x0001,0x0020,0x0004 .short 0x0020,0x0004,0x0001,0x0020,0x0008,0x0001,0x0020,0x0004 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_11_avx2_mask: .short 0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0 .short 0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0,0x7ff0 #ifndef __APPLE__ .text .globl mlkem_decompress_11_avx2 .type mlkem_decompress_11_avx2,@function .align 16 mlkem_decompress_11_avx2: #else .section __TEXT,__text .globl _mlkem_decompress_11_avx2 .p2align 4 _mlkem_decompress_11_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_decompress_11_avx2_q(%rip), %ymm4 vmovdqu L_mlkem_decompress_11_avx2_shuf(%rip), %ymm5 vmovdqu L_mlkem_decompress_11_avx2_sllv(%rip), %ymm6 vmovdqu L_mlkem_decompress_11_avx2_srlv(%rip), %ymm7 vmovdqu L_mlkem_decompress_11_avx2_shift(%rip), %ymm8 vmovdqu L_mlkem_decompress_11_avx2_mask(%rip), %ymm9 L_mlkem_decompress_11_avx2_start: vpermq $0x94, (%rsi), %ymm0 vpermq $0x94, 22(%rsi), %ymm1 vpermq $0x94, 44(%rsi), %ymm2 vpermq $0x94, 66(%rsi), %ymm3 vpshufb %ymm5, %ymm0, %ymm0 vpshufb %ymm5, %ymm1, %ymm1 vpshufb %ymm5, %ymm2, %ymm2 vpshufb %ymm5, %ymm3, %ymm3 vpsrlvd %ymm6, %ymm0, %ymm0 vpsrlvd %ymm6, %ymm1, %ymm1 vpsrlvd %ymm6, %ymm2, %ymm2 vpsrlvd %ymm6, %ymm3, %ymm3 vpsrlvq %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm1, %ymm1 vpsrlvq %ymm7, %ymm2, %ymm2 vpsrlvq %ymm7, %ymm3, %ymm3 vpmullw %ymm8, %ymm0, %ymm0 vpmullw %ymm8, %ymm1, %ymm1 vpmullw %ymm8, %ymm2, %ymm2 vpmullw %ymm8, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpmulhrsw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm4, %ymm2, %ymm2 vpmulhrsw %ymm4, %ymm3, %ymm3 vmovdqu %ymm0, (%rdi) vmovdqu %ymm1, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vpermq $0x94, 88(%rsi), %ymm0 vpermq $0x94, 110(%rsi), %ymm1 vpermq $0x94, 132(%rsi), %ymm2 vpermq $0x94, 154(%rsi), %ymm3 vpshufb %ymm5, %ymm0, %ymm0 vpshufb %ymm5, %ymm1, %ymm1 vpshufb %ymm5, %ymm2, %ymm2 vpshufb %ymm5, %ymm3, %ymm3 vpsrlvd %ymm6, %ymm0, %ymm0 vpsrlvd %ymm6, %ymm1, %ymm1 vpsrlvd %ymm6, %ymm2, %ymm2 vpsrlvd %ymm6, %ymm3, %ymm3 vpsrlvq %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm1, %ymm1 vpsrlvq %ymm7, %ymm2, %ymm2 vpsrlvq %ymm7, %ymm3, %ymm3 vpmullw %ymm8, %ymm0, %ymm0 vpmullw %ymm8, %ymm1, %ymm1 vpmullw %ymm8, %ymm2, %ymm2 vpmullw %ymm8, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpmulhrsw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm4, %ymm2, %ymm2 vpmulhrsw %ymm4, %ymm3, %ymm3 vmovdqu %ymm0, 128(%rdi) vmovdqu %ymm1, 160(%rdi) vmovdqu %ymm2, 192(%rdi) vmovdqu %ymm3, 224(%rdi) vpermq $0x94, 176(%rsi), %ymm0 vpermq $0x94, 198(%rsi), %ymm1 vpermq $0x94, 220(%rsi), %ymm2 vpermq $0x94, 242(%rsi), %ymm3 vpshufb %ymm5, %ymm0, %ymm0 vpshufb %ymm5, %ymm1, %ymm1 vpshufb %ymm5, %ymm2, %ymm2 vpshufb %ymm5, %ymm3, %ymm3 vpsrlvd %ymm6, %ymm0, %ymm0 vpsrlvd %ymm6, %ymm1, %ymm1 vpsrlvd %ymm6, %ymm2, %ymm2 vpsrlvd %ymm6, %ymm3, %ymm3 vpsrlvq %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm1, %ymm1 vpsrlvq %ymm7, %ymm2, %ymm2 vpsrlvq %ymm7, %ymm3, %ymm3 vpmullw %ymm8, %ymm0, %ymm0 vpmullw %ymm8, %ymm1, %ymm1 vpmullw %ymm8, %ymm2, %ymm2 vpmullw %ymm8, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpmulhrsw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm4, %ymm2, %ymm2 vpmulhrsw %ymm4, %ymm3, %ymm3 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm1, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vpermq $0x94, 264(%rsi), %ymm0 vpermq $0x94, 286(%rsi), %ymm1 vpermq $0x94, 308(%rsi), %ymm2 vpermq $0x94, 330(%rsi), %ymm3 vpshufb %ymm5, %ymm0, %ymm0 vpshufb %ymm5, %ymm1, %ymm1 vpshufb %ymm5, %ymm2, %ymm2 vpshufb %ymm5, %ymm3, %ymm3 vpsrlvd %ymm6, %ymm0, %ymm0 vpsrlvd %ymm6, %ymm1, %ymm1 vpsrlvd %ymm6, %ymm2, %ymm2 vpsrlvd %ymm6, %ymm3, %ymm3 vpsrlvq %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm1, %ymm1 vpsrlvq %ymm7, %ymm2, %ymm2 vpsrlvq %ymm7, %ymm3, %ymm3 vpmullw %ymm8, %ymm0, %ymm0 vpmullw %ymm8, %ymm1, %ymm1 vpmullw %ymm8, %ymm2, %ymm2 vpmullw %ymm8, %ymm3, %ymm3 vpsrlw $0x01, %ymm0, %ymm0 vpsrlw $0x01, %ymm1, %ymm1 vpsrlw $0x01, %ymm2, %ymm2 vpsrlw $0x01, %ymm3, %ymm3 vpand %ymm9, %ymm0, %ymm0 vpand %ymm9, %ymm1, %ymm1 vpand %ymm9, %ymm2, %ymm2 vpand %ymm9, %ymm3, %ymm3 vpmulhrsw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm4, %ymm1, %ymm1 vpmulhrsw %ymm4, %ymm2, %ymm2 vpmulhrsw %ymm4, %ymm3, %ymm3 vmovdqu %ymm0, 384(%rdi) vmovdqu %ymm1, 416(%rdi) vmovdqu %ymm2, 448(%rdi) vmovdqu %ymm3, 480(%rdi) addq $0x160, %rsi addq $0x200, %rdi subl $0x01, %edx jg L_mlkem_decompress_11_avx2_start vzeroupper repz retq #ifndef __APPLE__ .size mlkem_decompress_11_avx2,.-mlkem_decompress_11_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_4_avx2_mask: .short 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f .short 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_4_avx2_shift: .short 0x0200,0x0200,0x0200,0x0200,0x0200,0x0200,0x0200,0x0200 .short 0x0200,0x0200,0x0200,0x0200,0x0200,0x0200,0x0200,0x0200 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_4_avx2_perm: .long 0x00000000,0x00000004,0x00000001,0x00000005 .long 0x00000002,0x00000006,0x00000003,0x00000007 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_4_avx2_v: .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_4_avx2_shift12: .short 0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001 .short 0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001 #ifndef __APPLE__ .text .globl mlkem_compress_4_avx2 .type mlkem_compress_4_avx2,@function .align 16 mlkem_compress_4_avx2: #else .section __TEXT,__text .globl _mlkem_compress_4_avx2 .p2align 4 _mlkem_compress_4_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_compress_4_avx2_mask(%rip), %ymm8 vmovdqu L_mlkem_compress_4_avx2_shift(%rip), %ymm9 vmovdqu L_mlkem_compress_4_avx2_perm(%rip), %ymm10 vmovdqu L_mlkem_compress_4_avx2_v(%rip), %ymm11 vmovdqu L_mlkem_compress_4_avx2_shift12(%rip), %ymm12 vpmulhw (%rsi), %ymm11, %ymm0 vpmulhw 32(%rsi), %ymm11, %ymm1 vpmulhw 64(%rsi), %ymm11, %ymm2 vpmulhw 96(%rsi), %ymm11, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm1, %ymm1 vpmulhrsw %ymm9, %ymm2, %ymm2 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpackuswb %ymm1, %ymm0, %ymm0 vpackuswb %ymm3, %ymm2, %ymm2 vpmaddubsw %ymm12, %ymm0, %ymm0 vpmaddubsw %ymm12, %ymm2, %ymm2 vpackuswb %ymm2, %ymm0, %ymm0 vpmulhw 128(%rsi), %ymm11, %ymm4 vpmulhw 160(%rsi), %ymm11, %ymm5 vpmulhw 192(%rsi), %ymm11, %ymm6 vpmulhw 224(%rsi), %ymm11, %ymm7 vpmulhrsw %ymm9, %ymm4, %ymm4 vpmulhrsw %ymm9, %ymm5, %ymm5 vpmulhrsw %ymm9, %ymm6, %ymm6 vpmulhrsw %ymm9, %ymm7, %ymm7 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpand %ymm8, %ymm6, %ymm6 vpand %ymm8, %ymm7, %ymm7 vpackuswb %ymm5, %ymm4, %ymm4 vpackuswb %ymm7, %ymm6, %ymm6 vpmaddubsw %ymm12, %ymm4, %ymm4 vpmaddubsw %ymm12, %ymm6, %ymm6 vpackuswb %ymm6, %ymm4, %ymm4 vpermd %ymm0, %ymm10, %ymm0 vpermd %ymm4, %ymm10, %ymm4 vmovdqu %ymm0, (%rdi) vmovdqu %ymm4, 32(%rdi) vpmulhw 256(%rsi), %ymm11, %ymm0 vpmulhw 288(%rsi), %ymm11, %ymm1 vpmulhw 320(%rsi), %ymm11, %ymm2 vpmulhw 352(%rsi), %ymm11, %ymm3 vpmulhrsw %ymm9, %ymm0, %ymm0 vpmulhrsw %ymm9, %ymm1, %ymm1 vpmulhrsw %ymm9, %ymm2, %ymm2 vpmulhrsw %ymm9, %ymm3, %ymm3 vpand %ymm8, %ymm0, %ymm0 vpand %ymm8, %ymm1, %ymm1 vpand %ymm8, %ymm2, %ymm2 vpand %ymm8, %ymm3, %ymm3 vpackuswb %ymm1, %ymm0, %ymm0 vpackuswb %ymm3, %ymm2, %ymm2 vpmaddubsw %ymm12, %ymm0, %ymm0 vpmaddubsw %ymm12, %ymm2, %ymm2 vpackuswb %ymm2, %ymm0, %ymm0 vpmulhw 384(%rsi), %ymm11, %ymm4 vpmulhw 416(%rsi), %ymm11, %ymm5 vpmulhw 448(%rsi), %ymm11, %ymm6 vpmulhw 480(%rsi), %ymm11, %ymm7 vpmulhrsw %ymm9, %ymm4, %ymm4 vpmulhrsw %ymm9, %ymm5, %ymm5 vpmulhrsw %ymm9, %ymm6, %ymm6 vpmulhrsw %ymm9, %ymm7, %ymm7 vpand %ymm8, %ymm4, %ymm4 vpand %ymm8, %ymm5, %ymm5 vpand %ymm8, %ymm6, %ymm6 vpand %ymm8, %ymm7, %ymm7 vpackuswb %ymm5, %ymm4, %ymm4 vpackuswb %ymm7, %ymm6, %ymm6 vpmaddubsw %ymm12, %ymm4, %ymm4 vpmaddubsw %ymm12, %ymm6, %ymm6 vpackuswb %ymm6, %ymm4, %ymm4 vpermd %ymm0, %ymm10, %ymm0 vpermd %ymm4, %ymm10, %ymm4 vmovdqu %ymm0, 64(%rdi) vmovdqu %ymm4, 96(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_compress_4_avx2,.-mlkem_compress_4_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_4_avx2_mask: .long 0x00f0000f,0x00f0000f,0x00f0000f,0x00f0000f .long 0x00f0000f,0x00f0000f,0x00f0000f,0x00f0000f #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_4_avx2_shift: .long 0x00800800,0x00800800,0x00800800,0x00800800 .long 0x00800800,0x00800800,0x00800800,0x00800800 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_4_avx2_q: .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_4_avx2_shuf: .byte 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01 .byte 0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03 .byte 0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05 .byte 0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07 #ifndef __APPLE__ .text .globl mlkem_decompress_4_avx2 .type mlkem_decompress_4_avx2,@function .align 16 mlkem_decompress_4_avx2: #else .section __TEXT,__text .globl _mlkem_decompress_4_avx2 .p2align 4 _mlkem_decompress_4_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_decompress_4_avx2_mask(%rip), %ymm4 vmovdqu L_mlkem_decompress_4_avx2_shift(%rip), %ymm5 vmovdqu L_mlkem_decompress_4_avx2_shuf(%rip), %ymm6 vmovdqu L_mlkem_decompress_4_avx2_q(%rip), %ymm7 vpbroadcastq (%rsi), %ymm0 vpbroadcastq 8(%rsi), %ymm1 vpbroadcastq 16(%rsi), %ymm2 vpbroadcastq 24(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmullw %ymm5, %ymm0, %ymm0 vpmullw %ymm5, %ymm1, %ymm1 vpmullw %ymm5, %ymm2, %ymm2 vpmullw %ymm5, %ymm3, %ymm3 vpmulhrsw %ymm7, %ymm0, %ymm0 vpmulhrsw %ymm7, %ymm1, %ymm1 vpmulhrsw %ymm7, %ymm2, %ymm2 vpmulhrsw %ymm7, %ymm3, %ymm3 vmovdqu %ymm0, (%rdi) vmovdqu %ymm1, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vpbroadcastq 32(%rsi), %ymm0 vpbroadcastq 40(%rsi), %ymm1 vpbroadcastq 48(%rsi), %ymm2 vpbroadcastq 56(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmullw %ymm5, %ymm0, %ymm0 vpmullw %ymm5, %ymm1, %ymm1 vpmullw %ymm5, %ymm2, %ymm2 vpmullw %ymm5, %ymm3, %ymm3 vpmulhrsw %ymm7, %ymm0, %ymm0 vpmulhrsw %ymm7, %ymm1, %ymm1 vpmulhrsw %ymm7, %ymm2, %ymm2 vpmulhrsw %ymm7, %ymm3, %ymm3 vmovdqu %ymm0, 128(%rdi) vmovdqu %ymm1, 160(%rdi) vmovdqu %ymm2, 192(%rdi) vmovdqu %ymm3, 224(%rdi) vpbroadcastq 64(%rsi), %ymm0 vpbroadcastq 72(%rsi), %ymm1 vpbroadcastq 80(%rsi), %ymm2 vpbroadcastq 88(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmullw %ymm5, %ymm0, %ymm0 vpmullw %ymm5, %ymm1, %ymm1 vpmullw %ymm5, %ymm2, %ymm2 vpmullw %ymm5, %ymm3, %ymm3 vpmulhrsw %ymm7, %ymm0, %ymm0 vpmulhrsw %ymm7, %ymm1, %ymm1 vpmulhrsw %ymm7, %ymm2, %ymm2 vpmulhrsw %ymm7, %ymm3, %ymm3 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm1, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vpbroadcastq 96(%rsi), %ymm0 vpbroadcastq 104(%rsi), %ymm1 vpbroadcastq 112(%rsi), %ymm2 vpbroadcastq 120(%rsi), %ymm3 vpshufb %ymm6, %ymm0, %ymm0 vpshufb %ymm6, %ymm1, %ymm1 vpshufb %ymm6, %ymm2, %ymm2 vpshufb %ymm6, %ymm3, %ymm3 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpand %ymm4, %ymm2, %ymm2 vpand %ymm4, %ymm3, %ymm3 vpmullw %ymm5, %ymm0, %ymm0 vpmullw %ymm5, %ymm1, %ymm1 vpmullw %ymm5, %ymm2, %ymm2 vpmullw %ymm5, %ymm3, %ymm3 vpmulhrsw %ymm7, %ymm0, %ymm0 vpmulhrsw %ymm7, %ymm1, %ymm1 vpmulhrsw %ymm7, %ymm2, %ymm2 vpmulhrsw %ymm7, %ymm3, %ymm3 vmovdqu %ymm0, 384(%rdi) vmovdqu %ymm1, 416(%rdi) vmovdqu %ymm2, 448(%rdi) vmovdqu %ymm3, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_decompress_4_avx2,.-mlkem_decompress_4_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_v: .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf .short 0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf,0x4ebf #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_shift: .short 0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400 .short 0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_mask: .short 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f .short 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_shift1: .short 0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001 .short 0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_shift2: .long 0x04000001,0x04000001,0x04000001,0x04000001 .long 0x04000001,0x04000001,0x04000001,0x04000001 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 32 #else .p2align 5 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_shlv: .quad 0x000000000000000c,0x000000000000000c .quad 0x000000000000000c,0x000000000000000c #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_compress_5_avx2_shuffle: .byte 0x00,0x01,0x02,0x03,0x04,0xff,0xff,0xff .byte 0xff,0xff,0x08,0x09,0x0a,0x0b,0x0c,0xff .byte 0x09,0x0a,0x0b,0x0c,0xff,0x00,0x01,0x02 .byte 0x03,0x04,0xff,0xff,0xff,0xff,0xff,0x08 #ifndef __APPLE__ .text .globl mlkem_compress_5_avx2 .type mlkem_compress_5_avx2,@function .align 16 mlkem_compress_5_avx2: #else .section __TEXT,__text .globl _mlkem_compress_5_avx2 .p2align 4 _mlkem_compress_5_avx2: #endif /* __APPLE__ */ vmovdqu (%rsi), %ymm0 vmovdqu L_mlkem_compress_5_avx2_v(%rip), %ymm2 vmovdqu L_mlkem_compress_5_avx2_shift(%rip), %ymm3 vmovdqu L_mlkem_compress_5_avx2_mask(%rip), %ymm4 vmovdqu L_mlkem_compress_5_avx2_shift1(%rip), %ymm5 vmovdqu L_mlkem_compress_5_avx2_shift2(%rip), %ymm6 vmovdqu L_mlkem_compress_5_avx2_shlv(%rip), %ymm7 vmovdqu L_mlkem_compress_5_avx2_shuffle(%rip), %ymm8 vpmulhw (%rsi), %ymm2, %ymm0 vpmulhw 32(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, (%rdi) movss %xmm1, 16(%rdi) vpmulhw 64(%rsi), %ymm2, %ymm0 vpmulhw 96(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 20(%rdi) movss %xmm1, 36(%rdi) vpmulhw 128(%rsi), %ymm2, %ymm0 vpmulhw 160(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 40(%rdi) movss %xmm1, 56(%rdi) vpmulhw 192(%rsi), %ymm2, %ymm0 vpmulhw 224(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 60(%rdi) movss %xmm1, 76(%rdi) vpmulhw 256(%rsi), %ymm2, %ymm0 vpmulhw 288(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 80(%rdi) movss %xmm1, 96(%rdi) vpmulhw 320(%rsi), %ymm2, %ymm0 vpmulhw 352(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 100(%rdi) movss %xmm1, 116(%rdi) vpmulhw 384(%rsi), %ymm2, %ymm0 vpmulhw 416(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 120(%rdi) movss %xmm1, 136(%rdi) vpmulhw 448(%rsi), %ymm2, %ymm0 vpmulhw 480(%rsi), %ymm2, %ymm1 vpmulhrsw %ymm3, %ymm0, %ymm0 vpmulhrsw %ymm3, %ymm1, %ymm1 vpand %ymm4, %ymm0, %ymm0 vpand %ymm4, %ymm1, %ymm1 vpackuswb %ymm1, %ymm0, %ymm0 vpmaddubsw %ymm5, %ymm0, %ymm0 vpmaddwd %ymm6, %ymm0, %ymm0 vpsllvd %ymm7, %ymm0, %ymm0 vpsrlvq %ymm7, %ymm0, %ymm0 vpshufb %ymm8, %ymm0, %ymm0 vextracti128 $0x01, %ymm0, %xmm1 vpblendvb %xmm8, %xmm1, %xmm0, %xmm0 vmovdqu %xmm0, 140(%rdi) movss %xmm1, 156(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_compress_5_avx2,.-mlkem_compress_5_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_5_avx2_q: .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 .short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_5_avx2_shuf: .byte 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02 .byte 0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04 .byte 0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x07 .byte 0x07,0x08,0x08,0x08,0x08,0x09,0x09,0x09 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_5_avx2_mask: .short 0x001f,0x03e0,0x007c,0x0f80,0x01f0,0x003e,0x07c0,0x00f8 .short 0x001f,0x03e0,0x007c,0x0f80,0x01f0,0x003e,0x07c0,0x00f8 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_decompress_5_avx2_shift: .short 0x0400,0x0020,0x0100,0x0008,0x0040,0x0200,0x0010,0x0080 .short 0x0400,0x0020,0x0100,0x0008,0x0040,0x0200,0x0010,0x0080 #ifndef __APPLE__ .text .globl mlkem_decompress_5_avx2 .type mlkem_decompress_5_avx2,@function .align 16 mlkem_decompress_5_avx2: #else .section __TEXT,__text .globl _mlkem_decompress_5_avx2 .p2align 4 _mlkem_decompress_5_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_decompress_5_avx2_q(%rip), %ymm1 vmovdqu L_mlkem_decompress_5_avx2_shuf(%rip), %ymm2 vmovdqu L_mlkem_decompress_5_avx2_mask(%rip), %ymm3 vmovdqu L_mlkem_decompress_5_avx2_shift(%rip), %ymm4 vbroadcasti128 (%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, (%rdi) vbroadcasti128 10(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 32(%rdi) vbroadcasti128 20(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 64(%rdi) vbroadcasti128 30(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 96(%rdi) vbroadcasti128 40(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 128(%rdi) vbroadcasti128 50(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 160(%rdi) vbroadcasti128 60(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 192(%rdi) vbroadcasti128 70(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 224(%rdi) vbroadcasti128 80(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 256(%rdi) vbroadcasti128 90(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 288(%rdi) vbroadcasti128 100(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 320(%rdi) vbroadcasti128 110(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 352(%rdi) vbroadcasti128 120(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 384(%rdi) vbroadcasti128 130(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 416(%rdi) vbroadcasti128 140(%rsi), %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 448(%rdi) vmovq 150(%rsi), %xmm0 movzwq 158(%rsi), %rdx vpinsrq $0x01, %rdx, %xmm0, %xmm0 vinserti128 $0x01, %xmm0, %ymm0, %ymm0 vpshufb %ymm2, %ymm0, %ymm0 vpand %ymm3, %ymm0, %ymm0 vpmullw %ymm4, %ymm0, %ymm0 vpmulhrsw %ymm1, %ymm0, %ymm0 vmovdqu %ymm0, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_decompress_5_avx2,.-mlkem_decompress_5_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_from_msg_avx2_shift: .long 0x00000003,0x00000002,0x00000001,0x00000000 .long 0x00000003,0x00000002,0x00000001,0x00000000 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_from_msg_avx2_shuf: .byte 0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x0d .byte 0x02,0x03,0x06,0x07,0x0a,0x0b,0x0e,0x0f .byte 0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x0d .byte 0x02,0x03,0x06,0x07,0x0a,0x0b,0x0e,0x0f #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_from_msg_avx2_hqs: .short 0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681 .short 0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681 #ifndef __APPLE__ .text .globl mlkem_from_msg_avx2 .type mlkem_from_msg_avx2,@function .align 16 mlkem_from_msg_avx2: #else .section __TEXT,__text .globl _mlkem_from_msg_avx2 .p2align 4 _mlkem_from_msg_avx2: #endif /* __APPLE__ */ vmovdqu (%rsi), %ymm0 vmovdqu L_mlkem_from_msg_avx2_shift(%rip), %ymm9 vmovdqu L_mlkem_from_msg_avx2_shuf(%rip), %ymm10 vmovdqu L_mlkem_from_msg_avx2_hqs(%rip), %ymm11 vpshufd $0x00, %ymm0, %ymm4 vpsllvd %ymm9, %ymm4, %ymm4 vpshufb %ymm10, %ymm4, %ymm4 vpsllw $12, %ymm4, %ymm1 vpsllw $8, %ymm4, %ymm2 vpsllw $4, %ymm4, %ymm3 vpsraw $15, %ymm1, %ymm1 vpsraw $15, %ymm2, %ymm2 vpsraw $15, %ymm3, %ymm3 vpsraw $15, %ymm4, %ymm4 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm11, %ymm4, %ymm4 vpunpcklqdq %ymm2, %ymm1, %ymm5 vpunpckhqdq %ymm2, %ymm1, %ymm7 vpunpcklqdq %ymm4, %ymm3, %ymm6 vpunpckhqdq %ymm4, %ymm3, %ymm8 vperm2i128 $32, %ymm6, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm5, %ymm3 vperm2i128 $32, %ymm8, %ymm7, %ymm2 vperm2i128 $49, %ymm8, %ymm7, %ymm4 vmovdqu %ymm1, (%rdi) vmovdqu %ymm2, 32(%rdi) vmovdqu %ymm3, 256(%rdi) vmovdqu %ymm4, 288(%rdi) vpshufd $0x55, %ymm0, %ymm4 vpsllvd %ymm9, %ymm4, %ymm4 vpshufb %ymm10, %ymm4, %ymm4 vpsllw $12, %ymm4, %ymm1 vpsllw $8, %ymm4, %ymm2 vpsllw $4, %ymm4, %ymm3 vpsraw $15, %ymm1, %ymm1 vpsraw $15, %ymm2, %ymm2 vpsraw $15, %ymm3, %ymm3 vpsraw $15, %ymm4, %ymm4 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm11, %ymm4, %ymm4 vpunpcklqdq %ymm2, %ymm1, %ymm5 vpunpckhqdq %ymm2, %ymm1, %ymm7 vpunpcklqdq %ymm4, %ymm3, %ymm6 vpunpckhqdq %ymm4, %ymm3, %ymm8 vperm2i128 $32, %ymm6, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm5, %ymm3 vperm2i128 $32, %ymm8, %ymm7, %ymm2 vperm2i128 $49, %ymm8, %ymm7, %ymm4 vmovdqu %ymm1, 64(%rdi) vmovdqu %ymm2, 96(%rdi) vmovdqu %ymm3, 320(%rdi) vmovdqu %ymm4, 352(%rdi) vpshufd $0xaa, %ymm0, %ymm4 vpsllvd %ymm9, %ymm4, %ymm4 vpshufb %ymm10, %ymm4, %ymm4 vpsllw $12, %ymm4, %ymm1 vpsllw $8, %ymm4, %ymm2 vpsllw $4, %ymm4, %ymm3 vpsraw $15, %ymm1, %ymm1 vpsraw $15, %ymm2, %ymm2 vpsraw $15, %ymm3, %ymm3 vpsraw $15, %ymm4, %ymm4 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm11, %ymm4, %ymm4 vpunpcklqdq %ymm2, %ymm1, %ymm5 vpunpckhqdq %ymm2, %ymm1, %ymm7 vpunpcklqdq %ymm4, %ymm3, %ymm6 vpunpckhqdq %ymm4, %ymm3, %ymm8 vperm2i128 $32, %ymm6, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm5, %ymm3 vperm2i128 $32, %ymm8, %ymm7, %ymm2 vperm2i128 $49, %ymm8, %ymm7, %ymm4 vmovdqu %ymm1, 128(%rdi) vmovdqu %ymm2, 160(%rdi) vmovdqu %ymm3, 384(%rdi) vmovdqu %ymm4, 416(%rdi) vpshufd $0xff, %ymm0, %ymm4 vpsllvd %ymm9, %ymm4, %ymm4 vpshufb %ymm10, %ymm4, %ymm4 vpsllw $12, %ymm4, %ymm1 vpsllw $8, %ymm4, %ymm2 vpsllw $4, %ymm4, %ymm3 vpsraw $15, %ymm1, %ymm1 vpsraw $15, %ymm2, %ymm2 vpsraw $15, %ymm3, %ymm3 vpsraw $15, %ymm4, %ymm4 vpand %ymm11, %ymm1, %ymm1 vpand %ymm11, %ymm2, %ymm2 vpand %ymm11, %ymm3, %ymm3 vpand %ymm11, %ymm4, %ymm4 vpunpcklqdq %ymm2, %ymm1, %ymm5 vpunpckhqdq %ymm2, %ymm1, %ymm7 vpunpcklqdq %ymm4, %ymm3, %ymm6 vpunpckhqdq %ymm4, %ymm3, %ymm8 vperm2i128 $32, %ymm6, %ymm5, %ymm1 vperm2i128 $49, %ymm6, %ymm5, %ymm3 vperm2i128 $32, %ymm8, %ymm7, %ymm2 vperm2i128 $49, %ymm8, %ymm7, %ymm4 vmovdqu %ymm1, 192(%rdi) vmovdqu %ymm2, 224(%rdi) vmovdqu %ymm3, 448(%rdi) vmovdqu %ymm4, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_from_msg_avx2,.-mlkem_from_msg_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_to_msg_avx2_hqs: .short 0x0680,0x0680,0x0680,0x0680,0x0680,0x0680,0x0680,0x0680 .short 0x0680,0x0680,0x0680,0x0680,0x0680,0x0680,0x0680,0x0680 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_to_msg_avx2_hhqs: .short 0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1 .short 0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1,0xfcc1 #ifndef __APPLE__ .text .globl mlkem_to_msg_avx2 .type mlkem_to_msg_avx2,@function .align 16 mlkem_to_msg_avx2: #else .section __TEXT,__text .globl _mlkem_to_msg_avx2 .p2align 4 _mlkem_to_msg_avx2: #endif /* __APPLE__ */ vmovdqu L_mlkem_to_msg_avx2_hqs(%rip), %ymm8 vmovdqu L_mlkem_to_msg_avx2_hhqs(%rip), %ymm9 vpsubw (%rsi), %ymm8, %ymm0 vpsubw 32(%rsi), %ymm8, %ymm1 vpsubw 64(%rsi), %ymm8, %ymm2 vpsubw 96(%rsi), %ymm8, %ymm3 vpsraw $15, %ymm0, %ymm4 vpsraw $15, %ymm1, %ymm5 vpsraw $15, %ymm2, %ymm6 vpsraw $15, %ymm3, %ymm7 vpxor %ymm4, %ymm0, %ymm0 vpxor %ymm5, %ymm1, %ymm1 vpxor %ymm6, %ymm2, %ymm2 vpxor %ymm7, %ymm3, %ymm3 vpaddw %ymm9, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm9, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpacksswb %ymm1, %ymm0, %ymm0 vpacksswb %ymm3, %ymm2, %ymm2 vpermq $0xd8, %ymm0, %ymm0 vpermq $0xd8, %ymm2, %ymm2 vpmovmskb %ymm0, %edx vpmovmskb %ymm2, %eax movl %edx, (%rdi) movl %eax, 4(%rdi) vpsubw 128(%rsi), %ymm8, %ymm0 vpsubw 160(%rsi), %ymm8, %ymm1 vpsubw 192(%rsi), %ymm8, %ymm2 vpsubw 224(%rsi), %ymm8, %ymm3 vpsraw $15, %ymm0, %ymm4 vpsraw $15, %ymm1, %ymm5 vpsraw $15, %ymm2, %ymm6 vpsraw $15, %ymm3, %ymm7 vpxor %ymm4, %ymm0, %ymm0 vpxor %ymm5, %ymm1, %ymm1 vpxor %ymm6, %ymm2, %ymm2 vpxor %ymm7, %ymm3, %ymm3 vpaddw %ymm9, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm9, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpacksswb %ymm1, %ymm0, %ymm0 vpacksswb %ymm3, %ymm2, %ymm2 vpermq $0xd8, %ymm0, %ymm0 vpermq $0xd8, %ymm2, %ymm2 vpmovmskb %ymm0, %edx vpmovmskb %ymm2, %eax movl %edx, 8(%rdi) movl %eax, 12(%rdi) vpsubw 256(%rsi), %ymm8, %ymm0 vpsubw 288(%rsi), %ymm8, %ymm1 vpsubw 320(%rsi), %ymm8, %ymm2 vpsubw 352(%rsi), %ymm8, %ymm3 vpsraw $15, %ymm0, %ymm4 vpsraw $15, %ymm1, %ymm5 vpsraw $15, %ymm2, %ymm6 vpsraw $15, %ymm3, %ymm7 vpxor %ymm4, %ymm0, %ymm0 vpxor %ymm5, %ymm1, %ymm1 vpxor %ymm6, %ymm2, %ymm2 vpxor %ymm7, %ymm3, %ymm3 vpaddw %ymm9, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm9, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpacksswb %ymm1, %ymm0, %ymm0 vpacksswb %ymm3, %ymm2, %ymm2 vpermq $0xd8, %ymm0, %ymm0 vpermq $0xd8, %ymm2, %ymm2 vpmovmskb %ymm0, %edx vpmovmskb %ymm2, %eax movl %edx, 16(%rdi) movl %eax, 20(%rdi) vpsubw 384(%rsi), %ymm8, %ymm0 vpsubw 416(%rsi), %ymm8, %ymm1 vpsubw 448(%rsi), %ymm8, %ymm2 vpsubw 480(%rsi), %ymm8, %ymm3 vpsraw $15, %ymm0, %ymm4 vpsraw $15, %ymm1, %ymm5 vpsraw $15, %ymm2, %ymm6 vpsraw $15, %ymm3, %ymm7 vpxor %ymm4, %ymm0, %ymm0 vpxor %ymm5, %ymm1, %ymm1 vpxor %ymm6, %ymm2, %ymm2 vpxor %ymm7, %ymm3, %ymm3 vpaddw %ymm9, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm9, %ymm2, %ymm2 vpaddw %ymm9, %ymm3, %ymm3 vpacksswb %ymm1, %ymm0, %ymm0 vpacksswb %ymm3, %ymm2, %ymm2 vpermq $0xd8, %ymm0, %ymm0 vpermq $0xd8, %ymm2, %ymm2 vpmovmskb %ymm0, %edx vpmovmskb %ymm2, %eax movl %edx, 24(%rdi) movl %eax, 28(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_to_msg_avx2,.-mlkem_to_msg_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_from_bytes_avx2_shuf: .byte 0x00,0x01,0x02,0xff,0x03,0x04,0x05,0xff .byte 0x06,0x07,0x08,0xff,0x09,0x0a,0x0b,0xff .byte 0x04,0x05,0x06,0xff,0x07,0x08,0x09,0xff .byte 0x0a,0x0b,0x0c,0xff,0x0d,0x0e,0x0f,0xff #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_from_bytes_avx2_mask: .long 0x00000fff,0x00000fff,0x00000fff,0x00000fff .long 0x00000fff,0x00000fff,0x00000fff,0x00000fff #ifndef __APPLE__ .text .globl mlkem_from_bytes_avx2 .type mlkem_from_bytes_avx2,@function .align 16 mlkem_from_bytes_avx2: #else .section __TEXT,__text .globl _mlkem_from_bytes_avx2 .p2align 4 _mlkem_from_bytes_avx2: #endif /* __APPLE__ */ vmovdqu (%rsi), %ymm0 vmovdqu L_mlkem_from_bytes_avx2_shuf(%rip), %ymm12 vmovdqu L_mlkem_from_bytes_avx2_mask(%rip), %ymm13 vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 128(%rsi), %ymm4 vmovdqu 160(%rsi), %ymm5 vpermq $0xe9, %ymm5, %ymm7 vpermq $0x00, %ymm5, %ymm8 vpermq $62, %ymm4, %ymm6 vpermq $0x40, %ymm4, %ymm9 vpermq $3, %ymm3, %ymm5 vpermq $0x94, %ymm3, %ymm4 vpermq $0xe9, %ymm2, %ymm3 vpermq $0x00, %ymm2, %ymm10 vpermq $62, %ymm1, %ymm2 vpermq $0x40, %ymm1, %ymm11 vpermq $3, %ymm0, %ymm1 vpermq $0x94, %ymm0, %ymm0 vpblendd $0xc0, %ymm8, %ymm6, %ymm6 vpblendd $0xfc, %ymm9, %ymm5, %ymm5 vpblendd $0xc0, %ymm10, %ymm2, %ymm2 vpblendd $0xfc, %ymm11, %ymm1, %ymm1 vpshufb %ymm12, %ymm0, %ymm0 vpshufb %ymm12, %ymm1, %ymm1 vpshufb %ymm12, %ymm2, %ymm2 vpshufb %ymm12, %ymm3, %ymm3 vpshufb %ymm12, %ymm4, %ymm4 vpshufb %ymm12, %ymm5, %ymm5 vpshufb %ymm12, %ymm6, %ymm6 vpshufb %ymm12, %ymm7, %ymm7 vpandn %ymm0, %ymm13, %ymm8 vpandn %ymm1, %ymm13, %ymm9 vpandn %ymm2, %ymm13, %ymm10 vpandn %ymm3, %ymm13, %ymm11 vpand %ymm0, %ymm13, %ymm0 vpand %ymm1, %ymm13, %ymm1 vpand %ymm2, %ymm13, %ymm2 vpand %ymm3, %ymm13, %ymm3 vpslld $4, %ymm8, %ymm8 vpslld $4, %ymm9, %ymm9 vpslld $4, %ymm10, %ymm10 vpslld $4, %ymm11, %ymm11 vpor %ymm8, %ymm0, %ymm0 vpor %ymm9, %ymm1, %ymm1 vpor %ymm10, %ymm2, %ymm2 vpor %ymm11, %ymm3, %ymm3 vpandn %ymm4, %ymm13, %ymm8 vpandn %ymm5, %ymm13, %ymm9 vpandn %ymm6, %ymm13, %ymm10 vpandn %ymm7, %ymm13, %ymm11 vpand %ymm4, %ymm13, %ymm4 vpand %ymm5, %ymm13, %ymm5 vpand %ymm6, %ymm13, %ymm6 vpand %ymm7, %ymm13, %ymm7 vpslld $4, %ymm8, %ymm8 vpslld $4, %ymm9, %ymm9 vpslld $4, %ymm10, %ymm10 vpslld $4, %ymm11, %ymm11 vpor %ymm8, %ymm4, %ymm4 vpor %ymm9, %ymm5, %ymm5 vpor %ymm10, %ymm6, %ymm6 vpor %ymm11, %ymm7, %ymm7 vmovdqu %ymm0, (%rdi) vmovdqu %ymm1, 32(%rdi) vmovdqu %ymm2, 64(%rdi) vmovdqu %ymm3, 96(%rdi) vmovdqu %ymm4, 128(%rdi) vmovdqu %ymm5, 160(%rdi) vmovdqu %ymm6, 192(%rdi) vmovdqu %ymm7, 224(%rdi) vmovdqu 192(%rsi), %ymm0 vmovdqu 224(%rsi), %ymm1 vmovdqu 256(%rsi), %ymm2 vmovdqu 288(%rsi), %ymm3 vmovdqu 320(%rsi), %ymm4 vmovdqu 352(%rsi), %ymm5 vpermq $0xe9, %ymm5, %ymm7 vpermq $0x00, %ymm5, %ymm8 vpermq $62, %ymm4, %ymm6 vpermq $0x40, %ymm4, %ymm9 vpermq $3, %ymm3, %ymm5 vpermq $0x94, %ymm3, %ymm4 vpermq $0xe9, %ymm2, %ymm3 vpermq $0x00, %ymm2, %ymm10 vpermq $62, %ymm1, %ymm2 vpermq $0x40, %ymm1, %ymm11 vpermq $3, %ymm0, %ymm1 vpermq $0x94, %ymm0, %ymm0 vpblendd $0xc0, %ymm8, %ymm6, %ymm6 vpblendd $0xfc, %ymm9, %ymm5, %ymm5 vpblendd $0xc0, %ymm10, %ymm2, %ymm2 vpblendd $0xfc, %ymm11, %ymm1, %ymm1 vpshufb %ymm12, %ymm0, %ymm0 vpshufb %ymm12, %ymm1, %ymm1 vpshufb %ymm12, %ymm2, %ymm2 vpshufb %ymm12, %ymm3, %ymm3 vpshufb %ymm12, %ymm4, %ymm4 vpshufb %ymm12, %ymm5, %ymm5 vpshufb %ymm12, %ymm6, %ymm6 vpshufb %ymm12, %ymm7, %ymm7 vpandn %ymm0, %ymm13, %ymm8 vpandn %ymm1, %ymm13, %ymm9 vpandn %ymm2, %ymm13, %ymm10 vpandn %ymm3, %ymm13, %ymm11 vpand %ymm0, %ymm13, %ymm0 vpand %ymm1, %ymm13, %ymm1 vpand %ymm2, %ymm13, %ymm2 vpand %ymm3, %ymm13, %ymm3 vpslld $4, %ymm8, %ymm8 vpslld $4, %ymm9, %ymm9 vpslld $4, %ymm10, %ymm10 vpslld $4, %ymm11, %ymm11 vpor %ymm8, %ymm0, %ymm0 vpor %ymm9, %ymm1, %ymm1 vpor %ymm10, %ymm2, %ymm2 vpor %ymm11, %ymm3, %ymm3 vpandn %ymm4, %ymm13, %ymm8 vpandn %ymm5, %ymm13, %ymm9 vpandn %ymm6, %ymm13, %ymm10 vpandn %ymm7, %ymm13, %ymm11 vpand %ymm4, %ymm13, %ymm4 vpand %ymm5, %ymm13, %ymm5 vpand %ymm6, %ymm13, %ymm6 vpand %ymm7, %ymm13, %ymm7 vpslld $4, %ymm8, %ymm8 vpslld $4, %ymm9, %ymm9 vpslld $4, %ymm10, %ymm10 vpslld $4, %ymm11, %ymm11 vpor %ymm8, %ymm4, %ymm4 vpor %ymm9, %ymm5, %ymm5 vpor %ymm10, %ymm6, %ymm6 vpor %ymm11, %ymm7, %ymm7 vmovdqu %ymm0, 256(%rdi) vmovdqu %ymm1, 288(%rdi) vmovdqu %ymm2, 320(%rdi) vmovdqu %ymm3, 352(%rdi) vmovdqu %ymm4, 384(%rdi) vmovdqu %ymm5, 416(%rdi) vmovdqu %ymm6, 448(%rdi) vmovdqu %ymm7, 480(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_from_bytes_avx2,.-mlkem_from_bytes_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_to_bytes_avx2_mask: .long 0x00000fff,0x00000fff,0x00000fff,0x00000fff .long 0x00000fff,0x00000fff,0x00000fff,0x00000fff #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_to_bytes_avx2_shuf: .byte 0x00,0x01,0x02,0x04,0x05,0x06,0x08,0x09 .byte 0x0a,0x0c,0x0d,0x0e,0xff,0xff,0xff,0xff .byte 0x05,0x06,0x08,0x09,0x0a,0x0c,0x0d,0x0e .byte 0xff,0xff,0xff,0xff,0x00,0x01,0x02,0x04 #ifndef __APPLE__ .data #else .section __DATA,__data #endif /* __APPLE__ */ #ifndef __APPLE__ .align 16 #else .p2align 4 #endif /* __APPLE__ */ L_mlkem_to_bytes_avx2_perm: .long 0x00000000,0x00000001,0x00000002,0x00000007 .long 0x00000004,0x00000005,0x00000003,0x00000006 #ifndef __APPLE__ .text .globl mlkem_to_bytes_avx2 .type mlkem_to_bytes_avx2,@function .align 16 mlkem_to_bytes_avx2: #else .section __TEXT,__text .globl _mlkem_to_bytes_avx2 .p2align 4 _mlkem_to_bytes_avx2: #endif /* __APPLE__ */ vmovdqu mlkem_q(%rip), %ymm12 vmovdqu L_mlkem_to_bytes_avx2_mask(%rip), %ymm13 vmovdqu L_mlkem_to_bytes_avx2_shuf(%rip), %ymm14 vmovdqu L_mlkem_to_bytes_avx2_perm(%rip), %ymm15 vmovdqu (%rsi), %ymm0 vmovdqu 32(%rsi), %ymm1 vmovdqu 64(%rsi), %ymm2 vmovdqu 96(%rsi), %ymm3 vmovdqu 128(%rsi), %ymm4 vmovdqu 160(%rsi), %ymm5 vmovdqu 192(%rsi), %ymm6 vmovdqu 224(%rsi), %ymm7 vpsubw %ymm12, %ymm0, %ymm8 vpsubw %ymm12, %ymm1, %ymm9 vpsubw %ymm12, %ymm2, %ymm10 vpsubw %ymm12, %ymm3, %ymm11 vpsraw $15, %ymm8, %ymm0 vpsraw $15, %ymm9, %ymm1 vpsraw $15, %ymm10, %ymm2 vpsraw $15, %ymm11, %ymm3 vpand %ymm12, %ymm0, %ymm0 vpand %ymm12, %ymm1, %ymm1 vpand %ymm12, %ymm2, %ymm2 vpand %ymm12, %ymm3, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm10, %ymm2, %ymm2 vpaddw %ymm11, %ymm3, %ymm3 vpsubw %ymm12, %ymm4, %ymm8 vpsubw %ymm12, %ymm5, %ymm9 vpsubw %ymm12, %ymm6, %ymm10 vpsubw %ymm12, %ymm7, %ymm11 vpsraw $15, %ymm8, %ymm4 vpsraw $15, %ymm9, %ymm5 vpsraw $15, %ymm10, %ymm6 vpsraw $15, %ymm11, %ymm7 vpand %ymm12, %ymm4, %ymm4 vpand %ymm12, %ymm5, %ymm5 vpand %ymm12, %ymm6, %ymm6 vpand %ymm12, %ymm7, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpaddw %ymm10, %ymm6, %ymm6 vpaddw %ymm11, %ymm7, %ymm7 vpsrld $16, %ymm0, %ymm8 vpsrld $16, %ymm1, %ymm9 vpsrld $16, %ymm2, %ymm10 vpsrld $16, %ymm3, %ymm11 vpand %ymm0, %ymm13, %ymm0 vpand %ymm1, %ymm13, %ymm1 vpand %ymm2, %ymm13, %ymm2 vpand %ymm3, %ymm13, %ymm3 vpslld $12, %ymm8, %ymm8 vpslld $12, %ymm9, %ymm9 vpslld $12, %ymm10, %ymm10 vpslld $12, %ymm11, %ymm11 vpor %ymm8, %ymm0, %ymm0 vpor %ymm9, %ymm1, %ymm1 vpor %ymm10, %ymm2, %ymm2 vpor %ymm11, %ymm3, %ymm3 vpsrld $16, %ymm4, %ymm8 vpsrld $16, %ymm5, %ymm9 vpsrld $16, %ymm6, %ymm10 vpsrld $16, %ymm7, %ymm11 vpand %ymm4, %ymm13, %ymm4 vpand %ymm5, %ymm13, %ymm5 vpand %ymm6, %ymm13, %ymm6 vpand %ymm7, %ymm13, %ymm7 vpslld $12, %ymm8, %ymm8 vpslld $12, %ymm9, %ymm9 vpslld $12, %ymm10, %ymm10 vpslld $12, %ymm11, %ymm11 vpor %ymm8, %ymm4, %ymm4 vpor %ymm9, %ymm5, %ymm5 vpor %ymm10, %ymm6, %ymm6 vpor %ymm11, %ymm7, %ymm7 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm1, %ymm1 vpshufb %ymm14, %ymm2, %ymm2 vpshufb %ymm14, %ymm3, %ymm3 vpshufb %ymm14, %ymm4, %ymm4 vpshufb %ymm14, %ymm5, %ymm5 vpshufb %ymm14, %ymm6, %ymm6 vpshufb %ymm14, %ymm7, %ymm7 vpermd %ymm0, %ymm15, %ymm0 vpermd %ymm1, %ymm15, %ymm1 vpermd %ymm2, %ymm15, %ymm2 vpermd %ymm3, %ymm15, %ymm3 vpermd %ymm4, %ymm15, %ymm4 vpermd %ymm5, %ymm15, %ymm5 vpermd %ymm6, %ymm15, %ymm6 vpermd %ymm7, %ymm15, %ymm7 vpermq $2, %ymm6, %ymm8 vpermq $0x90, %ymm7, %ymm7 vpermq $9, %ymm5, %ymm9 vpermq $0x40, %ymm6, %ymm6 vpermq $0x00, %ymm5, %ymm5 vpblendd $63, %ymm4, %ymm5, %ymm5 vpermq $2, %ymm2, %ymm10 vpermq $0x90, %ymm3, %ymm4 vpermq $9, %ymm1, %ymm11 vpermq $0x40, %ymm2, %ymm3 vpermq $0x00, %ymm1, %ymm2 vpblendd $63, %ymm0, %ymm2, %ymm2 vpblendd $3, %ymm8, %ymm7, %ymm7 vpblendd $15, %ymm9, %ymm6, %ymm6 vpblendd $3, %ymm10, %ymm4, %ymm4 vpblendd $15, %ymm11, %ymm3, %ymm3 vmovdqu %ymm2, (%rdi) vmovdqu %ymm3, 32(%rdi) vmovdqu %ymm4, 64(%rdi) vmovdqu %ymm5, 96(%rdi) vmovdqu %ymm6, 128(%rdi) vmovdqu %ymm7, 160(%rdi) vmovdqu 256(%rsi), %ymm0 vmovdqu 288(%rsi), %ymm1 vmovdqu 320(%rsi), %ymm2 vmovdqu 352(%rsi), %ymm3 vmovdqu 384(%rsi), %ymm4 vmovdqu 416(%rsi), %ymm5 vmovdqu 448(%rsi), %ymm6 vmovdqu 480(%rsi), %ymm7 vpsubw %ymm12, %ymm0, %ymm8 vpsubw %ymm12, %ymm1, %ymm9 vpsubw %ymm12, %ymm2, %ymm10 vpsubw %ymm12, %ymm3, %ymm11 vpsraw $15, %ymm8, %ymm0 vpsraw $15, %ymm9, %ymm1 vpsraw $15, %ymm10, %ymm2 vpsraw $15, %ymm11, %ymm3 vpand %ymm12, %ymm0, %ymm0 vpand %ymm12, %ymm1, %ymm1 vpand %ymm12, %ymm2, %ymm2 vpand %ymm12, %ymm3, %ymm3 vpaddw %ymm8, %ymm0, %ymm0 vpaddw %ymm9, %ymm1, %ymm1 vpaddw %ymm10, %ymm2, %ymm2 vpaddw %ymm11, %ymm3, %ymm3 vpsubw %ymm12, %ymm4, %ymm8 vpsubw %ymm12, %ymm5, %ymm9 vpsubw %ymm12, %ymm6, %ymm10 vpsubw %ymm12, %ymm7, %ymm11 vpsraw $15, %ymm8, %ymm4 vpsraw $15, %ymm9, %ymm5 vpsraw $15, %ymm10, %ymm6 vpsraw $15, %ymm11, %ymm7 vpand %ymm12, %ymm4, %ymm4 vpand %ymm12, %ymm5, %ymm5 vpand %ymm12, %ymm6, %ymm6 vpand %ymm12, %ymm7, %ymm7 vpaddw %ymm8, %ymm4, %ymm4 vpaddw %ymm9, %ymm5, %ymm5 vpaddw %ymm10, %ymm6, %ymm6 vpaddw %ymm11, %ymm7, %ymm7 vpsrld $16, %ymm0, %ymm8 vpsrld $16, %ymm1, %ymm9 vpsrld $16, %ymm2, %ymm10 vpsrld $16, %ymm3, %ymm11 vpand %ymm0, %ymm13, %ymm0 vpand %ymm1, %ymm13, %ymm1 vpand %ymm2, %ymm13, %ymm2 vpand %ymm3, %ymm13, %ymm3 vpslld $12, %ymm8, %ymm8 vpslld $12, %ymm9, %ymm9 vpslld $12, %ymm10, %ymm10 vpslld $12, %ymm11, %ymm11 vpor %ymm8, %ymm0, %ymm0 vpor %ymm9, %ymm1, %ymm1 vpor %ymm10, %ymm2, %ymm2 vpor %ymm11, %ymm3, %ymm3 vpsrld $16, %ymm4, %ymm8 vpsrld $16, %ymm5, %ymm9 vpsrld $16, %ymm6, %ymm10 vpsrld $16, %ymm7, %ymm11 vpand %ymm4, %ymm13, %ymm4 vpand %ymm5, %ymm13, %ymm5 vpand %ymm6, %ymm13, %ymm6 vpand %ymm7, %ymm13, %ymm7 vpslld $12, %ymm8, %ymm8 vpslld $12, %ymm9, %ymm9 vpslld $12, %ymm10, %ymm10 vpslld $12, %ymm11, %ymm11 vpor %ymm8, %ymm4, %ymm4 vpor %ymm9, %ymm5, %ymm5 vpor %ymm10, %ymm6, %ymm6 vpor %ymm11, %ymm7, %ymm7 vpshufb %ymm14, %ymm0, %ymm0 vpshufb %ymm14, %ymm1, %ymm1 vpshufb %ymm14, %ymm2, %ymm2 vpshufb %ymm14, %ymm3, %ymm3 vpshufb %ymm14, %ymm4, %ymm4 vpshufb %ymm14, %ymm5, %ymm5 vpshufb %ymm14, %ymm6, %ymm6 vpshufb %ymm14, %ymm7, %ymm7 vpermd %ymm0, %ymm15, %ymm0 vpermd %ymm1, %ymm15, %ymm1 vpermd %ymm2, %ymm15, %ymm2 vpermd %ymm3, %ymm15, %ymm3 vpermd %ymm4, %ymm15, %ymm4 vpermd %ymm5, %ymm15, %ymm5 vpermd %ymm6, %ymm15, %ymm6 vpermd %ymm7, %ymm15, %ymm7 vpermq $2, %ymm6, %ymm8 vpermq $0x90, %ymm7, %ymm7 vpermq $9, %ymm5, %ymm9 vpermq $0x40, %ymm6, %ymm6 vpermq $0x00, %ymm5, %ymm5 vpblendd $63, %ymm4, %ymm5, %ymm5 vpermq $2, %ymm2, %ymm10 vpermq $0x90, %ymm3, %ymm4 vpermq $9, %ymm1, %ymm11 vpermq $0x40, %ymm2, %ymm3 vpermq $0x00, %ymm1, %ymm2 vpblendd $63, %ymm0, %ymm2, %ymm2 vpblendd $3, %ymm8, %ymm7, %ymm7 vpblendd $15, %ymm9, %ymm6, %ymm6 vpblendd $3, %ymm10, %ymm4, %ymm4 vpblendd $15, %ymm11, %ymm3, %ymm3 vmovdqu %ymm2, 192(%rdi) vmovdqu %ymm3, 224(%rdi) vmovdqu %ymm4, 256(%rdi) vmovdqu %ymm5, 288(%rdi) vmovdqu %ymm6, 320(%rdi) vmovdqu %ymm7, 352(%rdi) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_to_bytes_avx2,.-mlkem_to_bytes_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_cmp_avx2 .type mlkem_cmp_avx2,@function .align 16 mlkem_cmp_avx2: #else .section __TEXT,__text .globl _mlkem_cmp_avx2 .p2align 4 _mlkem_cmp_avx2: #endif /* __APPLE__ */ vpxor %ymm2, %ymm2, %ymm2 vpxor %ymm3, %ymm3, %ymm3 movl $0x00, %ecx movl $-1, %r8d vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vpxor (%rsi), %ymm0, %ymm0 vpxor 32(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 64(%rdi), %ymm0 vmovdqu 96(%rdi), %ymm1 vpxor 64(%rsi), %ymm0, %ymm0 vpxor 96(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 128(%rdi), %ymm0 vmovdqu 160(%rdi), %ymm1 vpxor 128(%rsi), %ymm0, %ymm0 vpxor 160(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 192(%rdi), %ymm0 vmovdqu 224(%rdi), %ymm1 vpxor 192(%rsi), %ymm0, %ymm0 vpxor 224(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 256(%rdi), %ymm0 vmovdqu 288(%rdi), %ymm1 vpxor 256(%rsi), %ymm0, %ymm0 vpxor 288(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 320(%rdi), %ymm0 vmovdqu 352(%rdi), %ymm1 vpxor 320(%rsi), %ymm0, %ymm0 vpxor 352(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 384(%rdi), %ymm0 vmovdqu 416(%rdi), %ymm1 vpxor 384(%rsi), %ymm0, %ymm0 vpxor 416(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 448(%rdi), %ymm0 vmovdqu 480(%rdi), %ymm1 vpxor 448(%rsi), %ymm0, %ymm0 vpxor 480(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 512(%rdi), %ymm0 vmovdqu 544(%rdi), %ymm1 vpxor 512(%rsi), %ymm0, %ymm0 vpxor 544(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 576(%rdi), %ymm0 vmovdqu 608(%rdi), %ymm1 vpxor 576(%rsi), %ymm0, %ymm0 vpxor 608(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 640(%rdi), %ymm0 vmovdqu 672(%rdi), %ymm1 vpxor 640(%rsi), %ymm0, %ymm0 vpxor 672(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 704(%rdi), %ymm0 vmovdqu 736(%rdi), %ymm1 vpxor 704(%rsi), %ymm0, %ymm0 vpxor 736(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 subl $0x300, %edx jz L_mlkem_cmp_avx2_done vmovdqu 768(%rdi), %ymm0 vmovdqu 800(%rdi), %ymm1 vpxor 768(%rsi), %ymm0, %ymm0 vpxor 800(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 832(%rdi), %ymm0 vmovdqu 864(%rdi), %ymm1 vpxor 832(%rsi), %ymm0, %ymm0 vpxor 864(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 896(%rdi), %ymm0 vmovdqu 928(%rdi), %ymm1 vpxor 896(%rsi), %ymm0, %ymm0 vpxor 928(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 960(%rdi), %ymm0 vmovdqu 992(%rdi), %ymm1 vpxor 960(%rsi), %ymm0, %ymm0 vpxor 992(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1024(%rdi), %ymm0 vmovdqu 1056(%rdi), %ymm1 vpxor 1024(%rsi), %ymm0, %ymm0 vpxor 1056(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 subl $0x140, %edx jz L_mlkem_cmp_avx2_done vmovdqu 1088(%rdi), %ymm0 vmovdqu 1120(%rdi), %ymm1 vpxor 1088(%rsi), %ymm0, %ymm0 vpxor 1120(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1152(%rdi), %ymm0 vmovdqu 1184(%rdi), %ymm1 vpxor 1152(%rsi), %ymm0, %ymm0 vpxor 1184(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1216(%rdi), %ymm0 vmovdqu 1248(%rdi), %ymm1 vpxor 1216(%rsi), %ymm0, %ymm0 vpxor 1248(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1280(%rdi), %ymm0 vmovdqu 1312(%rdi), %ymm1 vpxor 1280(%rsi), %ymm0, %ymm0 vpxor 1312(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1344(%rdi), %ymm0 vmovdqu 1376(%rdi), %ymm1 vpxor 1344(%rsi), %ymm0, %ymm0 vpxor 1376(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1408(%rdi), %ymm0 vmovdqu 1440(%rdi), %ymm1 vpxor 1408(%rsi), %ymm0, %ymm0 vpxor 1440(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1472(%rdi), %ymm0 vmovdqu 1504(%rdi), %ymm1 vpxor 1472(%rsi), %ymm0, %ymm0 vpxor 1504(%rsi), %ymm1, %ymm1 vpor %ymm0, %ymm2, %ymm2 vpor %ymm1, %ymm3, %ymm3 vmovdqu 1536(%rdi), %ymm0 vpxor 1536(%rsi), %ymm0, %ymm0 vpor %ymm0, %ymm2, %ymm2 L_mlkem_cmp_avx2_done: vpor %ymm3, %ymm2, %ymm2 vptest %ymm2, %ymm2 cmovzl %ecx, %eax cmovnzl %r8d, %eax vzeroupper repz retq #ifndef __APPLE__ .size mlkem_cmp_avx2,.-mlkem_cmp_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_redistribute_21_rand_avx2 .type mlkem_redistribute_21_rand_avx2,@function .align 16 mlkem_redistribute_21_rand_avx2: #else .section __TEXT,__text .globl _mlkem_redistribute_21_rand_avx2 .p2align 4 _mlkem_redistribute_21_rand_avx2: #endif /* __APPLE__ */ vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vmovdqu 192(%rdi), %ymm6 vmovdqu 224(%rdi), %ymm7 vmovdqu 256(%rdi), %ymm8 vmovdqu 288(%rdi), %ymm9 vmovdqu 320(%rdi), %ymm10 vmovdqu 352(%rdi), %ymm11 vpunpcklqdq %ymm1, %ymm0, %ymm12 vpunpckhqdq %ymm1, %ymm0, %ymm13 vpunpcklqdq %ymm3, %ymm2, %ymm14 vpunpckhqdq %ymm3, %ymm2, %ymm15 vperm2i128 $32, %ymm14, %ymm12, %ymm0 vperm2i128 $32, %ymm15, %ymm13, %ymm1 vperm2i128 $49, %ymm14, %ymm12, %ymm2 vperm2i128 $49, %ymm15, %ymm13, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm12 vpunpckhqdq %ymm5, %ymm4, %ymm13 vpunpcklqdq %ymm7, %ymm6, %ymm14 vpunpckhqdq %ymm7, %ymm6, %ymm15 vperm2i128 $32, %ymm14, %ymm12, %ymm4 vperm2i128 $32, %ymm15, %ymm13, %ymm5 vperm2i128 $49, %ymm14, %ymm12, %ymm6 vperm2i128 $49, %ymm15, %ymm13, %ymm7 vpunpcklqdq %ymm9, %ymm8, %ymm12 vpunpckhqdq %ymm9, %ymm8, %ymm13 vpunpcklqdq %ymm11, %ymm10, %ymm14 vpunpckhqdq %ymm11, %ymm10, %ymm15 vperm2i128 $32, %ymm14, %ymm12, %ymm8 vperm2i128 $32, %ymm15, %ymm13, %ymm9 vperm2i128 $49, %ymm14, %ymm12, %ymm10 vperm2i128 $49, %ymm15, %ymm13, %ymm11 vmovdqu %ymm0, (%rsi) vmovdqu %ymm4, 32(%rsi) vmovdqu %ymm8, 64(%rsi) vmovdqu %ymm1, (%rdx) vmovdqu %ymm5, 32(%rdx) vmovdqu %ymm9, 64(%rdx) vmovdqu %ymm2, (%rcx) vmovdqu %ymm6, 32(%rcx) vmovdqu %ymm10, 64(%rcx) vmovdqu %ymm3, (%r8) vmovdqu %ymm7, 32(%r8) vmovdqu %ymm11, 64(%r8) vmovdqu 384(%rdi), %ymm0 vmovdqu 416(%rdi), %ymm1 vmovdqu 448(%rdi), %ymm2 vmovdqu 480(%rdi), %ymm3 vmovdqu 512(%rdi), %ymm4 vmovdqu 544(%rdi), %ymm5 vmovdqu 576(%rdi), %ymm6 vmovdqu 608(%rdi), %ymm7 movq 640(%rdi), %rax movq 648(%rdi), %r9 movq 656(%rdi), %r10 movq 664(%rdi), %r11 vpunpcklqdq %ymm1, %ymm0, %ymm12 vpunpckhqdq %ymm1, %ymm0, %ymm13 vpunpcklqdq %ymm3, %ymm2, %ymm14 vpunpckhqdq %ymm3, %ymm2, %ymm15 vperm2i128 $32, %ymm14, %ymm12, %ymm0 vperm2i128 $32, %ymm15, %ymm13, %ymm1 vperm2i128 $49, %ymm14, %ymm12, %ymm2 vperm2i128 $49, %ymm15, %ymm13, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm12 vpunpckhqdq %ymm5, %ymm4, %ymm13 vpunpcklqdq %ymm7, %ymm6, %ymm14 vpunpckhqdq %ymm7, %ymm6, %ymm15 vperm2i128 $32, %ymm14, %ymm12, %ymm4 vperm2i128 $32, %ymm15, %ymm13, %ymm5 vperm2i128 $49, %ymm14, %ymm12, %ymm6 vperm2i128 $49, %ymm15, %ymm13, %ymm7 vmovdqu %ymm0, 96(%rsi) vmovdqu %ymm4, 128(%rsi) movq %rax, 160(%rsi) vmovdqu %ymm1, 96(%rdx) vmovdqu %ymm5, 128(%rdx) movq %r9, 160(%rdx) vmovdqu %ymm2, 96(%rcx) vmovdqu %ymm6, 128(%rcx) movq %r10, 160(%rcx) vmovdqu %ymm3, 96(%r8) vmovdqu %ymm7, 128(%r8) movq %r11, 160(%r8) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_redistribute_21_rand_avx2,.-mlkem_redistribute_21_rand_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_redistribute_17_rand_avx2 .type mlkem_redistribute_17_rand_avx2,@function .align 16 mlkem_redistribute_17_rand_avx2: #else .section __TEXT,__text .globl _mlkem_redistribute_17_rand_avx2 .p2align 4 _mlkem_redistribute_17_rand_avx2: #endif /* __APPLE__ */ vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vmovdqu 192(%rdi), %ymm6 vmovdqu 224(%rdi), %ymm7 vpunpcklqdq %ymm1, %ymm0, %ymm8 vpunpckhqdq %ymm1, %ymm0, %ymm9 vpunpcklqdq %ymm3, %ymm2, %ymm10 vpunpckhqdq %ymm3, %ymm2, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm0 vperm2i128 $32, %ymm11, %ymm9, %ymm1 vperm2i128 $49, %ymm10, %ymm8, %ymm2 vperm2i128 $49, %ymm11, %ymm9, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm8 vpunpckhqdq %ymm5, %ymm4, %ymm9 vpunpcklqdq %ymm7, %ymm6, %ymm10 vpunpckhqdq %ymm7, %ymm6, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm4 vperm2i128 $32, %ymm11, %ymm9, %ymm5 vperm2i128 $49, %ymm10, %ymm8, %ymm6 vperm2i128 $49, %ymm11, %ymm9, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm4, 32(%rsi) vmovdqu %ymm1, (%rdx) vmovdqu %ymm5, 32(%rdx) vmovdqu %ymm2, (%rcx) vmovdqu %ymm6, 32(%rcx) vmovdqu %ymm3, (%r8) vmovdqu %ymm7, 32(%r8) vmovdqu 256(%rdi), %ymm0 vmovdqu 288(%rdi), %ymm1 vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vmovdqu 448(%rdi), %ymm6 vmovdqu 480(%rdi), %ymm7 movq 512(%rdi), %rax movq 520(%rdi), %r9 movq 528(%rdi), %r10 movq 536(%rdi), %r11 vpunpcklqdq %ymm1, %ymm0, %ymm8 vpunpckhqdq %ymm1, %ymm0, %ymm9 vpunpcklqdq %ymm3, %ymm2, %ymm10 vpunpckhqdq %ymm3, %ymm2, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm0 vperm2i128 $32, %ymm11, %ymm9, %ymm1 vperm2i128 $49, %ymm10, %ymm8, %ymm2 vperm2i128 $49, %ymm11, %ymm9, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm8 vpunpckhqdq %ymm5, %ymm4, %ymm9 vpunpcklqdq %ymm7, %ymm6, %ymm10 vpunpckhqdq %ymm7, %ymm6, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm4 vperm2i128 $32, %ymm11, %ymm9, %ymm5 vperm2i128 $49, %ymm10, %ymm8, %ymm6 vperm2i128 $49, %ymm11, %ymm9, %ymm7 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm4, 96(%rsi) movq %rax, 128(%rsi) vmovdqu %ymm1, 64(%rdx) vmovdqu %ymm5, 96(%rdx) movq %r9, 128(%rdx) vmovdqu %ymm2, 64(%rcx) vmovdqu %ymm6, 96(%rcx) movq %r10, 128(%rcx) vmovdqu %ymm3, 64(%r8) vmovdqu %ymm7, 96(%r8) movq %r11, 128(%r8) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_redistribute_17_rand_avx2,.-mlkem_redistribute_17_rand_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_redistribute_16_rand_avx2 .type mlkem_redistribute_16_rand_avx2,@function .align 16 mlkem_redistribute_16_rand_avx2: #else .section __TEXT,__text .globl _mlkem_redistribute_16_rand_avx2 .p2align 4 _mlkem_redistribute_16_rand_avx2: #endif /* __APPLE__ */ vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vmovdqu 192(%rdi), %ymm6 vmovdqu 224(%rdi), %ymm7 vpunpcklqdq %ymm1, %ymm0, %ymm8 vpunpckhqdq %ymm1, %ymm0, %ymm9 vpunpcklqdq %ymm3, %ymm2, %ymm10 vpunpckhqdq %ymm3, %ymm2, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm0 vperm2i128 $32, %ymm11, %ymm9, %ymm1 vperm2i128 $49, %ymm10, %ymm8, %ymm2 vperm2i128 $49, %ymm11, %ymm9, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm8 vpunpckhqdq %ymm5, %ymm4, %ymm9 vpunpcklqdq %ymm7, %ymm6, %ymm10 vpunpckhqdq %ymm7, %ymm6, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm4 vperm2i128 $32, %ymm11, %ymm9, %ymm5 vperm2i128 $49, %ymm10, %ymm8, %ymm6 vperm2i128 $49, %ymm11, %ymm9, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm4, 32(%rsi) vmovdqu %ymm1, (%rdx) vmovdqu %ymm5, 32(%rdx) vmovdqu %ymm2, (%rcx) vmovdqu %ymm6, 32(%rcx) vmovdqu %ymm3, (%r8) vmovdqu %ymm7, 32(%r8) vmovdqu 256(%rdi), %ymm0 vmovdqu 288(%rdi), %ymm1 vmovdqu 320(%rdi), %ymm2 vmovdqu 352(%rdi), %ymm3 vmovdqu 384(%rdi), %ymm4 vmovdqu 416(%rdi), %ymm5 vmovdqu 448(%rdi), %ymm6 vmovdqu 480(%rdi), %ymm7 vpunpcklqdq %ymm1, %ymm0, %ymm8 vpunpckhqdq %ymm1, %ymm0, %ymm9 vpunpcklqdq %ymm3, %ymm2, %ymm10 vpunpckhqdq %ymm3, %ymm2, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm0 vperm2i128 $32, %ymm11, %ymm9, %ymm1 vperm2i128 $49, %ymm10, %ymm8, %ymm2 vperm2i128 $49, %ymm11, %ymm9, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm8 vpunpckhqdq %ymm5, %ymm4, %ymm9 vpunpcklqdq %ymm7, %ymm6, %ymm10 vpunpckhqdq %ymm7, %ymm6, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm4 vperm2i128 $32, %ymm11, %ymm9, %ymm5 vperm2i128 $49, %ymm10, %ymm8, %ymm6 vperm2i128 $49, %ymm11, %ymm9, %ymm7 vmovdqu %ymm0, 64(%rsi) vmovdqu %ymm4, 96(%rsi) vmovdqu %ymm1, 64(%rdx) vmovdqu %ymm5, 96(%rdx) vmovdqu %ymm2, 64(%rcx) vmovdqu %ymm6, 96(%rcx) vmovdqu %ymm3, 64(%r8) vmovdqu %ymm7, 96(%r8) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_redistribute_16_rand_avx2,.-mlkem_redistribute_16_rand_avx2 #endif /* __APPLE__ */ #ifndef __APPLE__ .text .globl mlkem_redistribute_8_rand_avx2 .type mlkem_redistribute_8_rand_avx2,@function .align 16 mlkem_redistribute_8_rand_avx2: #else .section __TEXT,__text .globl _mlkem_redistribute_8_rand_avx2 .p2align 4 _mlkem_redistribute_8_rand_avx2: #endif /* __APPLE__ */ vmovdqu (%rdi), %ymm0 vmovdqu 32(%rdi), %ymm1 vmovdqu 64(%rdi), %ymm2 vmovdqu 96(%rdi), %ymm3 vmovdqu 128(%rdi), %ymm4 vmovdqu 160(%rdi), %ymm5 vmovdqu 192(%rdi), %ymm6 vmovdqu 224(%rdi), %ymm7 vpunpcklqdq %ymm1, %ymm0, %ymm8 vpunpckhqdq %ymm1, %ymm0, %ymm9 vpunpcklqdq %ymm3, %ymm2, %ymm10 vpunpckhqdq %ymm3, %ymm2, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm0 vperm2i128 $32, %ymm11, %ymm9, %ymm1 vperm2i128 $49, %ymm10, %ymm8, %ymm2 vperm2i128 $49, %ymm11, %ymm9, %ymm3 vpunpcklqdq %ymm5, %ymm4, %ymm8 vpunpckhqdq %ymm5, %ymm4, %ymm9 vpunpcklqdq %ymm7, %ymm6, %ymm10 vpunpckhqdq %ymm7, %ymm6, %ymm11 vperm2i128 $32, %ymm10, %ymm8, %ymm4 vperm2i128 $32, %ymm11, %ymm9, %ymm5 vperm2i128 $49, %ymm10, %ymm8, %ymm6 vperm2i128 $49, %ymm11, %ymm9, %ymm7 vmovdqu %ymm0, (%rsi) vmovdqu %ymm4, 32(%rsi) vmovdqu %ymm1, (%rdx) vmovdqu %ymm5, 32(%rdx) vmovdqu %ymm2, (%rcx) vmovdqu %ymm6, 32(%rcx) vmovdqu %ymm3, (%r8) vmovdqu %ymm7, 32(%r8) vzeroupper repz retq #ifndef __APPLE__ .size mlkem_redistribute_8_rand_avx2,.-mlkem_redistribute_8_rand_avx2 #endif /* __APPLE__ */ #endif /* HAVE_INTEL_AVX2 */ #endif /* WOLFSSL_HAVE_MLKEM */ #if defined(__linux__) && defined(__ELF__) .section .note.GNU-stack,"",%progbits #endif