#![allow(non_upper_case_globals, unused_macros, unused_imports)]
use crate::low::macros::*;
pub(crate) fn mlkem_intt(a: &mut [i16; 256], z_01234: &[i16; 80], z_56: &[i16; 384]) {
debug_assert!((a.as_mut_ptr() as usize).is_multiple_of(32));
debug_assert!((z_01234.as_ptr() as usize).is_multiple_of(32));
debug_assert!((z_56.as_ptr() as usize).is_multiple_of(32));
unsafe {
core::arch::asm!(
Q!(" sub " "sp, sp, # (64 + 0)"),
Q!(" stp " "d8, d9, [sp, # (0)]"),
Q!(" stp " "d10, d11, [sp, # (16)]"),
Q!(" stp " "d12, d13, [sp, # (32)]"),
Q!(" stp " "d14, d15, [sp, # (48)]"),
Q!(" mov " "w5, #0xd01"),
Q!(" mov " "v7.h[0], w5"),
Q!(" mov " "w5, #0x4ebf"),
Q!(" mov " "v7.h[1], w5"),
Q!(" mov " "w5, #0x200"),
Q!(" dup " "v29.8h, w5"),
Q!(" mov " "w5, #0x13b0"),
Q!(" dup " "v30.8h, w5"),
Q!(" mov " "x3, x0"),
Q!(" mov " "x4, #0x8"),
Q!(Label!("Lmlkem_intt_scale_start", 2) ":"),
Q!(" ldr " "q8, [x3]"),
Q!(" ldr " "q9, [x3, #16]"),
Q!(" ldr " "q10, [x3, #32]"),
Q!(" ldr " "q11, [x3, #48]"),
Q!(" sqrdmulh " "v27.8h, v8.8h, v30.8h"),
Q!(" mul " "v8.8h, v8.8h, v29.8h"),
Q!(" mls " "v8.8h, v27.8h, v7.h[0]"),
Q!(" sqrdmulh " "v27.8h, v9.8h, v30.8h"),
Q!(" mul " "v9.8h, v9.8h, v29.8h"),
Q!(" mls " "v9.8h, v27.8h, v7.h[0]"),
Q!(" sqrdmulh " "v27.8h, v10.8h, v30.8h"),
Q!(" mul " "v10.8h, v10.8h, v29.8h"),
Q!(" mls " "v10.8h, v27.8h, v7.h[0]"),
Q!(" sqrdmulh " "v27.8h, v11.8h, v30.8h"),
Q!(" mul " "v11.8h, v11.8h, v29.8h"),
Q!(" mls " "v11.8h, v27.8h, v7.h[0]"),
Q!(" str " "q8, [x3], #64"),
Q!(" stur " "q9, [x3, #-48]"),
Q!(" stur " "q10, [x3, #-32]"),
Q!(" stur " "q11, [x3, #-16]"),
Q!(" subs " "x4, x4, #0x1"),
Q!(" cbnz " "x4, " Label!("Lmlkem_intt_scale_start", 2, Before)),
Q!(" mov " "x3, x0"),
Q!(" mov " "x4, #0x8"),
Q!(" ldr " "q1, [x3, #32]"),
Q!(" ldr " "q18, [x3, #48]"),
Q!(" ldr " "q15, [x3]"),
Q!(" ldr " "q21, [x3, #16]"),
Q!(" ldr " "q3, [x2], #96"),
Q!(" ldur " "q16, [x2, #-48]"),
Q!(" ldr " "q4, [x1], #16"),
Q!(" ldur " "q30, [x2, #-32]"),
Q!(" trn1 " "v11.4s, v1.4s, v18.4s"),
Q!(" trn2 " "v18.4s, v1.4s, v18.4s"),
Q!(" trn1 " "v20.4s, v15.4s, v21.4s"),
Q!(" trn2 " "v1.4s, v15.4s, v21.4s"),
Q!(" ldur " "q0, [x2, #-16]"),
Q!(" ldur " "q22, [x2, #-80]"),
Q!(" trn1 " "v8.2d, v20.2d, v11.2d"),
Q!(" trn1 " "v6.2d, v1.2d, v18.2d"),
Q!(" trn2 " "v1.2d, v1.2d, v18.2d"),
Q!(" trn2 " "v21.2d, v20.2d, v11.2d"),
Q!(" sub " "v11.8h, v8.8h, v6.8h"),
Q!(" add " "v20.8h, v8.8h, v6.8h"),
Q!(" add " "v14.8h, v21.8h, v1.8h"),
Q!(" sub " "v15.8h, v21.8h, v1.8h"),
Q!(" sqrdmulh " "v16.8h, v11.8h, v16.8h"),
Q!(" ldur " "q6, [x2, #-64]"),
Q!(" sub " "v18.8h, v20.8h, v14.8h"),
Q!(" add " "v21.8h, v20.8h, v14.8h"),
Q!(" sqrdmulh " "v0.8h, v15.8h, v0.8h"),
Q!(" mul " "v11.8h, v11.8h, v6.8h"),
Q!(" mul " "v1.8h, v15.8h, v30.8h"),
Q!(" mls " "v11.8h, v16.8h, v7.h[0]"),
Q!(" mls " "v1.8h, v0.8h, v7.h[0]"),
Q!(" sqrdmulh " "v0.8h, v18.8h, v22.8h"),
Q!(" mul " "v16.8h, v18.8h, v3.8h"),
Q!(" sub " "v18.8h, v11.8h, v1.8h"),
Q!(" add " "v13.8h, v11.8h, v1.8h"),
Q!(" sqrdmulh " "v11.8h, v18.8h, v22.8h"),
Q!(" trn1 " "v20.4s, v21.4s, v13.4s"),
Q!(" trn2 " "v1.4s, v21.4s, v13.4s"),
Q!(" mls " "v16.8h, v0.8h, v7.h[0]"),
Q!(" mul " "v3.8h, v18.8h, v3.8h"),
Q!(" mls " "v3.8h, v11.8h, v7.h[0]"),
Q!(" trn2 " "v11.4s, v16.4s, v3.4s"),
Q!(" trn1 " "v16.4s, v16.4s, v3.4s"),
Q!(" trn2 " "v21.2d, v1.2d, v11.2d"),
Q!(" trn2 " "v0.2d, v20.2d, v16.2d"),
Q!(" trn1 " "v1.2d, v1.2d, v11.2d"),
Q!(" trn1 " "v11.2d, v20.2d, v16.2d"),
Q!(" sub " "v13.8h, v0.8h, v21.8h"),
Q!(" add " "v29.8h, v0.8h, v21.8h"),
Q!(" add " "v9.8h, v11.8h, v1.8h"),
Q!(" sub " "v23.8h, v11.8h, v1.8h"),
Q!(" sqdmulh " "v1.8h, v29.8h, v7.h[1]"),
Q!(" sqdmulh " "v27.8h, v9.8h, v7.h[1]"),
Q!(" sqrdmulh " "v16.8h, v13.8h, v4.h[5]"),
Q!(" srshr " "v14.8h, v1.8h, #11"),
Q!(" sub " "x4, x4, #0x1"),
Q!(Label!("Lmlkem_intt_layer3456_start", 3) ":"),
Q!(" mls " "v29.8h, v14.8h, v7.h[0]"),
Q!(" ldr " "q3, [x3, #96]"),
Q!(" ldr " "q30, [x3, #112]"),
Q!(" ldr " "q20, [x2, #32]"),
Q!(" mul " "v6.8h, v23.8h, v4.h[2]"),
Q!(" ldr " "q24, [x2, #16]"),
Q!(" ldr " "q0, [x3, #64]"),
Q!(" ldr " "q14, [x3, #80]"),
Q!(" srshr " "v25.8h, v27.8h, #11"),
Q!(" mul " "v15.8h, v13.8h, v4.h[4]"),
Q!(" trn1 " "v18.4s, v3.4s, v30.4s"),
Q!(" ldr " "q28, [x2], #96"),
Q!(" trn2 " "v5.4s, v3.4s, v30.4s"),
Q!(" sqrdmulh " "v19.8h, v23.8h, v4.h[3]"),
Q!(" trn2 " "v26.4s, v0.4s, v14.4s"),
Q!(" trn1 " "v11.4s, v0.4s, v14.4s"),
Q!(" mls " "v9.8h, v25.8h, v7.h[0]"),
Q!(" trn2 " "v0.2d, v26.2d, v5.2d"),
Q!(" ldur " "q17, [x2, #-16]"),
Q!(" mls " "v15.8h, v16.8h, v7.h[0]"),
Q!(" trn2 " "v23.2d, v11.2d, v18.2d"),
Q!(" trn1 " "v30.2d, v26.2d, v5.2d"),
Q!(" ldur " "q1, [x2, #-32]"),
Q!(" mls " "v6.8h, v19.8h, v7.h[0]"),
Q!(" sub " "v14.8h, v23.8h, v0.8h"),
Q!(" trn1 " "v19.2d, v11.2d, v18.2d"),
Q!(" ldur " "q10, [x2, #-48]"),
Q!(" add " "v31.8h, v23.8h, v0.8h"),
Q!(" sqrdmulh " "v27.8h, v14.8h, v17.8h"),
Q!(" add " "v18.8h, v19.8h, v30.8h"),
Q!(" mul " "v13.8h, v14.8h, v1.8h"),
Q!(" sub " "v22.8h, v19.8h, v30.8h"),
Q!(" sub " "v26.8h, v18.8h, v31.8h"),
Q!(" sqrdmulh " "v10.8h, v22.8h, v10.8h"),
Q!(" sub " "v25.8h, v9.8h, v29.8h"),
Q!(" add " "v9.8h, v9.8h, v29.8h"),
Q!(" mls " "v13.8h, v27.8h, v7.h[0]"),
Q!(" add " "v2.8h, v18.8h, v31.8h"),
Q!(" str " "q9, [x3], #64"),
Q!(" sub " "v23.8h, v6.8h, v15.8h"),
Q!(" add " "v21.8h, v6.8h, v15.8h"),
Q!(" mul " "v3.8h, v22.8h, v20.8h"),
Q!(" mls " "v3.8h, v10.8h, v7.h[0]"),
Q!(" sqrdmulh " "v20.8h, v26.8h, v24.8h"),
Q!(" mul " "v22.8h, v26.8h, v28.8h"),
Q!(" add " "v12.8h, v3.8h, v13.8h"),
Q!(" sub " "v15.8h, v3.8h, v13.8h"),
Q!(" sqrdmulh " "v13.8h, v23.8h, v4.h[1]"),
Q!(" sqrdmulh " "v0.8h, v15.8h, v24.8h"),
Q!(" mul " "v27.8h, v15.8h, v28.8h"),
Q!(" mls " "v22.8h, v20.8h, v7.h[0]"),
Q!(" mls " "v27.8h, v0.8h, v7.h[0]"),
Q!(" sqdmulh " "v19.8h, v21.8h, v7.h[1]"),
Q!(" trn1 " "v26.4s, v2.4s, v12.4s"),
Q!(" mul " "v10.8h, v23.8h, v4.h[0]"),
Q!(" trn2 " "v2.4s, v2.4s, v12.4s"),
Q!(" trn2 " "v12.4s, v22.4s, v27.4s"),
Q!(" trn1 " "v8.4s, v22.4s, v27.4s"),
Q!(" mul " "v31.8h, v25.8h, v4.h[0]"),
Q!(" trn2 " "v3.2d, v2.2d, v12.2d"),
Q!(" sqrdmulh " "v11.8h, v25.8h, v4.h[1]"),
Q!(" trn2 " "v0.2d, v26.2d, v8.2d"),
Q!(" srshr " "v16.8h, v19.8h, #11"),
Q!(" ldr " "q4, [x1], #16"),
Q!(" mls " "v10.8h, v13.8h, v7.h[0]"),
Q!(" add " "v29.8h, v0.8h, v3.8h"),
Q!(" trn1 " "v18.2d, v26.2d, v8.2d"),
Q!(" trn1 " "v20.2d, v2.2d, v12.2d"),
Q!(" sqdmulh " "v15.8h, v29.8h, v7.h[1]"),
Q!(" sub " "v13.8h, v0.8h, v3.8h"),
Q!(" mls " "v21.8h, v16.8h, v7.h[0]"),
Q!(" add " "v9.8h, v18.8h, v20.8h"),
Q!(" stur " "q10, [x3, #-16]"),
Q!(" sub " "v23.8h, v18.8h, v20.8h"),
Q!(" mls " "v31.8h, v11.8h, v7.h[0]"),
Q!(" srshr " "v14.8h, v15.8h, #11"),
Q!(" sqrdmulh " "v16.8h, v13.8h, v4.h[5]"),
Q!(" stur " "q21, [x3, #-48]"),
Q!(" sqdmulh " "v27.8h, v9.8h, v7.h[1]"),
Q!(" stur " "q31, [x3, #-32]"),
Q!(" sub " "x4, x4, #0x1"),
Q!(" cbnz " "x4, " Label!("Lmlkem_intt_layer3456_start", 3, Before)),
Q!(" mls " "v29.8h, v14.8h, v7.h[0]"),
Q!(" srshr " "v1.8h, v27.8h, #11"),
Q!(" mul " "v11.8h, v13.8h, v4.h[4]"),
Q!(" mls " "v9.8h, v1.8h, v7.h[0]"),
Q!(" sqrdmulh " "v1.8h, v23.8h, v4.h[3]"),
Q!(" mul " "v20.8h, v23.8h, v4.h[2]"),
Q!(" sub " "v21.8h, v9.8h, v29.8h"),
Q!(" add " "v0.8h, v9.8h, v29.8h"),
Q!(" mls " "v11.8h, v16.8h, v7.h[0]"),
Q!(" mls " "v20.8h, v1.8h, v7.h[0]"),
Q!(" str " "q0, [x3], #64"),
Q!(" mul " "v1.8h, v21.8h, v4.h[0]"),
Q!(" sqrdmulh " "v16.8h, v21.8h, v4.h[1]"),
Q!(" add " "v21.8h, v20.8h, v11.8h"),
Q!(" sub " "v11.8h, v20.8h, v11.8h"),
Q!(" sqdmulh " "v20.8h, v21.8h, v7.h[1]"),
Q!(" sqrdmulh " "v0.8h, v11.8h, v4.h[1]"),
Q!(" mul " "v11.8h, v11.8h, v4.h[0]"),
Q!(" srshr " "v20.8h, v20.8h, #11"),
Q!(" mls " "v1.8h, v16.8h, v7.h[0]"),
Q!(" mls " "v11.8h, v0.8h, v7.h[0]"),
Q!(" mls " "v21.8h, v20.8h, v7.h[0]"),
Q!(" stur " "q1, [x3, #-32]"),
Q!(" stur " "q11, [x3, #-16]"),
Q!(" stur " "q21, [x3, #-48]"),
Q!(" mov " "x4, #0x4"),
Q!(" ldr " "q0, [x1], #32"),
Q!(" ldur " "q1, [x1, #-16]"),
Q!(" ldr " "q6, [x0, #64]"),
Q!(" ldr " "q16, [x0]"),
Q!(" ldr " "q18, [x0, #192]"),
Q!(" ldr " "q27, [x0, #128]"),
Q!(" ldr " "q26, [x0, #320]"),
Q!(" ldr " "q5, [x0, #256]"),
Q!(" ldr " "q4, [x0, #448]"),
Q!(" ldr " "q2, [x0, #384]"),
Q!(" add " "v12.8h, v16.8h, v6.8h"),
Q!(" sub " "v11.8h, v16.8h, v6.8h"),
Q!(" add " "v3.8h, v27.8h, v18.8h"),
Q!(" sub " "v21.8h, v27.8h, v18.8h"),
Q!(" sub " "v18.8h, v5.8h, v26.8h"),
Q!(" mul " "v10.8h, v11.8h, v0.h[6]"),
Q!(" add " "v24.8h, v5.8h, v26.8h"),
Q!(" sqrdmulh " "v27.8h, v18.8h, v1.h[3]"),
Q!(" sub " "v19.8h, v12.8h, v3.8h"),
Q!(" add " "v29.8h, v12.8h, v3.8h"),
Q!(" mul " "v14.8h, v18.8h, v1.h[2]"),
Q!(" sub " "v13.8h, v2.8h, v4.8h"),
Q!(" sqrdmulh " "v31.8h, v21.8h, v1.h[1]"),
Q!(" sqrdmulh " "v26.8h, v11.8h, v0.h[7]"),
Q!(" mul " "v21.8h, v21.8h, v1.h[0]"),
Q!(" sub " "x4, x4, #0x1"),
Q!(Label!("Lmlkem_intt_layer102_start", 4) ":"),
Q!(" mls " "v14.8h, v27.8h, v7.h[0]"),
Q!(" ldr " "q15, [x0, #16]"),
Q!(" ldr " "q9, [x0, #208]"),
Q!(" add " "v18.8h, v2.8h, v4.8h"),
Q!(" mul " "v17.8h, v13.8h, v1.h[4]"),
Q!(" ldr " "q20, [x0, #80]"),
Q!(" ldr " "q2, [x0, #400]"),
Q!(" ldr " "q5, [x0, #272]"),
Q!(" sub " "v11.8h, v24.8h, v18.8h"),
Q!(" sqrdmulh " "v8.8h, v13.8h, v1.h[5]"),
Q!(" ldr " "q23, [x0, #336]"),
Q!(" sqrdmulh " "v16.8h, v11.8h, v0.h[5]"),
Q!(" sub " "v12.8h, v15.8h, v20.8h"),
Q!(" ldr " "q3, [x0, #144]"),
Q!(" add " "v28.8h, v15.8h, v20.8h"),
Q!(" add " "v4.8h, v24.8h, v18.8h"),
Q!(" mul " "v30.8h, v11.8h, v0.h[4]"),
Q!(" sub " "v20.8h, v5.8h, v23.8h"),
Q!(" add " "v24.8h, v5.8h, v23.8h"),
Q!(" mls " "v17.8h, v8.8h, v7.h[0]"),
Q!(" sub " "v11.8h, v29.8h, v4.8h"),
Q!(" mls " "v30.8h, v16.8h, v7.h[0]"),
Q!(" sqrdmulh " "v27.8h, v20.8h, v1.h[3]"),
Q!(" add " "v16.8h, v14.8h, v17.8h"),
Q!(" sub " "v13.8h, v14.8h, v17.8h"),
Q!(" sqrdmulh " "v23.8h, v19.8h, v0.h[3]"),
Q!(" sub " "v25.8h, v3.8h, v9.8h"),
Q!(" add " "v5.8h, v3.8h, v9.8h"),
Q!(" mul " "v6.8h, v19.8h, v0.h[2]"),
Q!(" mul " "v8.8h, v11.8h, v0.h[0]"),
Q!(" mls " "v10.8h, v26.8h, v7.h[0]"),
Q!(" sqrdmulh " "v26.8h, v12.8h, v0.h[7]"),
Q!(" mul " "v14.8h, v20.8h, v1.h[2]"),
Q!(" mul " "v22.8h, v13.8h, v0.h[4]"),
Q!(" mls " "v21.8h, v31.8h, v7.h[0]"),
Q!(" sqrdmulh " "v9.8h, v11.8h, v0.h[1]"),
Q!(" sqrdmulh " "v20.8h, v13.8h, v0.h[5]"),
Q!(" sub " "v13.8h, v10.8h, v21.8h"),
Q!(" add " "v15.8h, v10.8h, v21.8h"),
Q!(" sqrdmulh " "v31.8h, v25.8h, v1.h[1]"),
Q!(" sqrdmulh " "v21.8h, v13.8h, v0.h[3]"),
Q!(" sub " "v18.8h, v15.8h, v16.8h"),
Q!(" add " "v3.8h, v15.8h, v16.8h"),
Q!(" add " "v4.8h, v29.8h, v4.8h"),
Q!(" mls " "v22.8h, v20.8h, v7.h[0]"),
Q!(" sub " "v19.8h, v28.8h, v5.8h"),
Q!(" mls " "v6.8h, v23.8h, v7.h[0]"),
Q!(" str " "q4, [x0], #16"),
Q!(" mul " "v29.8h, v13.8h, v0.h[2]"),
Q!(" mls " "v29.8h, v21.8h, v7.h[0]"),
Q!(" add " "v11.8h, v6.8h, v30.8h"),
Q!(" mls " "v8.8h, v9.8h, v7.h[0]"),
Q!(" str " "q11, [x0, #112]"),
Q!(" sub " "v11.8h, v6.8h, v30.8h"),
Q!(" sqrdmulh " "v21.8h, v18.8h, v0.h[1]"),
Q!(" sqrdmulh " "v4.8h, v11.8h, v0.h[1]"),
Q!(" str " "q8, [x0, #240]"),
Q!(" sub " "v16.8h, v29.8h, v22.8h"),
Q!(" str " "q3, [x0, #48]"),
Q!(" mul " "v20.8h, v11.8h, v0.h[0]"),
Q!(" sqrdmulh " "v11.8h, v16.8h, v0.h[1]"),
Q!(" mls " "v20.8h, v4.8h, v7.h[0]"),
Q!(" mul " "v23.8h, v16.8h, v0.h[0]"),
Q!(" mls " "v23.8h, v11.8h, v7.h[0]"),
Q!(" str " "q20, [x0, #368]"),
Q!(" mul " "v11.8h, v18.8h, v0.h[0]"),
Q!(" mls " "v11.8h, v21.8h, v7.h[0]"),
Q!(" str " "q23, [x0, #432]"),
Q!(" ldr " "q4, [x0, #448]"),
Q!(" mul " "v10.8h, v12.8h, v0.h[6]"),
Q!(" add " "v12.8h, v29.8h, v22.8h"),
Q!(" add " "v29.8h, v28.8h, v5.8h"),
Q!(" mul " "v21.8h, v25.8h, v1.h[0]"),
Q!(" str " "q12, [x0, #176]"),
Q!(" str " "q11, [x0, #304]"),
Q!(" sub " "v13.8h, v2.8h, v4.8h"),
Q!(" sub " "x4, x4, #0x1"),
Q!(" cbnz " "x4, " Label!("Lmlkem_intt_layer102_start", 4, Before)),
Q!(" mls " "v21.8h, v31.8h, v7.h[0]"),
Q!(" add " "v22.8h, v2.8h, v4.8h"),
Q!(" sqrdmulh " "v15.8h, v13.8h, v1.h[5]"),
Q!(" add " "v8.8h, v24.8h, v22.8h"),
Q!(" sub " "v17.8h, v29.8h, v8.8h"),
Q!(" mul " "v28.8h, v13.8h, v1.h[4]"),
Q!(" add " "v29.8h, v29.8h, v8.8h"),
Q!(" sub " "v13.8h, v24.8h, v22.8h"),
Q!(" sqrdmulh " "v25.8h, v17.8h, v0.h[1]"),
Q!(" str " "q29, [x0], #16"),
Q!(" mls " "v28.8h, v15.8h, v7.h[0]"),
Q!(" mls " "v10.8h, v26.8h, v7.h[0]"),
Q!(" mul " "v29.8h, v17.8h, v0.h[0]"),
Q!(" mls " "v29.8h, v25.8h, v7.h[0]"),
Q!(" mls " "v14.8h, v27.8h, v7.h[0]"),
Q!(" sqrdmulh " "v20.8h, v13.8h, v0.h[5]"),
Q!(" str " "q29, [x0, #240]"),
Q!(" mul " "v4.8h, v13.8h, v0.h[4]"),
Q!(" add " "v12.8h, v10.8h, v21.8h"),
Q!(" add " "v22.8h, v14.8h, v28.8h"),
Q!(" sub " "v8.8h, v10.8h, v21.8h"),
Q!(" sqrdmulh " "v11.8h, v19.8h, v0.h[3]"),
Q!(" add " "v6.8h, v12.8h, v22.8h"),
Q!(" sub " "v3.8h, v14.8h, v28.8h"),
Q!(" mls " "v4.8h, v20.8h, v7.h[0]"),
Q!(" str " "q6, [x0, #48]"),
Q!(" sub " "v16.8h, v12.8h, v22.8h"),
Q!(" mul " "v12.8h, v19.8h, v0.h[2]"),
Q!(" mul " "v14.8h, v3.8h, v0.h[4]"),
Q!(" sqrdmulh " "v22.8h, v3.8h, v0.h[5]"),
Q!(" mls " "v12.8h, v11.8h, v7.h[0]"),
Q!(" mul " "v20.8h, v8.8h, v0.h[2]"),
Q!(" mls " "v14.8h, v22.8h, v7.h[0]"),
Q!(" add " "v5.8h, v12.8h, v4.8h"),
Q!(" sub " "v21.8h, v12.8h, v4.8h"),
Q!(" sqrdmulh " "v4.8h, v8.8h, v0.h[3]"),
Q!(" str " "q5, [x0, #112]"),
Q!(" sqrdmulh " "v9.8h, v21.8h, v0.h[1]"),
Q!(" mul " "v19.8h, v21.8h, v0.h[0]"),
Q!(" mls " "v20.8h, v4.8h, v7.h[0]"),
Q!(" mls " "v19.8h, v9.8h, v7.h[0]"),
Q!(" sqrdmulh " "v9.8h, v16.8h, v0.h[1]"),
Q!(" sub " "v5.8h, v20.8h, v14.8h"),
Q!(" add " "v4.8h, v20.8h, v14.8h"),
Q!(" mul " "v20.8h, v16.8h, v0.h[0]"),
Q!(" str " "q4, [x0, #176]"),
Q!(" sqrdmulh " "v18.8h, v5.8h, v0.h[1]"),
Q!(" str " "q19, [x0, #368]"),
Q!(" mul " "v23.8h, v5.8h, v0.h[0]"),
Q!(" mls " "v20.8h, v9.8h, v7.h[0]"),
Q!(" mls " "v23.8h, v18.8h, v7.h[0]"),
Q!(" str " "q20, [x0, #304]"),
Q!(" str " "q23, [x0, #432]"),
Q!(" ldp " "d8, d9, [sp, # (0 + 0)]"),
Q!(" ldp " "d10, d11, [sp, # (16 + 0)]"),
Q!(" ldp " "d12, d13, [sp, # (32 + 0)]"),
Q!(" ldp " "d14, d15, [sp, # (48 + 0)]"),
Q!(" add " "sp, sp, # (64 + 0)"),
inout("x0") a.as_mut_ptr() => _,
inout("x1") z_01234.as_ptr() => _,
inout("x2") z_56.as_ptr() => _,
out("v0") _,
out("v1") _,
out("v10") _,
out("v11") _,
out("v12") _,
out("v13") _,
out("v14") _,
out("v15") _,
out("v16") _,
out("v17") _,
out("v18") _,
out("v19") _,
out("v2") _,
out("v20") _,
out("v21") _,
out("v22") _,
out("v23") _,
out("v24") _,
out("v25") _,
out("v26") _,
out("v27") _,
out("v28") _,
out("v29") _,
out("v3") _,
out("v30") _,
out("v31") _,
out("v4") _,
out("v5") _,
out("v6") _,
out("v7") _,
out("v8") _,
out("v9") _,
out("x3") _,
out("x4") _,
out("x5") _,
)
};
}