#![allow(non_upper_case_globals, unused_macros, unused_imports)]
use crate::low::macros::*;
pub(crate) fn bignum_kmul_16_32(z: &mut [u64], x: &[u64], y: &[u64], t: &mut [u64; 32]) {
debug_assert!(z.len() == 32);
debug_assert!(x.len() == 16);
debug_assert!(y.len() == 16);
unsafe {
core::arch::asm!(
Q!(" stp " "x19, x20, [sp, #-16] !"),
Q!(" stp " "x21, x22, [sp, #-16] !"),
Q!(" stp " "x23, x24, [sp, #-16] !"),
Q!(" stp " "x25, x26, [sp, #-16] !"),
Q!(" stp " "x27, x28, [sp, #-16] !"),
Q!(" stp " "x29, x30, [sp, #-16] !"),
Q!(" mov " "x25, x0"),
Q!(" mov " "x26, x1"),
Q!(" mov " "x27, x2"),
Q!(" mov " "x28, x3"),
Q!(" bl " Label!("bignum_kmul_16_32_local_mul_8_16", 2, After)),
Q!(" ldp " "x10, x11, [x26]"),
Q!(" ldp " "x8, x9, [x26, #64]"),
Q!(" subs " "x10, x10, x8"),
Q!(" sbcs " "x11, x11, x9"),
Q!(" ldp " "x12, x13, [x26, #16]"),
Q!(" ldp " "x8, x9, [x26, #80]"),
Q!(" sbcs " "x12, x12, x8"),
Q!(" sbcs " "x13, x13, x9"),
Q!(" ldp " "x14, x15, [x26, #32]"),
Q!(" ldp " "x8, x9, [x26, #96]"),
Q!(" sbcs " "x14, x14, x8"),
Q!(" sbcs " "x15, x15, x9"),
Q!(" ldp " "x16, x17, [x26, #48]"),
Q!(" ldp " "x8, x9, [x26, #112]"),
Q!(" sbcs " "x16, x16, x8"),
Q!(" sbcs " "x17, x17, x9"),
Q!(" csetm " "x29, cc"),
Q!(" cmn " "x29, x29"),
Q!(" eor " "x10, x10, x29"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" eor " "x11, x11, x29"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x28]"),
Q!(" eor " "x12, x12, x29"),
Q!(" adcs " "x12, x12, xzr"),
Q!(" eor " "x13, x13, x29"),
Q!(" adcs " "x13, x13, xzr"),
Q!(" stp " "x12, x13, [x28, #16]"),
Q!(" eor " "x14, x14, x29"),
Q!(" adcs " "x14, x14, xzr"),
Q!(" eor " "x15, x15, x29"),
Q!(" adcs " "x15, x15, xzr"),
Q!(" stp " "x14, x15, [x28, #32]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x16, x16, xzr"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x17, x17, xzr"),
Q!(" stp " "x16, x17, [x28, #48]"),
Q!(" add " "x0, x25, #0x80"),
Q!(" add " "x1, x26, #0x40"),
Q!(" add " "x2, x27, #0x40"),
Q!(" bl " Label!("bignum_kmul_16_32_local_mul_8_16", 2, After)),
Q!(" ldp " "x10, x11, [x27]"),
Q!(" ldp " "x8, x9, [x27, #64]"),
Q!(" subs " "x10, x8, x10"),
Q!(" sbcs " "x11, x9, x11"),
Q!(" ldp " "x12, x13, [x27, #16]"),
Q!(" ldp " "x8, x9, [x27, #80]"),
Q!(" sbcs " "x12, x8, x12"),
Q!(" sbcs " "x13, x9, x13"),
Q!(" ldp " "x14, x15, [x27, #32]"),
Q!(" ldp " "x8, x9, [x27, #96]"),
Q!(" sbcs " "x14, x8, x14"),
Q!(" sbcs " "x15, x9, x15"),
Q!(" ldp " "x16, x17, [x27, #48]"),
Q!(" ldp " "x8, x9, [x27, #112]"),
Q!(" sbcs " "x16, x8, x16"),
Q!(" sbcs " "x17, x9, x17"),
Q!(" csetm " "x19, cc"),
Q!(" cmn " "x19, x19"),
Q!(" eor " "x10, x10, x19"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" eor " "x11, x11, x19"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x28, #64]"),
Q!(" eor " "x12, x12, x19"),
Q!(" adcs " "x12, x12, xzr"),
Q!(" eor " "x13, x13, x19"),
Q!(" adcs " "x13, x13, xzr"),
Q!(" stp " "x12, x13, [x28, #80]"),
Q!(" eor " "x14, x14, x19"),
Q!(" adcs " "x14, x14, xzr"),
Q!(" eor " "x15, x15, x19"),
Q!(" adcs " "x15, x15, xzr"),
Q!(" stp " "x14, x15, [x28, #96]"),
Q!(" eor " "x16, x16, x19"),
Q!(" adcs " "x16, x16, xzr"),
Q!(" eor " "x17, x17, x19"),
Q!(" adcs " "x17, x17, xzr"),
Q!(" stp " "x16, x17, [x28, #112]"),
Q!(" eor " "x29, x29, x19"),
Q!(" ldp " "x10, x11, [x25, #128]"),
Q!(" ldp " "x12, x13, [x25, #64]"),
Q!(" adds " "x10, x10, x12"),
Q!(" adcs " "x11, x11, x13"),
Q!(" stp " "x10, x11, [x25, #128]"),
Q!(" ldp " "x10, x11, [x25, #144]"),
Q!(" ldp " "x12, x13, [x25, #80]"),
Q!(" adcs " "x10, x10, x12"),
Q!(" adcs " "x11, x11, x13"),
Q!(" stp " "x10, x11, [x25, #144]"),
Q!(" ldp " "x10, x11, [x25, #160]"),
Q!(" ldp " "x12, x13, [x25, #96]"),
Q!(" adcs " "x10, x10, x12"),
Q!(" adcs " "x11, x11, x13"),
Q!(" stp " "x10, x11, [x25, #160]"),
Q!(" ldp " "x10, x11, [x25, #176]"),
Q!(" ldp " "x12, x13, [x25, #112]"),
Q!(" adcs " "x10, x10, x12"),
Q!(" adcs " "x11, x11, x13"),
Q!(" stp " "x10, x11, [x25, #176]"),
Q!(" ldp " "x10, x11, [x25, #192]"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x25, #192]"),
Q!(" ldp " "x10, x11, [x25, #208]"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x25, #208]"),
Q!(" ldp " "x10, x11, [x25, #224]"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x25, #224]"),
Q!(" ldp " "x10, x11, [x25, #240]"),
Q!(" adcs " "x10, x10, xzr"),
Q!(" adcs " "x11, x11, xzr"),
Q!(" stp " "x10, x11, [x25, #240]"),
Q!(" add " "x0, x28, #0x80"),
Q!(" mov " "x1, x28"),
Q!(" add " "x2, x28, #0x40"),
Q!(" bl " Label!("bignum_kmul_16_32_local_mul_8_16", 2, After)),
Q!(" ldp " "x0, x1, [x25]"),
Q!(" ldp " "x16, x17, [x25, #128]"),
Q!(" adds " "x0, x0, x16"),
Q!(" adcs " "x1, x1, x17"),
Q!(" ldp " "x2, x3, [x25, #16]"),
Q!(" ldp " "x16, x17, [x25, #144]"),
Q!(" adcs " "x2, x2, x16"),
Q!(" adcs " "x3, x3, x17"),
Q!(" ldp " "x4, x5, [x25, #32]"),
Q!(" ldp " "x16, x17, [x25, #160]"),
Q!(" adcs " "x4, x4, x16"),
Q!(" adcs " "x5, x5, x17"),
Q!(" ldp " "x6, x7, [x25, #48]"),
Q!(" ldp " "x16, x17, [x25, #176]"),
Q!(" adcs " "x6, x6, x16"),
Q!(" adcs " "x7, x7, x17"),
Q!(" ldp " "x8, x9, [x25, #128]"),
Q!(" ldp " "x16, x17, [x25, #192]"),
Q!(" adcs " "x8, x8, x16"),
Q!(" adcs " "x9, x9, x17"),
Q!(" ldp " "x10, x11, [x25, #144]"),
Q!(" ldp " "x16, x17, [x25, #208]"),
Q!(" adcs " "x10, x10, x16"),
Q!(" adcs " "x11, x11, x17"),
Q!(" ldp " "x12, x13, [x25, #160]"),
Q!(" ldp " "x16, x17, [x25, #224]"),
Q!(" adcs " "x12, x12, x16"),
Q!(" adcs " "x13, x13, x17"),
Q!(" ldp " "x14, x15, [x25, #176]"),
Q!(" ldp " "x16, x17, [x25, #240]"),
Q!(" adcs " "x14, x14, x16"),
Q!(" adcs " "x15, x15, x17"),
Q!(" cset " "x26, cs"),
Q!(" cmn " "x29, x29"),
Q!(" ldp " "x16, x17, [x28, #128]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x0, x0, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x1, x1, x17"),
Q!(" stp " "x0, x1, [x25, #64]"),
Q!(" ldp " "x16, x17, [x28, #144]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x2, x2, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x3, x3, x17"),
Q!(" stp " "x2, x3, [x25, #80]"),
Q!(" ldp " "x16, x17, [x28, #160]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x4, x4, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x5, x5, x17"),
Q!(" stp " "x4, x5, [x25, #96]"),
Q!(" ldp " "x16, x17, [x28, #176]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x6, x6, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x7, x7, x17"),
Q!(" stp " "x6, x7, [x25, #112]"),
Q!(" ldp " "x16, x17, [x28, #192]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x8, x8, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x9, x9, x17"),
Q!(" stp " "x8, x9, [x25, #128]"),
Q!(" ldp " "x16, x17, [x28, #208]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x10, x10, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x11, x11, x17"),
Q!(" stp " "x10, x11, [x25, #144]"),
Q!(" ldp " "x16, x17, [x28, #224]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x12, x12, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x13, x13, x17"),
Q!(" stp " "x12, x13, [x25, #160]"),
Q!(" ldp " "x16, x17, [x28, #240]"),
Q!(" eor " "x16, x16, x29"),
Q!(" adcs " "x14, x14, x16"),
Q!(" eor " "x17, x17, x29"),
Q!(" adcs " "x15, x15, x17"),
Q!(" stp " "x14, x15, [x25, #176]"),
Q!(" adcs " "x27, x29, x26"),
Q!(" adc " "x28, x29, xzr"),
Q!(" ldp " "x10, x11, [x25, #192]"),
Q!(" adds " "x10, x10, x27"),
Q!(" adcs " "x11, x11, x28"),
Q!(" stp " "x10, x11, [x25, #192]"),
Q!(" ldp " "x10, x11, [x25, #208]"),
Q!(" adcs " "x10, x10, x28"),
Q!(" adcs " "x11, x11, x28"),
Q!(" stp " "x10, x11, [x25, #208]"),
Q!(" ldp " "x10, x11, [x25, #224]"),
Q!(" adcs " "x10, x10, x28"),
Q!(" adcs " "x11, x11, x28"),
Q!(" stp " "x10, x11, [x25, #224]"),
Q!(" ldp " "x10, x11, [x25, #240]"),
Q!(" adcs " "x10, x10, x28"),
Q!(" adcs " "x11, x11, x28"),
Q!(" stp " "x10, x11, [x25, #240]"),
Q!(" ldp " "x29, x30, [sp], #16"),
Q!(" ldp " "x27, x28, [sp], #16"),
Q!(" ldp " "x25, x26, [sp], #16"),
Q!(" ldp " "x23, x24, [sp], #16"),
Q!(" ldp " "x21, x22, [sp], #16"),
Q!(" ldp " "x19, x20, [sp], #16"),
Q!(" b " Label!("hoist_finish", 3, After)),
Q!(Label!("bignum_kmul_16_32_local_mul_8_16", 2) ":"),
Q!(" ldp " "x3, x4, [x1]"),
Q!(" ldr " "q0, [x1]"),
Q!(" ldp " "x7, x8, [x2]"),
Q!(" ldr " "q1, [x2]"),
Q!(" ldp " "x5, x6, [x1, #16]"),
Q!(" ldr " "q2, [x1, #16]"),
Q!(" ldp " "x9, x10, [x2, #16]"),
Q!(" ldr " "q3, [x2, #16]"),
Q!(" uzp1 " "v4.4s, v1.4s, v0.4s"),
Q!(" rev64 " "v1.4s, v1.4s"),
Q!(" uzp1 " "v5.4s, v0.4s, v0.4s"),
Q!(" mul " "v0.4s, v1.4s, v0.4s"),
Q!(" uaddlp " "v0.2d, v0.4s"),
Q!(" shl " "v0.2d, v0.2d, #32"),
Q!(" umlal " "v0.2d, v5.2s, v4.2s"),
Q!(" mov " "x11, v0.d[0]"),
Q!(" mov " "x15, v0.d[1]"),
Q!(" uzp1 " "v0.4s, v3.4s, v2.4s"),
Q!(" rev64 " "v1.4s, v3.4s"),
Q!(" uzp1 " "v3.4s, v2.4s, v2.4s"),
Q!(" mul " "v1.4s, v1.4s, v2.4s"),
Q!(" uaddlp " "v1.2d, v1.4s"),
Q!(" shl " "v1.2d, v1.2d, #32"),
Q!(" umlal " "v1.2d, v3.2s, v0.2s"),
Q!(" mov " "x16, v1.d[0]"),
Q!(" mov " "x17, v1.d[1]"),
Q!(" ldr " "q0, [x1, #32]"),
Q!(" ldr " "q1, [x2, #32]"),
Q!(" ldr " "q2, [x1, #48]"),
Q!(" ldr " "q3, [x2, #48]"),
Q!(" umulh " "x19, x3, x7"),
Q!(" adds " "x15, x15, x19"),
Q!(" umulh " "x19, x4, x8"),
Q!(" adcs " "x16, x16, x19"),
Q!(" umulh " "x19, x5, x9"),
Q!(" adcs " "x17, x17, x19"),
Q!(" umulh " "x19, x6, x10"),
Q!(" uzp1 " "v4.4s, v1.4s, v0.4s"),
Q!(" rev64 " "v1.4s, v1.4s"),
Q!(" uzp1 " "v5.4s, v0.4s, v0.4s"),
Q!(" mul " "v0.4s, v1.4s, v0.4s"),
Q!(" uaddlp " "v0.2d, v0.4s"),
Q!(" shl " "v0.2d, v0.2d, #32"),
Q!(" umlal " "v0.2d, v5.2s, v4.2s"),
Q!(" adc " "x19, x19, xzr"),
Q!(" adds " "x12, x15, x11"),
Q!(" adcs " "x15, x16, x15"),
Q!(" adcs " "x16, x17, x16"),
Q!(" adcs " "x17, x19, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" adds " "x13, x15, x11"),
Q!(" adcs " "x14, x16, x12"),
Q!(" adcs " "x15, x17, x15"),
Q!(" adcs " "x16, x19, x16"),
Q!(" adcs " "x17, xzr, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" subs " "x24, x5, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x9"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x16, x16, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x17, x17, x21"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x4"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x8, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x12, x12, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x13, x13, x21"),
Q!(" adcs " "x14, x14, x20"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x15, x15, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x16, x16, x21"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x13, x13, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x14, x14, x21"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" ldp " "x3, x4, [x1, #32]"),
Q!(" stp " "x11, x12, [x0]"),
Q!(" ldp " "x7, x8, [x2, #32]"),
Q!(" stp " "x13, x14, [x0, #16]"),
Q!(" ldp " "x5, x6, [x1, #48]"),
Q!(" stp " "x15, x16, [x0, #32]"),
Q!(" ldp " "x9, x10, [x2, #48]"),
Q!(" stp " "x17, x19, [x0, #48]"),
Q!(" mov " "x11, v0.d[0]"),
Q!(" mov " "x15, v0.d[1]"),
Q!(" uzp1 " "v0.4s, v3.4s, v2.4s"),
Q!(" rev64 " "v1.4s, v3.4s"),
Q!(" uzp1 " "v3.4s, v2.4s, v2.4s"),
Q!(" mul " "v1.4s, v1.4s, v2.4s"),
Q!(" uaddlp " "v1.2d, v1.4s"),
Q!(" shl " "v1.2d, v1.2d, #32"),
Q!(" umlal " "v1.2d, v3.2s, v0.2s"),
Q!(" mov " "x16, v1.d[0]"),
Q!(" mov " "x17, v1.d[1]"),
Q!(" umulh " "x19, x3, x7"),
Q!(" adds " "x15, x15, x19"),
Q!(" umulh " "x19, x4, x8"),
Q!(" adcs " "x16, x16, x19"),
Q!(" umulh " "x19, x5, x9"),
Q!(" adcs " "x17, x17, x19"),
Q!(" umulh " "x19, x6, x10"),
Q!(" adc " "x19, x19, xzr"),
Q!(" adds " "x12, x15, x11"),
Q!(" adcs " "x15, x16, x15"),
Q!(" adcs " "x16, x17, x16"),
Q!(" adcs " "x17, x19, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" adds " "x13, x15, x11"),
Q!(" adcs " "x14, x16, x12"),
Q!(" adcs " "x15, x17, x15"),
Q!(" adcs " "x16, x19, x16"),
Q!(" adcs " "x17, xzr, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" ldp " "x22, x21, [x0, #32]"),
Q!(" adds " "x11, x11, x22"),
Q!(" adcs " "x12, x12, x21"),
Q!(" ldp " "x22, x21, [x0, #48]"),
Q!(" adcs " "x13, x13, x22"),
Q!(" adcs " "x14, x14, x21"),
Q!(" adcs " "x15, x15, xzr"),
Q!(" adcs " "x16, x16, xzr"),
Q!(" adcs " "x17, x17, xzr"),
Q!(" adc " "x19, x19, xzr"),
Q!(" subs " "x24, x5, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x9"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x16, x16, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x17, x17, x21"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x4"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x8, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x12, x12, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x13, x13, x21"),
Q!(" adcs " "x14, x14, x20"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x15, x15, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x16, x16, x21"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x13, x13, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x14, x14, x21"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" ldp " "x22, x21, [x1]"),
Q!(" subs " "x3, x3, x22"),
Q!(" sbcs " "x4, x4, x21"),
Q!(" ldp " "x22, x21, [x1, #16]"),
Q!(" sbcs " "x5, x5, x22"),
Q!(" sbcs " "x6, x6, x21"),
Q!(" csetm " "x24, cc"),
Q!(" stp " "x11, x12, [x0, #64]"),
Q!(" ldp " "x22, x21, [x2]"),
Q!(" subs " "x7, x22, x7"),
Q!(" sbcs " "x8, x21, x8"),
Q!(" ldp " "x22, x21, [x2, #16]"),
Q!(" sbcs " "x9, x22, x9"),
Q!(" sbcs " "x10, x21, x10"),
Q!(" csetm " "x1, cc"),
Q!(" stp " "x13, x14, [x0, #80]"),
Q!(" eor " "x3, x3, x24"),
Q!(" subs " "x3, x3, x24"),
Q!(" eor " "x4, x4, x24"),
Q!(" sbcs " "x4, x4, x24"),
Q!(" eor " "x5, x5, x24"),
Q!(" sbcs " "x5, x5, x24"),
Q!(" eor " "x6, x6, x24"),
Q!(" sbc " "x6, x6, x24"),
Q!(" stp " "x15, x16, [x0, #96]"),
Q!(" eor " "x7, x7, x1"),
Q!(" subs " "x7, x7, x1"),
Q!(" eor " "x8, x8, x1"),
Q!(" sbcs " "x8, x8, x1"),
Q!(" eor " "x9, x9, x1"),
Q!(" sbcs " "x9, x9, x1"),
Q!(" eor " "x10, x10, x1"),
Q!(" sbc " "x10, x10, x1"),
Q!(" stp " "x17, x19, [x0, #112]"),
Q!(" eor " "x1, x1, x24"),
Q!(" mul " "x11, x3, x7"),
Q!(" mul " "x15, x4, x8"),
Q!(" mul " "x16, x5, x9"),
Q!(" mul " "x17, x6, x10"),
Q!(" umulh " "x19, x3, x7"),
Q!(" adds " "x15, x15, x19"),
Q!(" umulh " "x19, x4, x8"),
Q!(" adcs " "x16, x16, x19"),
Q!(" umulh " "x19, x5, x9"),
Q!(" adcs " "x17, x17, x19"),
Q!(" umulh " "x19, x6, x10"),
Q!(" adc " "x19, x19, xzr"),
Q!(" adds " "x12, x15, x11"),
Q!(" adcs " "x15, x16, x15"),
Q!(" adcs " "x16, x17, x16"),
Q!(" adcs " "x17, x19, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" adds " "x13, x15, x11"),
Q!(" adcs " "x14, x16, x12"),
Q!(" adcs " "x15, x17, x15"),
Q!(" adcs " "x16, x19, x16"),
Q!(" adcs " "x17, xzr, x17"),
Q!(" adc " "x19, xzr, x19"),
Q!(" subs " "x24, x5, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x9"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x16, x16, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x17, x17, x21"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x4"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x8, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x12, x12, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x13, x13, x21"),
Q!(" adcs " "x14, x14, x20"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x15, x15, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x16, x16, x21"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x13, x13, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x14, x14, x21"),
Q!(" adcs " "x15, x15, x20"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x3, x6"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x10, x7"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" subs " "x24, x4, x5"),
Q!(" cneg " "x24, x24, cc"),
Q!(" csetm " "x20, cc"),
Q!(" subs " "x21, x9, x8"),
Q!(" cneg " "x21, x21, cc"),
Q!(" mul " "x22, x24, x21"),
Q!(" umulh " "x21, x24, x21"),
Q!(" cinv " "x20, x20, cc"),
Q!(" cmn " "x20, #0x1"),
Q!(" eor " "x22, x22, x20"),
Q!(" adcs " "x14, x14, x22"),
Q!(" eor " "x21, x21, x20"),
Q!(" adcs " "x15, x15, x21"),
Q!(" adcs " "x16, x16, x20"),
Q!(" adcs " "x17, x17, x20"),
Q!(" adc " "x19, x19, x20"),
Q!(" ldp " "x3, x4, [x0]"),
Q!(" ldp " "x7, x8, [x0, #64]"),
Q!(" adds " "x3, x3, x7"),
Q!(" adcs " "x4, x4, x8"),
Q!(" ldp " "x5, x6, [x0, #16]"),
Q!(" ldp " "x9, x10, [x0, #80]"),
Q!(" adcs " "x5, x5, x9"),
Q!(" adcs " "x6, x6, x10"),
Q!(" ldp " "x20, x21, [x0, #96]"),
Q!(" adcs " "x7, x7, x20"),
Q!(" adcs " "x8, x8, x21"),
Q!(" ldp " "x22, x23, [x0, #112]"),
Q!(" adcs " "x9, x9, x22"),
Q!(" adcs " "x10, x10, x23"),
Q!(" adcs " "x24, x1, xzr"),
Q!(" adc " "x2, x1, xzr"),
Q!(" cmn " "x1, #0x1"),
Q!(" eor " "x11, x11, x1"),
Q!(" adcs " "x3, x11, x3"),
Q!(" eor " "x12, x12, x1"),
Q!(" adcs " "x4, x12, x4"),
Q!(" eor " "x13, x13, x1"),
Q!(" adcs " "x5, x13, x5"),
Q!(" eor " "x14, x14, x1"),
Q!(" adcs " "x6, x14, x6"),
Q!(" eor " "x15, x15, x1"),
Q!(" adcs " "x7, x15, x7"),
Q!(" eor " "x16, x16, x1"),
Q!(" adcs " "x8, x16, x8"),
Q!(" eor " "x17, x17, x1"),
Q!(" adcs " "x9, x17, x9"),
Q!(" eor " "x19, x19, x1"),
Q!(" adcs " "x10, x19, x10"),
Q!(" adcs " "x20, x20, x24"),
Q!(" adcs " "x21, x21, x2"),
Q!(" adcs " "x22, x22, x2"),
Q!(" adc " "x23, x23, x2"),
Q!(" stp " "x3, x4, [x0, #32]"),
Q!(" stp " "x5, x6, [x0, #48]"),
Q!(" stp " "x7, x8, [x0, #64]"),
Q!(" stp " "x9, x10, [x0, #80]"),
Q!(" stp " "x20, x21, [x0, #96]"),
Q!(" stp " "x22, x23, [x0, #112]"),
Q!(" ret " ),
Q!(Label!("hoist_finish", 3) ":"),
inout("x0") z.as_mut_ptr() => _,
inout("x1") x.as_ptr() => _,
inout("x2") y.as_ptr() => _,
inout("x3") t.as_mut_ptr() => _,
out("v0") _,
out("v1") _,
out("v2") _,
out("v3") _,
out("v4") _,
out("v5") _,
out("x10") _,
out("x11") _,
out("x12") _,
out("x13") _,
out("x14") _,
out("x15") _,
out("x16") _,
out("x17") _,
out("x20") _,
out("x21") _,
out("x22") _,
out("x23") _,
out("x24") _,
out("x25") _,
out("x26") _,
out("x27") _,
out("x28") _,
out("x30") _,
out("x4") _,
out("x5") _,
out("x6") _,
out("x7") _,
out("x8") _,
out("x9") _,
)
};
}