From ded8a3779d9becb0c92b12a3a63763c875cacbfe Mon Sep 17 00:00:00 2001 From: laurent Date: Mon, 20 Mar 2023 14:12:03 +0100 Subject: [PATCH] remove globals --- .../LTE_UE_TRANSPORT/dlsch_llr_computation.c | 3128 +++++++---------- .../dlsch_llr_computation_avx2.c | 1780 ++++------ 2 files changed, 1957 insertions(+), 2951 deletions(-) diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c index b1ff7357da..3a366e748d 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c @@ -40,583 +40,76 @@ //#define DEBUG_LLR_SIC - -int16_t zeros[8] __attribute__ ((aligned(16))) = {0,0,0,0,0,0,0,0}; -int16_t ones[8] __attribute__ ((aligned(16))) = {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; +const int16_t zeros[8] __attribute__((aligned(16))) = {0, 0, 0, 0, 0, 0, 0, 0}; +const int16_t ones[8] __attribute__((aligned(16))) = {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}; #if defined(__x86_64__) || defined(__i386__) -__m128i rho_rpi __attribute__ ((aligned(16))); -__m128i rho_rmi __attribute__ ((aligned(16))); -__m128i rho_rpi_1_1 __attribute__ ((aligned(16))); -__m128i rho_rpi_1_3 __attribute__ ((aligned(16))); -__m128i rho_rpi_1_5 __attribute__ ((aligned(16))); -__m128i rho_rpi_1_7 __attribute__ ((aligned(16))); -__m128i rho_rpi_3_1 __attribute__ ((aligned(16))); -__m128i rho_rpi_3_3 __attribute__ ((aligned(16))); -__m128i rho_rpi_3_5 __attribute__ ((aligned(16))); -__m128i rho_rpi_3_7 __attribute__ ((aligned(16))); -__m128i rho_rpi_5_1 __attribute__ ((aligned(16))); -__m128i rho_rpi_5_3 __attribute__ ((aligned(16))); -__m128i rho_rpi_5_5 __attribute__ ((aligned(16))); -__m128i rho_rpi_5_7 __attribute__ ((aligned(16))); -__m128i rho_rpi_7_1 __attribute__ ((aligned(16))); -__m128i rho_rpi_7_3 __attribute__ ((aligned(16))); -__m128i rho_rpi_7_5 __attribute__ ((aligned(16))); -__m128i rho_rpi_7_7 __attribute__ ((aligned(16))); -__m128i rho_rmi_1_1 __attribute__ ((aligned(16))); -__m128i rho_rmi_1_3 __attribute__ ((aligned(16))); -__m128i rho_rmi_1_5 __attribute__ ((aligned(16))); -__m128i rho_rmi_1_7 __attribute__ ((aligned(16))); -__m128i rho_rmi_3_1 __attribute__ ((aligned(16))); -__m128i rho_rmi_3_3 __attribute__ ((aligned(16))); -__m128i rho_rmi_3_5 __attribute__ ((aligned(16))); -__m128i rho_rmi_3_7 __attribute__ ((aligned(16))); -__m128i rho_rmi_5_1 __attribute__ ((aligned(16))); -__m128i rho_rmi_5_3 __attribute__ ((aligned(16))); -__m128i rho_rmi_5_5 __attribute__ ((aligned(16))); -__m128i rho_rmi_5_7 __attribute__ ((aligned(16))); -__m128i rho_rmi_7_1 __attribute__ ((aligned(16))); -__m128i rho_rmi_7_3 __attribute__ ((aligned(16))); -__m128i rho_rmi_7_5 __attribute__ ((aligned(16))); -__m128i rho_rmi_7_7 __attribute__ ((aligned(16))); - -__m128i psi_r_m7_m7 __attribute__ ((aligned(16))); -__m128i psi_r_m7_m5 __attribute__ ((aligned(16))); -__m128i psi_r_m7_m3 __attribute__ ((aligned(16))); -__m128i psi_r_m7_m1 __attribute__ ((aligned(16))); -__m128i psi_r_m7_p1 __attribute__ ((aligned(16))); -__m128i psi_r_m7_p3 __attribute__ ((aligned(16))); -__m128i psi_r_m7_p5 __attribute__ ((aligned(16))); -__m128i psi_r_m7_p7 __attribute__ ((aligned(16))); -__m128i psi_r_m5_m7 __attribute__ ((aligned(16))); -__m128i psi_r_m5_m5 __attribute__ ((aligned(16))); -__m128i psi_r_m5_m3 __attribute__ ((aligned(16))); -__m128i psi_r_m5_m1 __attribute__ ((aligned(16))); -__m128i psi_r_m5_p1 __attribute__ ((aligned(16))); -__m128i psi_r_m5_p3 __attribute__ ((aligned(16))); -__m128i psi_r_m5_p5 __attribute__ ((aligned(16))); -__m128i psi_r_m5_p7 __attribute__ ((aligned(16))); -__m128i psi_r_m3_m7 __attribute__ ((aligned(16))); -__m128i psi_r_m3_m5 __attribute__ ((aligned(16))); -__m128i psi_r_m3_m3 __attribute__ ((aligned(16))); -__m128i psi_r_m3_m1 __attribute__ ((aligned(16))); -__m128i psi_r_m3_p1 __attribute__ ((aligned(16))); -__m128i psi_r_m3_p3 __attribute__ ((aligned(16))); -__m128i psi_r_m3_p5 __attribute__ ((aligned(16))); -__m128i psi_r_m3_p7 __attribute__ ((aligned(16))); -__m128i psi_r_m1_m7 __attribute__ ((aligned(16))); -__m128i psi_r_m1_m5 __attribute__ ((aligned(16))); -__m128i psi_r_m1_m3 __attribute__ ((aligned(16))); -__m128i psi_r_m1_m1 __attribute__ ((aligned(16))); -__m128i psi_r_m1_p1 __attribute__ ((aligned(16))); -__m128i psi_r_m1_p3 __attribute__ ((aligned(16))); -__m128i psi_r_m1_p5 __attribute__ ((aligned(16))); -__m128i psi_r_m1_p7 __attribute__ ((aligned(16))); -__m128i psi_r_p1_m7 __attribute__ ((aligned(16))); -__m128i psi_r_p1_m5 __attribute__ ((aligned(16))); -__m128i psi_r_p1_m3 __attribute__ ((aligned(16))); -__m128i psi_r_p1_m1 __attribute__ ((aligned(16))); -__m128i psi_r_p1_p1 __attribute__ ((aligned(16))); -__m128i psi_r_p1_p3 __attribute__ ((aligned(16))); -__m128i psi_r_p1_p5 __attribute__ ((aligned(16))); -__m128i psi_r_p1_p7 __attribute__ ((aligned(16))); -__m128i psi_r_p3_m7 __attribute__ ((aligned(16))); -__m128i psi_r_p3_m5 __attribute__ ((aligned(16))); -__m128i psi_r_p3_m3 __attribute__ ((aligned(16))); -__m128i psi_r_p3_m1 __attribute__ ((aligned(16))); -__m128i psi_r_p3_p1 __attribute__ ((aligned(16))); -__m128i psi_r_p3_p3 __attribute__ ((aligned(16))); -__m128i psi_r_p3_p5 __attribute__ ((aligned(16))); -__m128i psi_r_p3_p7 __attribute__ ((aligned(16))); -__m128i psi_r_p5_m7 __attribute__ ((aligned(16))); -__m128i psi_r_p5_m5 __attribute__ ((aligned(16))); -__m128i psi_r_p5_m3 __attribute__ ((aligned(16))); -__m128i psi_r_p5_m1 __attribute__ ((aligned(16))); -__m128i psi_r_p5_p1 __attribute__ ((aligned(16))); -__m128i psi_r_p5_p3 __attribute__ ((aligned(16))); -__m128i psi_r_p5_p5 __attribute__ ((aligned(16))); -__m128i psi_r_p5_p7 __attribute__ ((aligned(16))); -__m128i psi_r_p7_m7 __attribute__ ((aligned(16))); -__m128i psi_r_p7_m5 __attribute__ ((aligned(16))); -__m128i psi_r_p7_m3 __attribute__ ((aligned(16))); -__m128i psi_r_p7_m1 __attribute__ ((aligned(16))); -__m128i psi_r_p7_p1 __attribute__ ((aligned(16))); -__m128i psi_r_p7_p3 __attribute__ ((aligned(16))); -__m128i psi_r_p7_p5 __attribute__ ((aligned(16))); -__m128i psi_r_p7_p7 __attribute__ ((aligned(16))); - -__m128i psi_i_m7_m7 __attribute__ ((aligned(16))); -__m128i psi_i_m7_m5 __attribute__ ((aligned(16))); -__m128i psi_i_m7_m3 __attribute__ ((aligned(16))); -__m128i psi_i_m7_m1 __attribute__ ((aligned(16))); -__m128i psi_i_m7_p1 __attribute__ ((aligned(16))); -__m128i psi_i_m7_p3 __attribute__ ((aligned(16))); -__m128i psi_i_m7_p5 __attribute__ ((aligned(16))); -__m128i psi_i_m7_p7 __attribute__ ((aligned(16))); -__m128i psi_i_m5_m7 __attribute__ ((aligned(16))); -__m128i psi_i_m5_m5 __attribute__ ((aligned(16))); -__m128i psi_i_m5_m3 __attribute__ ((aligned(16))); -__m128i psi_i_m5_m1 __attribute__ ((aligned(16))); -__m128i psi_i_m5_p1 __attribute__ ((aligned(16))); -__m128i psi_i_m5_p3 __attribute__ ((aligned(16))); -__m128i psi_i_m5_p5 __attribute__ ((aligned(16))); -__m128i psi_i_m5_p7 __attribute__ ((aligned(16))); -__m128i psi_i_m3_m7 __attribute__ ((aligned(16))); -__m128i psi_i_m3_m5 __attribute__ ((aligned(16))); -__m128i psi_i_m3_m3 __attribute__ ((aligned(16))); -__m128i psi_i_m3_m1 __attribute__ ((aligned(16))); -__m128i psi_i_m3_p1 __attribute__ ((aligned(16))); -__m128i psi_i_m3_p3 __attribute__ ((aligned(16))); -__m128i psi_i_m3_p5 __attribute__ ((aligned(16))); -__m128i psi_i_m3_p7 __attribute__ ((aligned(16))); -__m128i psi_i_m1_m7 __attribute__ ((aligned(16))); -__m128i psi_i_m1_m5 __attribute__ ((aligned(16))); -__m128i psi_i_m1_m3 __attribute__ ((aligned(16))); -__m128i psi_i_m1_m1 __attribute__ ((aligned(16))); -__m128i psi_i_m1_p1 __attribute__ ((aligned(16))); -__m128i psi_i_m1_p3 __attribute__ ((aligned(16))); -__m128i psi_i_m1_p5 __attribute__ ((aligned(16))); -__m128i psi_i_m1_p7 __attribute__ ((aligned(16))); -__m128i psi_i_p1_m7 __attribute__ ((aligned(16))); -__m128i psi_i_p1_m5 __attribute__ ((aligned(16))); -__m128i psi_i_p1_m3 __attribute__ ((aligned(16))); -__m128i psi_i_p1_m1 __attribute__ ((aligned(16))); -__m128i psi_i_p1_p1 __attribute__ ((aligned(16))); -__m128i psi_i_p1_p3 __attribute__ ((aligned(16))); -__m128i psi_i_p1_p5 __attribute__ ((aligned(16))); -__m128i psi_i_p1_p7 __attribute__ ((aligned(16))); -__m128i psi_i_p3_m7 __attribute__ ((aligned(16))); -__m128i psi_i_p3_m5 __attribute__ ((aligned(16))); -__m128i psi_i_p3_m3 __attribute__ ((aligned(16))); -__m128i psi_i_p3_m1 __attribute__ ((aligned(16))); -__m128i psi_i_p3_p1 __attribute__ ((aligned(16))); -__m128i psi_i_p3_p3 __attribute__ ((aligned(16))); -__m128i psi_i_p3_p5 __attribute__ ((aligned(16))); -__m128i psi_i_p3_p7 __attribute__ ((aligned(16))); -__m128i psi_i_p5_m7 __attribute__ ((aligned(16))); -__m128i psi_i_p5_m5 __attribute__ ((aligned(16))); -__m128i psi_i_p5_m3 __attribute__ ((aligned(16))); -__m128i psi_i_p5_m1 __attribute__ ((aligned(16))); -__m128i psi_i_p5_p1 __attribute__ ((aligned(16))); -__m128i psi_i_p5_p3 __attribute__ ((aligned(16))); -__m128i psi_i_p5_p5 __attribute__ ((aligned(16))); -__m128i psi_i_p5_p7 __attribute__ ((aligned(16))); -__m128i psi_i_p7_m7 __attribute__ ((aligned(16))); -__m128i psi_i_p7_m5 __attribute__ ((aligned(16))); -__m128i psi_i_p7_m3 __attribute__ ((aligned(16))); -__m128i psi_i_p7_m1 __attribute__ ((aligned(16))); -__m128i psi_i_p7_p1 __attribute__ ((aligned(16))); -__m128i psi_i_p7_p3 __attribute__ ((aligned(16))); -__m128i psi_i_p7_p5 __attribute__ ((aligned(16))); -__m128i psi_i_p7_p7 __attribute__ ((aligned(16))); - -__m128i a_r_m7_m7 __attribute__ ((aligned(16))); -__m128i a_r_m7_m5 __attribute__ ((aligned(16))); -__m128i a_r_m7_m3 __attribute__ ((aligned(16))); -__m128i a_r_m7_m1 __attribute__ ((aligned(16))); -__m128i a_r_m7_p1 __attribute__ ((aligned(16))); -__m128i a_r_m7_p3 __attribute__ ((aligned(16))); -__m128i a_r_m7_p5 __attribute__ ((aligned(16))); -__m128i a_r_m7_p7 __attribute__ ((aligned(16))); -__m128i a_r_m5_m7 __attribute__ ((aligned(16))); -__m128i a_r_m5_m5 __attribute__ ((aligned(16))); -__m128i a_r_m5_m3 __attribute__ ((aligned(16))); -__m128i a_r_m5_m1 __attribute__ ((aligned(16))); -__m128i a_r_m5_p1 __attribute__ ((aligned(16))); -__m128i a_r_m5_p3 __attribute__ ((aligned(16))); -__m128i a_r_m5_p5 __attribute__ ((aligned(16))); -__m128i a_r_m5_p7 __attribute__ ((aligned(16))); -__m128i a_r_m3_m7 __attribute__ ((aligned(16))); -__m128i a_r_m3_m5 __attribute__ ((aligned(16))); -__m128i a_r_m3_m3 __attribute__ ((aligned(16))); -__m128i a_r_m3_m1 __attribute__ ((aligned(16))); -__m128i a_r_m3_p1 __attribute__ ((aligned(16))); -__m128i a_r_m3_p3 __attribute__ ((aligned(16))); -__m128i a_r_m3_p5 __attribute__ ((aligned(16))); -__m128i a_r_m3_p7 __attribute__ ((aligned(16))); -__m128i a_r_m1_m7 __attribute__ ((aligned(16))); -__m128i a_r_m1_m5 __attribute__ ((aligned(16))); -__m128i a_r_m1_m3 __attribute__ ((aligned(16))); -__m128i a_r_m1_m1 __attribute__ ((aligned(16))); -__m128i a_r_m1_p1 __attribute__ ((aligned(16))); -__m128i a_r_m1_p3 __attribute__ ((aligned(16))); -__m128i a_r_m1_p5 __attribute__ ((aligned(16))); -__m128i a_r_m1_p7 __attribute__ ((aligned(16))); -__m128i a_r_p1_m7 __attribute__ ((aligned(16))); -__m128i a_r_p1_m5 __attribute__ ((aligned(16))); -__m128i a_r_p1_m3 __attribute__ ((aligned(16))); -__m128i a_r_p1_m1 __attribute__ ((aligned(16))); -__m128i a_r_p1_p1 __attribute__ ((aligned(16))); -__m128i a_r_p1_p3 __attribute__ ((aligned(16))); -__m128i a_r_p1_p5 __attribute__ ((aligned(16))); -__m128i a_r_p1_p7 __attribute__ ((aligned(16))); -__m128i a_r_p3_m7 __attribute__ ((aligned(16))); -__m128i a_r_p3_m5 __attribute__ ((aligned(16))); -__m128i a_r_p3_m3 __attribute__ ((aligned(16))); -__m128i a_r_p3_m1 __attribute__ ((aligned(16))); -__m128i a_r_p3_p1 __attribute__ ((aligned(16))); -__m128i a_r_p3_p3 __attribute__ ((aligned(16))); -__m128i a_r_p3_p5 __attribute__ ((aligned(16))); -__m128i a_r_p3_p7 __attribute__ ((aligned(16))); -__m128i a_r_p5_m7 __attribute__ ((aligned(16))); -__m128i a_r_p5_m5 __attribute__ ((aligned(16))); -__m128i a_r_p5_m3 __attribute__ ((aligned(16))); -__m128i a_r_p5_m1 __attribute__ ((aligned(16))); -__m128i a_r_p5_p1 __attribute__ ((aligned(16))); -__m128i a_r_p5_p3 __attribute__ ((aligned(16))); -__m128i a_r_p5_p5 __attribute__ ((aligned(16))); -__m128i a_r_p5_p7 __attribute__ ((aligned(16))); -__m128i a_r_p7_m7 __attribute__ ((aligned(16))); -__m128i a_r_p7_m5 __attribute__ ((aligned(16))); -__m128i a_r_p7_m3 __attribute__ ((aligned(16))); -__m128i a_r_p7_m1 __attribute__ ((aligned(16))); -__m128i a_r_p7_p1 __attribute__ ((aligned(16))); -__m128i a_r_p7_p3 __attribute__ ((aligned(16))); -__m128i a_r_p7_p5 __attribute__ ((aligned(16))); -__m128i a_r_p7_p7 __attribute__ ((aligned(16))); - -__m128i a_i_m7_m7 __attribute__ ((aligned(16))); -__m128i a_i_m7_m5 __attribute__ ((aligned(16))); -__m128i a_i_m7_m3 __attribute__ ((aligned(16))); -__m128i a_i_m7_m1 __attribute__ ((aligned(16))); -__m128i a_i_m7_p1 __attribute__ ((aligned(16))); -__m128i a_i_m7_p3 __attribute__ ((aligned(16))); -__m128i a_i_m7_p5 __attribute__ ((aligned(16))); -__m128i a_i_m7_p7 __attribute__ ((aligned(16))); -__m128i a_i_m5_m7 __attribute__ ((aligned(16))); -__m128i a_i_m5_m5 __attribute__ ((aligned(16))); -__m128i a_i_m5_m3 __attribute__ ((aligned(16))); -__m128i a_i_m5_m1 __attribute__ ((aligned(16))); -__m128i a_i_m5_p1 __attribute__ ((aligned(16))); -__m128i a_i_m5_p3 __attribute__ ((aligned(16))); -__m128i a_i_m5_p5 __attribute__ ((aligned(16))); -__m128i a_i_m5_p7 __attribute__ ((aligned(16))); -__m128i a_i_m3_m7 __attribute__ ((aligned(16))); -__m128i a_i_m3_m5 __attribute__ ((aligned(16))); -__m128i a_i_m3_m3 __attribute__ ((aligned(16))); -__m128i a_i_m3_m1 __attribute__ ((aligned(16))); -__m128i a_i_m3_p1 __attribute__ ((aligned(16))); -__m128i a_i_m3_p3 __attribute__ ((aligned(16))); -__m128i a_i_m3_p5 __attribute__ ((aligned(16))); -__m128i a_i_m3_p7 __attribute__ ((aligned(16))); -__m128i a_i_m1_m7 __attribute__ ((aligned(16))); -__m128i a_i_m1_m5 __attribute__ ((aligned(16))); -__m128i a_i_m1_m3 __attribute__ ((aligned(16))); -__m128i a_i_m1_m1 __attribute__ ((aligned(16))); -__m128i a_i_m1_p1 __attribute__ ((aligned(16))); -__m128i a_i_m1_p3 __attribute__ ((aligned(16))); -__m128i a_i_m1_p5 __attribute__ ((aligned(16))); -__m128i a_i_m1_p7 __attribute__ ((aligned(16))); -__m128i a_i_p1_m7 __attribute__ ((aligned(16))); -__m128i a_i_p1_m5 __attribute__ ((aligned(16))); -__m128i a_i_p1_m3 __attribute__ ((aligned(16))); -__m128i a_i_p1_m1 __attribute__ ((aligned(16))); -__m128i a_i_p1_p1 __attribute__ ((aligned(16))); -__m128i a_i_p1_p3 __attribute__ ((aligned(16))); -__m128i a_i_p1_p5 __attribute__ ((aligned(16))); -__m128i a_i_p1_p7 __attribute__ ((aligned(16))); -__m128i a_i_p3_m7 __attribute__ ((aligned(16))); -__m128i a_i_p3_m5 __attribute__ ((aligned(16))); -__m128i a_i_p3_m3 __attribute__ ((aligned(16))); -__m128i a_i_p3_m1 __attribute__ ((aligned(16))); -__m128i a_i_p3_p1 __attribute__ ((aligned(16))); -__m128i a_i_p3_p3 __attribute__ ((aligned(16))); -__m128i a_i_p3_p5 __attribute__ ((aligned(16))); -__m128i a_i_p3_p7 __attribute__ ((aligned(16))); -__m128i a_i_p5_m7 __attribute__ ((aligned(16))); -__m128i a_i_p5_m5 __attribute__ ((aligned(16))); -__m128i a_i_p5_m3 __attribute__ ((aligned(16))); -__m128i a_i_p5_m1 __attribute__ ((aligned(16))); -__m128i a_i_p5_p1 __attribute__ ((aligned(16))); -__m128i a_i_p5_p3 __attribute__ ((aligned(16))); -__m128i a_i_p5_p5 __attribute__ ((aligned(16))); -__m128i a_i_p5_p7 __attribute__ ((aligned(16))); -__m128i a_i_p7_m7 __attribute__ ((aligned(16))); -__m128i a_i_p7_m5 __attribute__ ((aligned(16))); -__m128i a_i_p7_m3 __attribute__ ((aligned(16))); -__m128i a_i_p7_m1 __attribute__ ((aligned(16))); -__m128i a_i_p7_p1 __attribute__ ((aligned(16))); -__m128i a_i_p7_p3 __attribute__ ((aligned(16))); -__m128i a_i_p7_p5 __attribute__ ((aligned(16))); -__m128i a_i_p7_p7 __attribute__ ((aligned(16))); - -__m128i psi_a_m7_m7 __attribute__ ((aligned(16))); -__m128i psi_a_m7_m5 __attribute__ ((aligned(16))); -__m128i psi_a_m7_m3 __attribute__ ((aligned(16))); -__m128i psi_a_m7_m1 __attribute__ ((aligned(16))); -__m128i psi_a_m7_p1 __attribute__ ((aligned(16))); -__m128i psi_a_m7_p3 __attribute__ ((aligned(16))); -__m128i psi_a_m7_p5 __attribute__ ((aligned(16))); -__m128i psi_a_m7_p7 __attribute__ ((aligned(16))); -__m128i psi_a_m5_m7 __attribute__ ((aligned(16))); -__m128i psi_a_m5_m5 __attribute__ ((aligned(16))); -__m128i psi_a_m5_m3 __attribute__ ((aligned(16))); -__m128i psi_a_m5_m1 __attribute__ ((aligned(16))); -__m128i psi_a_m5_p1 __attribute__ ((aligned(16))); -__m128i psi_a_m5_p3 __attribute__ ((aligned(16))); -__m128i psi_a_m5_p5 __attribute__ ((aligned(16))); -__m128i psi_a_m5_p7 __attribute__ ((aligned(16))); -__m128i psi_a_m3_m7 __attribute__ ((aligned(16))); -__m128i psi_a_m3_m5 __attribute__ ((aligned(16))); -__m128i psi_a_m3_m3 __attribute__ ((aligned(16))); -__m128i psi_a_m3_m1 __attribute__ ((aligned(16))); -__m128i psi_a_m3_p1 __attribute__ ((aligned(16))); -__m128i psi_a_m3_p3 __attribute__ ((aligned(16))); -__m128i psi_a_m3_p5 __attribute__ ((aligned(16))); -__m128i psi_a_m3_p7 __attribute__ ((aligned(16))); -__m128i psi_a_m1_m7 __attribute__ ((aligned(16))); -__m128i psi_a_m1_m5 __attribute__ ((aligned(16))); -__m128i psi_a_m1_m3 __attribute__ ((aligned(16))); -__m128i psi_a_m1_m1 __attribute__ ((aligned(16))); -__m128i psi_a_m1_p1 __attribute__ ((aligned(16))); -__m128i psi_a_m1_p3 __attribute__ ((aligned(16))); -__m128i psi_a_m1_p5 __attribute__ ((aligned(16))); -__m128i psi_a_m1_p7 __attribute__ ((aligned(16))); -__m128i psi_a_p1_m7 __attribute__ ((aligned(16))); -__m128i psi_a_p1_m5 __attribute__ ((aligned(16))); -__m128i psi_a_p1_m3 __attribute__ ((aligned(16))); -__m128i psi_a_p1_m1 __attribute__ ((aligned(16))); -__m128i psi_a_p1_p1 __attribute__ ((aligned(16))); -__m128i psi_a_p1_p3 __attribute__ ((aligned(16))); -__m128i psi_a_p1_p5 __attribute__ ((aligned(16))); -__m128i psi_a_p1_p7 __attribute__ ((aligned(16))); -__m128i psi_a_p3_m7 __attribute__ ((aligned(16))); -__m128i psi_a_p3_m5 __attribute__ ((aligned(16))); -__m128i psi_a_p3_m3 __attribute__ ((aligned(16))); -__m128i psi_a_p3_m1 __attribute__ ((aligned(16))); -__m128i psi_a_p3_p1 __attribute__ ((aligned(16))); -__m128i psi_a_p3_p3 __attribute__ ((aligned(16))); -__m128i psi_a_p3_p5 __attribute__ ((aligned(16))); -__m128i psi_a_p3_p7 __attribute__ ((aligned(16))); -__m128i psi_a_p5_m7 __attribute__ ((aligned(16))); -__m128i psi_a_p5_m5 __attribute__ ((aligned(16))); -__m128i psi_a_p5_m3 __attribute__ ((aligned(16))); -__m128i psi_a_p5_m1 __attribute__ ((aligned(16))); -__m128i psi_a_p5_p1 __attribute__ ((aligned(16))); -__m128i psi_a_p5_p3 __attribute__ ((aligned(16))); -__m128i psi_a_p5_p5 __attribute__ ((aligned(16))); -__m128i psi_a_p5_p7 __attribute__ ((aligned(16))); -__m128i psi_a_p7_m7 __attribute__ ((aligned(16))); -__m128i psi_a_p7_m5 __attribute__ ((aligned(16))); -__m128i psi_a_p7_m3 __attribute__ ((aligned(16))); -__m128i psi_a_p7_m1 __attribute__ ((aligned(16))); -__m128i psi_a_p7_p1 __attribute__ ((aligned(16))); -__m128i psi_a_p7_p3 __attribute__ ((aligned(16))); -__m128i psi_a_p7_p5 __attribute__ ((aligned(16))); -__m128i psi_a_p7_p7 __attribute__ ((aligned(16))); - -__m128i a_sq_m7_m7 __attribute__ ((aligned(16))); -__m128i a_sq_m7_m5 __attribute__ ((aligned(16))); -__m128i a_sq_m7_m3 __attribute__ ((aligned(16))); -__m128i a_sq_m7_m1 __attribute__ ((aligned(16))); -__m128i a_sq_m7_p1 __attribute__ ((aligned(16))); -__m128i a_sq_m7_p3 __attribute__ ((aligned(16))); -__m128i a_sq_m7_p5 __attribute__ ((aligned(16))); -__m128i a_sq_m7_p7 __attribute__ ((aligned(16))); -__m128i a_sq_m5_m7 __attribute__ ((aligned(16))); -__m128i a_sq_m5_m5 __attribute__ ((aligned(16))); -__m128i a_sq_m5_m3 __attribute__ ((aligned(16))); -__m128i a_sq_m5_m1 __attribute__ ((aligned(16))); -__m128i a_sq_m5_p1 __attribute__ ((aligned(16))); -__m128i a_sq_m5_p3 __attribute__ ((aligned(16))); -__m128i a_sq_m5_p5 __attribute__ ((aligned(16))); -__m128i a_sq_m5_p7 __attribute__ ((aligned(16))); -__m128i a_sq_m3_m7 __attribute__ ((aligned(16))); -__m128i a_sq_m3_m5 __attribute__ ((aligned(16))); -__m128i a_sq_m3_m3 __attribute__ ((aligned(16))); -__m128i a_sq_m3_m1 __attribute__ ((aligned(16))); -__m128i a_sq_m3_p1 __attribute__ ((aligned(16))); -__m128i a_sq_m3_p3 __attribute__ ((aligned(16))); -__m128i a_sq_m3_p5 __attribute__ ((aligned(16))); -__m128i a_sq_m3_p7 __attribute__ ((aligned(16))); -__m128i a_sq_m1_m7 __attribute__ ((aligned(16))); -__m128i a_sq_m1_m5 __attribute__ ((aligned(16))); -__m128i a_sq_m1_m3 __attribute__ ((aligned(16))); -__m128i a_sq_m1_m1 __attribute__ ((aligned(16))); -__m128i a_sq_m1_p1 __attribute__ ((aligned(16))); -__m128i a_sq_m1_p3 __attribute__ ((aligned(16))); -__m128i a_sq_m1_p5 __attribute__ ((aligned(16))); -__m128i a_sq_m1_p7 __attribute__ ((aligned(16))); -__m128i a_sq_p1_m7 __attribute__ ((aligned(16))); -__m128i a_sq_p1_m5 __attribute__ ((aligned(16))); -__m128i a_sq_p1_m3 __attribute__ ((aligned(16))); -__m128i a_sq_p1_m1 __attribute__ ((aligned(16))); -__m128i a_sq_p1_p1 __attribute__ ((aligned(16))); -__m128i a_sq_p1_p3 __attribute__ ((aligned(16))); -__m128i a_sq_p1_p5 __attribute__ ((aligned(16))); -__m128i a_sq_p1_p7 __attribute__ ((aligned(16))); -__m128i a_sq_p3_m7 __attribute__ ((aligned(16))); -__m128i a_sq_p3_m5 __attribute__ ((aligned(16))); -__m128i a_sq_p3_m3 __attribute__ ((aligned(16))); -__m128i a_sq_p3_m1 __attribute__ ((aligned(16))); -__m128i a_sq_p3_p1 __attribute__ ((aligned(16))); -__m128i a_sq_p3_p3 __attribute__ ((aligned(16))); -__m128i a_sq_p3_p5 __attribute__ ((aligned(16))); -__m128i a_sq_p3_p7 __attribute__ ((aligned(16))); -__m128i a_sq_p5_m7 __attribute__ ((aligned(16))); -__m128i a_sq_p5_m5 __attribute__ ((aligned(16))); -__m128i a_sq_p5_m3 __attribute__ ((aligned(16))); -__m128i a_sq_p5_m1 __attribute__ ((aligned(16))); -__m128i a_sq_p5_p1 __attribute__ ((aligned(16))); -__m128i a_sq_p5_p3 __attribute__ ((aligned(16))); -__m128i a_sq_p5_p5 __attribute__ ((aligned(16))); -__m128i a_sq_p5_p7 __attribute__ ((aligned(16))); -__m128i a_sq_p7_m7 __attribute__ ((aligned(16))); -__m128i a_sq_p7_m5 __attribute__ ((aligned(16))); -__m128i a_sq_p7_m3 __attribute__ ((aligned(16))); -__m128i a_sq_p7_m1 __attribute__ ((aligned(16))); -__m128i a_sq_p7_p1 __attribute__ ((aligned(16))); -__m128i a_sq_p7_p3 __attribute__ ((aligned(16))); -__m128i a_sq_p7_p5 __attribute__ ((aligned(16))); -__m128i a_sq_p7_p7 __attribute__ ((aligned(16))); - -__m128i bit_met_m7_m7 __attribute__ ((aligned(16))); -__m128i bit_met_m7_m5 __attribute__ ((aligned(16))); -__m128i bit_met_m7_m3 __attribute__ ((aligned(16))); -__m128i bit_met_m7_m1 __attribute__ ((aligned(16))); -__m128i bit_met_m7_p1 __attribute__ ((aligned(16))); -__m128i bit_met_m7_p3 __attribute__ ((aligned(16))); -__m128i bit_met_m7_p5 __attribute__ ((aligned(16))); -__m128i bit_met_m7_p7 __attribute__ ((aligned(16))); -__m128i bit_met_m5_m7 __attribute__ ((aligned(16))); -__m128i bit_met_m5_m5 __attribute__ ((aligned(16))); -__m128i bit_met_m5_m3 __attribute__ ((aligned(16))); -__m128i bit_met_m5_m1 __attribute__ ((aligned(16))); -__m128i bit_met_m5_p1 __attribute__ ((aligned(16))); -__m128i bit_met_m5_p3 __attribute__ ((aligned(16))); -__m128i bit_met_m5_p5 __attribute__ ((aligned(16))); -__m128i bit_met_m5_p7 __attribute__ ((aligned(16))); -__m128i bit_met_m3_m7 __attribute__ ((aligned(16))); -__m128i bit_met_m3_m5 __attribute__ ((aligned(16))); -__m128i bit_met_m3_m3 __attribute__ ((aligned(16))); -__m128i bit_met_m3_m1 __attribute__ ((aligned(16))); -__m128i bit_met_m3_p1 __attribute__ ((aligned(16))); -__m128i bit_met_m3_p3 __attribute__ ((aligned(16))); -__m128i bit_met_m3_p5 __attribute__ ((aligned(16))); -__m128i bit_met_m3_p7 __attribute__ ((aligned(16))); -__m128i bit_met_m1_m7 __attribute__ ((aligned(16))); -__m128i bit_met_m1_m5 __attribute__ ((aligned(16))); -__m128i bit_met_m1_m3 __attribute__ ((aligned(16))); -__m128i bit_met_m1_m1 __attribute__ ((aligned(16))); -__m128i bit_met_m1_p1 __attribute__ ((aligned(16))); -__m128i bit_met_m1_p3 __attribute__ ((aligned(16))); -__m128i bit_met_m1_p5 __attribute__ ((aligned(16))); -__m128i bit_met_m1_p7 __attribute__ ((aligned(16))); -__m128i bit_met_p1_m7 __attribute__ ((aligned(16))); -__m128i bit_met_p1_m5 __attribute__ ((aligned(16))); -__m128i bit_met_p1_m3 __attribute__ ((aligned(16))); -__m128i bit_met_p1_m1 __attribute__ ((aligned(16))); -__m128i bit_met_p1_p1 __attribute__ ((aligned(16))); -__m128i bit_met_p1_p3 __attribute__ ((aligned(16))); -__m128i bit_met_p1_p5 __attribute__ ((aligned(16))); -__m128i bit_met_p1_p7 __attribute__ ((aligned(16))); -__m128i bit_met_p3_m7 __attribute__ ((aligned(16))); -__m128i bit_met_p3_m5 __attribute__ ((aligned(16))); -__m128i bit_met_p3_m3 __attribute__ ((aligned(16))); -__m128i bit_met_p3_m1 __attribute__ ((aligned(16))); -__m128i bit_met_p3_p1 __attribute__ ((aligned(16))); -__m128i bit_met_p3_p3 __attribute__ ((aligned(16))); -__m128i bit_met_p3_p5 __attribute__ ((aligned(16))); -__m128i bit_met_p3_p7 __attribute__ ((aligned(16))); -__m128i bit_met_p5_m7 __attribute__ ((aligned(16))); -__m128i bit_met_p5_m5 __attribute__ ((aligned(16))); -__m128i bit_met_p5_m3 __attribute__ ((aligned(16))); -__m128i bit_met_p5_m1 __attribute__ ((aligned(16))); -__m128i bit_met_p5_p1 __attribute__ ((aligned(16))); -__m128i bit_met_p5_p3 __attribute__ ((aligned(16))); -__m128i bit_met_p5_p5 __attribute__ ((aligned(16))); -__m128i bit_met_p5_p7 __attribute__ ((aligned(16))); -__m128i bit_met_p7_m7 __attribute__ ((aligned(16))); -__m128i bit_met_p7_m5 __attribute__ ((aligned(16))); -__m128i bit_met_p7_m3 __attribute__ ((aligned(16))); -__m128i bit_met_p7_m1 __attribute__ ((aligned(16))); -__m128i bit_met_p7_p1 __attribute__ ((aligned(16))); -__m128i bit_met_p7_p3 __attribute__ ((aligned(16))); -__m128i bit_met_p7_p5 __attribute__ ((aligned(16))); -__m128i bit_met_p7_p7 __attribute__ ((aligned(16))); - -__m128i y0_p_1_1 __attribute__ ((aligned(16))); -__m128i y0_p_1_3 __attribute__ ((aligned(16))); -__m128i y0_p_1_5 __attribute__ ((aligned(16))); -__m128i y0_p_1_7 __attribute__ ((aligned(16))); -__m128i y0_p_3_1 __attribute__ ((aligned(16))); -__m128i y0_p_3_3 __attribute__ ((aligned(16))); -__m128i y0_p_3_5 __attribute__ ((aligned(16))); -__m128i y0_p_3_7 __attribute__ ((aligned(16))); -__m128i y0_p_5_1 __attribute__ ((aligned(16))); -__m128i y0_p_5_3 __attribute__ ((aligned(16))); -__m128i y0_p_5_5 __attribute__ ((aligned(16))); -__m128i y0_p_5_7 __attribute__ ((aligned(16))); -__m128i y0_p_7_1 __attribute__ ((aligned(16))); -__m128i y0_p_7_3 __attribute__ ((aligned(16))); -__m128i y0_p_7_5 __attribute__ ((aligned(16))); -__m128i y0_p_7_7 __attribute__ ((aligned(16))); -__m128i y0_m_1_1 __attribute__ ((aligned(16))); -__m128i y0_m_1_3 __attribute__ ((aligned(16))); -__m128i y0_m_1_5 __attribute__ ((aligned(16))); -__m128i y0_m_1_7 __attribute__ ((aligned(16))); -__m128i y0_m_3_1 __attribute__ ((aligned(16))); -__m128i y0_m_3_3 __attribute__ ((aligned(16))); -__m128i y0_m_3_5 __attribute__ ((aligned(16))); -__m128i y0_m_3_7 __attribute__ ((aligned(16))); -__m128i y0_m_5_1 __attribute__ ((aligned(16))); -__m128i y0_m_5_3 __attribute__ ((aligned(16))); -__m128i y0_m_5_5 __attribute__ ((aligned(16))); -__m128i y0_m_5_7 __attribute__ ((aligned(16))); -__m128i y0_m_7_1 __attribute__ ((aligned(16))); -__m128i y0_m_7_3 __attribute__ ((aligned(16))); -__m128i y0_m_7_5 __attribute__ ((aligned(16))); -__m128i y0_m_7_7 __attribute__ ((aligned(16))); - -__m128i xmm0 __attribute__ ((aligned(16))); -__m128i xmm1 __attribute__ ((aligned(16))); -__m128i xmm2 __attribute__ ((aligned(16))); -__m128i xmm3 __attribute__ ((aligned(16))); -__m128i xmm4 __attribute__ ((aligned(16))); -__m128i xmm5 __attribute__ ((aligned(16))); -__m128i xmm6 __attribute__ ((aligned(16))); -__m128i xmm7 __attribute__ ((aligned(16))); -__m128i xmm8 __attribute__ ((aligned(16))); - -__m128i y0r __attribute__ ((aligned(16))); -__m128i y0i __attribute__ ((aligned(16))); -__m128i y1r __attribute__ ((aligned(16))); -__m128i y1i __attribute__ ((aligned(16))); -__m128i y2r __attribute__ ((aligned(16))); -__m128i y2i __attribute__ ((aligned(16))); - -__m128i logmax_num_re0 __attribute__ ((aligned(16))); -__m128i logmax_num_im0 __attribute__ ((aligned(16))); -__m128i logmax_den_re0 __attribute__ ((aligned(16))); -__m128i logmax_den_im0 __attribute__ ((aligned(16))); -__m128i logmax_num_re1 __attribute__ ((aligned(16))); -__m128i logmax_num_im1 __attribute__ ((aligned(16))); -__m128i logmax_den_re1 __attribute__ ((aligned(16))); -__m128i logmax_den_im1 __attribute__ ((aligned(16))); - -__m128i tmp_result __attribute__ ((aligned(16))); -__m128i tmp_result2 __attribute__ ((aligned(16))); -__m128i tmp_result3 __attribute__ ((aligned(16))); -__m128i tmp_result4 __attribute__ ((aligned(16))); - - //============================================================================================== // Auxiliary Makros // calculates psi_a = psi_r*a_r + psi_i*a_i -#define prodsum_psi_a_epi16(psi_r,a_r,psi_i,a_i,psi_a) tmp_result = _mm_mulhi_epi16(psi_r,a_r); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result2 = _mm_mulhi_epi16(psi_i,a_i); tmp_result2 = _mm_slli_epi16(tmp_result2,1); psi_a = _mm_adds_epi16(tmp_result,tmp_result2); +#define prodsum_psi_a_epi16(psi_r, a_r, psi_i, a_i, psi_a) \ + tmp_result = _mm_mulhi_epi16(psi_r, a_r); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result2 = _mm_mulhi_epi16(psi_i, a_i); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + simde__m128i psi_a = _mm_adds_epi16(tmp_result, tmp_result2); // calculate interference magnitude -#define interference_abs_epi16(psi,int_ch_mag,int_mag,c1,c2) tmp_result = _mm_cmplt_epi16(psi,int_ch_mag); tmp_result2 = _mm_xor_si128(tmp_result,(*(__m128i*)&ones[0])); tmp_result = _mm_and_si128(tmp_result,c1); tmp_result2 = _mm_and_si128(tmp_result2,c2); int_mag = _mm_or_si128(tmp_result,tmp_result2); +#define interference_abs_epi16(psi, int_ch_mag, int_mag, c1, c2) \ + tmp_result = _mm_cmplt_epi16(psi, int_ch_mag); \ + tmp_result2 = _mm_xor_si128(tmp_result, (*(__m128i *)&ones[0])); \ + tmp_result = _mm_and_si128(tmp_result, c1); \ + tmp_result2 = _mm_and_si128(tmp_result2, c2); \ + simde__m128i int_mag = _mm_or_si128(tmp_result, tmp_result2); // calculate interference magnitude // tmp_result = ones in shorts corr. to interval 2<=x<=4, tmp_result2 interval < 2, tmp_result3 interval 46 -#define interference_abs_64qam_epi16(psi,int_ch_mag,int_two_ch_mag,int_three_ch_mag,a,c1,c3,c5,c7) tmp_result = _mm_cmplt_epi16(psi,int_two_ch_mag); tmp_result3 = _mm_xor_si128(tmp_result,(*(__m128i*)&ones[0])); tmp_result2 = _mm_cmplt_epi16(psi,int_ch_mag); tmp_result = _mm_xor_si128(tmp_result,tmp_result2); tmp_result4 = _mm_cmpgt_epi16(psi,int_three_ch_mag); tmp_result3 = _mm_xor_si128(tmp_result3,tmp_result4); tmp_result = _mm_and_si128(tmp_result,c3); tmp_result2 = _mm_and_si128(tmp_result2,c1); tmp_result3 = _mm_and_si128(tmp_result3,c5); tmp_result4 = _mm_and_si128(tmp_result4,c7); tmp_result = _mm_or_si128(tmp_result,tmp_result2); tmp_result3 = _mm_or_si128(tmp_result3,tmp_result4); a = _mm_or_si128(tmp_result,tmp_result3); +#define interference_abs_64qam_epi16(psi, int_ch_mag, int_two_ch_mag, int_three_ch_mag, a, c1, c3, c5, c7) \ + tmp_result = _mm_cmplt_epi16(psi, int_two_ch_mag); \ + tmp_result3 = _mm_xor_si128(tmp_result, (*(__m128i *)&ones[0])); \ + tmp_result2 = _mm_cmplt_epi16(psi, int_ch_mag); \ + tmp_result = _mm_xor_si128(tmp_result, tmp_result2); \ + tmp_result4 = _mm_cmpgt_epi16(psi, int_three_ch_mag); \ + tmp_result3 = _mm_xor_si128(tmp_result3, tmp_result4); \ + tmp_result = _mm_and_si128(tmp_result, c3); \ + tmp_result2 = _mm_and_si128(tmp_result2, c1); \ + tmp_result3 = _mm_and_si128(tmp_result3, c5); \ + tmp_result4 = _mm_and_si128(tmp_result4, c7); \ + tmp_result = _mm_or_si128(tmp_result, tmp_result2); \ + tmp_result3 = _mm_or_si128(tmp_result3, tmp_result4); \ + simde__m128i a = _mm_or_si128(tmp_result, tmp_result3); // calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor -#define square_a_epi16(a_r,a_i,int_ch_mag,scale_factor,a_sq) tmp_result = _mm_mulhi_epi16(a_r,a_r); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result = _mm_mulhi_epi16(tmp_result,scale_factor); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result = _mm_mulhi_epi16(tmp_result,int_ch_mag); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result2 = _mm_mulhi_epi16(a_i,a_i); tmp_result2 = _mm_slli_epi16(tmp_result2,1); tmp_result2 = _mm_mulhi_epi16(tmp_result2,scale_factor); tmp_result2 = _mm_slli_epi16(tmp_result2,1); tmp_result2 = _mm_mulhi_epi16(tmp_result2,int_ch_mag); tmp_result2 = _mm_slli_epi16(tmp_result2,1); a_sq = _mm_adds_epi16(tmp_result,tmp_result2); +#define square_a_epi16(a_r, a_i, int_ch_mag, scale_factor, a_sq) \ + tmp_result = _mm_mulhi_epi16(a_r, a_r); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result = _mm_mulhi_epi16(tmp_result, scale_factor); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result = _mm_mulhi_epi16(tmp_result, int_ch_mag); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result2 = _mm_mulhi_epi16(a_i, a_i); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + tmp_result2 = _mm_mulhi_epi16(tmp_result2, scale_factor); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + tmp_result2 = _mm_mulhi_epi16(tmp_result2, int_ch_mag); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + simde__m128i a_sq = _mm_adds_epi16(tmp_result, tmp_result2); // calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor for 64-QAM -#define square_a_64qam_epi16(a_r,a_i,int_ch_mag,scale_factor,a_sq) tmp_result = _mm_mulhi_epi16(a_r,a_r); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result = _mm_mulhi_epi16(tmp_result,scale_factor); tmp_result = _mm_slli_epi16(tmp_result,3); tmp_result = _mm_mulhi_epi16(tmp_result,int_ch_mag); tmp_result = _mm_slli_epi16(tmp_result,1); tmp_result2 = _mm_mulhi_epi16(a_i,a_i); tmp_result2 = _mm_slli_epi16(tmp_result2,1); tmp_result2 = _mm_mulhi_epi16(tmp_result2,scale_factor); tmp_result2 = _mm_slli_epi16(tmp_result2,3); tmp_result2 = _mm_mulhi_epi16(tmp_result2,int_ch_mag); tmp_result2 = _mm_slli_epi16(tmp_result2,1); a_sq = _mm_adds_epi16(tmp_result,tmp_result2); +#define square_a_64qam_epi16(a_r, a_i, int_ch_mag, scale_factor, a_sq) \ + tmp_result = _mm_mulhi_epi16(a_r, a_r); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result = _mm_mulhi_epi16(tmp_result, scale_factor); \ + tmp_result = _mm_slli_epi16(tmp_result, 3); \ + tmp_result = _mm_mulhi_epi16(tmp_result, int_ch_mag); \ + tmp_result = _mm_slli_epi16(tmp_result, 1); \ + tmp_result2 = _mm_mulhi_epi16(a_i, a_i); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + tmp_result2 = _mm_mulhi_epi16(tmp_result2, scale_factor); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 3); \ + tmp_result2 = _mm_mulhi_epi16(tmp_result2, int_ch_mag); \ + tmp_result2 = _mm_slli_epi16(tmp_result2, 1); \ + simde__m128i a_sq = _mm_adds_epi16(tmp_result, tmp_result2); #elif defined(__arm__) || defined(__aarch64__) @@ -897,8 +390,8 @@ void qam16_llr(int16_t *stream0_in, for (i=0; i>2; i+=2) { // in each iteration, we take 8 complex samples #if defined(__x86_64__) || defined(__i386__) - xmm0 = rho01_128i[i]; // 4 symbols - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; // 4 symbols + simde__m128i xmm1 = rho01_128i[i + 1]; // put (rho_r + rho_i)/2sqrt2 in rho_rpi // put (rho_r - rho_i)/2sqrt2 in rho_rmi @@ -1528,10 +1021,10 @@ void qpsk_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // divide by sqrt(8), no shift needed ONE_OVER_SQRT_8 = Q1.16 rho_rpi = _mm_mulhi_epi16(rho_rpi,ONE_OVER_SQRT_8); @@ -1555,8 +1048,8 @@ void qpsk_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); y0r_over2 = _mm_srai_epi16(y0r,1); // divide by 2 y0i_over2 = _mm_srai_epi16(y0i,1); // divide by 2 @@ -1577,8 +1070,8 @@ void qpsk_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] y1r_over2 = _mm_srai_epi16(y1r,1); // divide by 2 y1i_over2 = _mm_srai_epi16(y1i,1); // divide by 2 @@ -1593,7 +1086,7 @@ void qpsk_qpsk(short *stream0_in, xmm2 = _mm_adds_epi16(A,y0i_over2); // = |y1r/2 - rho/sqrt(8)| + y0i/2 xmm3 = _mm_subs_epi16(y1i_over2,rho_rmi); B = _mm_abs_epi16(xmm3); // B = |y1i/2 - rho*/sqrt(8)| - logmax_num_re0 = _mm_adds_epi16(B,xmm2); // = |y1r/2 - rho/sqrt(8)|+|y1i/2 - rho*/sqrt(8)| + y0i/2 + simde__m128i logmax_num_re0 = _mm_adds_epi16(B, xmm2); // = |y1r/2 - rho/sqrt(8)|+|y1i/2 - rho*/sqrt(8)| + y0i/2 // 2 term for numerator of LLR xmm3 = _mm_subs_epi16(y1r_over2,rho_rmi); @@ -1610,7 +1103,7 @@ void qpsk_qpsk(short *stream0_in, xmm2 = _mm_adds_epi16(E,y0i_over2); // = |y1r/2 + rho*/4| + y0i/2 xmm3 = _mm_subs_epi16(y1i_over2,rho_rpi); F = _mm_abs_epi16(xmm3); // F = |y1i/2 - rho/4| - logmax_den_re0 = _mm_adds_epi16(F,xmm2); // = |y1r/2 + rho*/4| + |y1i/2 - rho/4| + y0i/2 + simde__m128i logmax_den_re0 = _mm_adds_epi16(F, xmm2); // = |y1r/2 + rho*/4| + |y1i/2 - rho/4| + y0i/2 // 2 term for denominator of LLR xmm3 = _mm_adds_epi16(y1r_over2,rho_rpi); @@ -1625,7 +1118,7 @@ void qpsk_qpsk(short *stream0_in, // 1 term for nominator of LLR xmm2 = _mm_adds_epi16(A,y0r_over2); - logmax_num_im0 = _mm_adds_epi16(B,xmm2); // = |y1r/2 - rho/4| + |y1i/2 - rho*/4| + y0r/2 + simde__m128i logmax_num_im0 = _mm_adds_epi16(B, xmm2); // = |y1r/2 - rho/4| + |y1i/2 - rho*/4| + y0r/2 // 2 term for nominator of LLR xmm2 = _mm_subs_epi16(E,y0r_over2); @@ -1635,7 +1128,7 @@ void qpsk_qpsk(short *stream0_in, // 1 term for denominator of LLR xmm2 = _mm_adds_epi16(C,y0r_over2); - logmax_den_im0 = _mm_adds_epi16(D,xmm2); // = |y1r/2 - rho*/4| + |y1i/2 + rho/4| - y0r/2 + simde__m128i logmax_den_im0 = _mm_adds_epi16(D, xmm2); // = |y1r/2 - rho*/4| + |y1i/2 + rho/4| - y0r/2 xmm2 = _mm_subs_epi16(G,y0r_over2); xmm2 = _mm_adds_epi16(xmm2,H); // = |y1r/2 + rho/4| + |y1i/2 + rho*/4| - y0r/2 @@ -1787,8 +1280,8 @@ void qpsk_qam16(int16_t *stream0_in, #if defined(__x86_64__) || defined(__i386__) - xmm0 = rho01_128i[i]; // 4 symbols - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; // 4 symbols + simde__m128i xmm1 = rho01_128i[i + 1]; // put (rho_r + rho_i)/2sqrt2 in rho_rpi // put (rho_r - rho_i)/2sqrt2 in rho_rmi @@ -1800,10 +1293,10 @@ void qpsk_qam16(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // divide by sqrt(2) rho_rpi = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_2); @@ -1825,8 +1318,8 @@ void qpsk_qam16(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // divide by sqrt(2) y0r_over2 = _mm_mulhi_epi16(y0r, ONE_OVER_SQRT_2); @@ -1834,8 +1327,8 @@ void qpsk_qam16(int16_t *stream0_in, y0r_over2 = _mm_slli_epi16(y0r,1); y0i_over2 = _mm_slli_epi16(y0i,1); - y0_p_1_1 = _mm_adds_epi16(y0r_over2, y0i_over2); - y0_m_1_1 = _mm_subs_epi16(y0r_over2, y0i_over2); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_over2, y0i_over2); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_over2, y0i_over2); // Compute real and imaginary parts of MF output for stream 1 xmm0 = stream1_128i_in[i]; @@ -1849,28 +1342,28 @@ void qpsk_qam16(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] xmm0 = _mm_setzero_si128(); // ZERO // compute psi xmm3 = _mm_subs_epi16(y1r,rho_rpi); - psi_r_p1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1i,rho_rmi); - psi_i_p1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1r,rho_rmi); - psi_r_p1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1i,rho_rpi); - psi_i_p1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1r,rho_rmi); - psi_r_m1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1i,rho_rpi); - psi_i_m1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1r,rho_rpi); - psi_r_m1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1i,rho_rmi); - psi_i_m1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm3); // Rearrange interfering channel magnitudes xmm2 = ch_mag_128i_i[i]; @@ -1884,7 +1377,7 @@ void qpsk_qam16(int16_t *stream0_in, xmm3 = _mm_shuffle_epi32(xmm3,0xd8); //_MM_SHUFFLE(0,2,1,3)); ch_mag_int = _mm_unpacklo_epi64(xmm2,xmm3); - + simde__m128i tmp_result, tmp_result2; // calculate optimal interference amplitudes interference_abs_epi16(psi_r_p1_p1 , ch_mag_int, a_r_p1_p1 , ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_i_p1_p1 , ch_mag_int, a_i_p1_p1 , ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); @@ -1909,26 +1402,26 @@ void qpsk_qam16(int16_t *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); - bit_met_p1_p1 = _mm_adds_epi16(xmm0, y0_p_1_1); + simde__m128i bit_met_p1_p1 = _mm_adds_epi16(xmm0, y0_p_1_1); xmm0 = _mm_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); - bit_met_p1_m1 = _mm_adds_epi16(xmm0, y0_m_1_1); + simde__m128i bit_met_p1_m1 = _mm_adds_epi16(xmm0, y0_m_1_1); xmm0 = _mm_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); - bit_met_m1_p1 = _mm_subs_epi16(xmm0, y0_m_1_1); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm0, y0_m_1_1); xmm0 = _mm_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); - bit_met_m1_m1 = _mm_subs_epi16(xmm0, y0_p_1_1); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm0, y0_p_1_1); // MSB - logmax_num_re0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p1_m1); // bit=0 - logmax_den_re0 = _mm_max_epi16(bit_met_m1_p1,bit_met_m1_m1); // bit=1 + simde__m128i logmax_num_re0 = _mm_max_epi16(bit_met_p1_p1, bit_met_p1_m1); // bit=0 + simde__m128i logmax_den_re0 = _mm_max_epi16(bit_met_m1_p1, bit_met_m1_m1); // bit=1 y0r = _mm_subs_epi16(logmax_num_re0,logmax_den_re0); // LSB - logmax_num_im0 = _mm_max_epi16(bit_met_p1_p1,bit_met_m1_p1); // bit=0 - logmax_den_im0 = _mm_max_epi16(bit_met_p1_m1,bit_met_m1_m1); // bit=1 + simde__m128i logmax_num_im0 = _mm_max_epi16(bit_met_p1_p1, bit_met_m1_p1); // bit=0 + simde__m128i logmax_den_im0 = _mm_max_epi16(bit_met_p1_m1, bit_met_m1_m1); // bit=1 y0i = _mm_subs_epi16(logmax_num_im0,logmax_den_im0); @@ -2066,8 +1559,8 @@ void qpsk_qam64(short *stream0_in, #if defined(__x86_64__) || defined(__i386__) - xmm0 = rho01_128i[i]; // 4 symbols - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; // 4 symbols + simde__m128i xmm1 = rho01_128i[i + 1]; // put (rho_r + rho_i)/sqrt2 in rho_rpi // put (rho_r - rho_i)/sqrt2 in rho_rmi @@ -2079,10 +1572,10 @@ void qpsk_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // divide by sqrt(2) rho_rpi = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_2); @@ -2104,8 +1597,8 @@ void qpsk_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // divide by sqrt(2) y0r_over2 = _mm_mulhi_epi16(y0r, ONE_OVER_SQRT_2); @@ -2113,8 +1606,8 @@ void qpsk_qam64(short *stream0_in, y0r_over2 = _mm_slli_epi16(y0r,1); y0i_over2 = _mm_slli_epi16(y0i,1); - y0_p_1_1 = _mm_adds_epi16(y0r_over2, y0i_over2); - y0_m_1_1 = _mm_subs_epi16(y0r_over2, y0i_over2); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_over2, y0i_over2); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_over2, y0i_over2); // Compute real and imaginary parts of MF output for stream 1 xmm0 = stream1_128i_in[i]; @@ -2128,28 +1621,28 @@ void qpsk_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] xmm0 = _mm_setzero_si128(); // ZERO // compute psi xmm3 = _mm_subs_epi16(y1r,rho_rpi); - psi_r_p1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1i,rho_rmi); - psi_i_p1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1r,rho_rmi); - psi_r_p1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1i,rho_rpi); - psi_i_p1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1r,rho_rmi); - psi_r_m1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_subs_epi16(y1i,rho_rpi); - psi_i_m1_p1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1r,rho_rpi); - psi_r_m1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm3); xmm3 = _mm_adds_epi16(y1i,rho_rmi); - psi_i_m1_m1 = _mm_abs_epi16(xmm3); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm3); // Rearrange interfering channel magnitudes xmm2 = ch_mag_128i_i[i]; @@ -2166,7 +1659,7 @@ void qpsk_qam64(short *stream0_in, ch_mag_int_with_sigma2 = _mm_srai_epi16(ch_mag_int, 1); // *2 two_ch_mag_int_with_sigma2 = ch_mag_int; // *4 three_ch_mag_int_with_sigma2 = _mm_adds_epi16(ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2); // *6 - + simde__m128i tmp_result, tmp_result2, tmp_result3, tmp_result4; interference_abs_64qam_epi16(psi_r_p1_p1, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p1_p1, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, SEVEN_OVER_SQRT_2_42); interference_abs_64qam_epi16(psi_i_p1_p1, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_i_p1_p1, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, @@ -2207,26 +1700,26 @@ void qpsk_qam64(short *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); - bit_met_p1_p1 = _mm_adds_epi16(xmm0, y0_p_1_1); + simde__m128i bit_met_p1_p1 = _mm_adds_epi16(xmm0, y0_p_1_1); xmm0 = _mm_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); - bit_met_p1_m1 = _mm_adds_epi16(xmm0, y0_m_1_1); + simde__m128i bit_met_p1_m1 = _mm_adds_epi16(xmm0, y0_m_1_1); xmm0 = _mm_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); - bit_met_m1_p1 = _mm_subs_epi16(xmm0, y0_m_1_1); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm0, y0_m_1_1); xmm0 = _mm_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); - bit_met_m1_m1 = _mm_subs_epi16(xmm0, y0_p_1_1); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm0, y0_p_1_1); // MSB - logmax_num_re0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p1_m1); // bit=0 - logmax_den_re0 = _mm_max_epi16(bit_met_m1_p1,bit_met_m1_m1); // bit=1 + simde__m128i logmax_num_re0 = _mm_max_epi16(bit_met_p1_p1, bit_met_p1_m1); // bit=0 + simde__m128i logmax_den_re0 = _mm_max_epi16(bit_met_m1_p1, bit_met_m1_m1); // bit=1 y0r = _mm_subs_epi16(logmax_num_re0,logmax_den_re0); // LSB - logmax_num_im0 = _mm_max_epi16(bit_met_p1_p1,bit_met_m1_p1); // bit=0 - logmax_den_im0 = _mm_max_epi16(bit_met_p1_m1,bit_met_m1_m1); // bit=1 + simde__m128i logmax_num_im0 = _mm_max_epi16(bit_met_p1_p1, bit_met_m1_p1); // bit=0 + simde__m128i logmax_den_im0 = _mm_max_epi16(bit_met_p1_m1, bit_met_m1_m1); // bit=1 y0i = _mm_subs_epi16(logmax_num_im0,logmax_den_im0); @@ -2323,8 +1816,8 @@ void qam16_qpsk(short *stream0_in, #if defined(__x86_64__) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -2333,32 +1826,32 @@ void qam16_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi,ONE_OVER_SQRT_10); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi,ONE_OVER_SQRT_10); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi,THREE_OVER_SQRT_10); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi,THREE_OVER_SQRT_10); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_10); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_10); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_10); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_10); rho_rpi_3_3 = _mm_slli_epi16(rho_rpi_3_3,1); rho_rmi_3_3 = _mm_slli_epi16(rho_rmi_3_3,1); - xmm4 = _mm_mulhi_epi16(xmm2,ONE_OVER_SQRT_10); // Re(rho) - xmm5 = _mm_mulhi_epi16(xmm3,THREE_OVER_SQRT_10); // Im(rho) - xmm5 = _mm_slli_epi16(xmm5,1); + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_10); // Im(rho) + xmm5 = _mm_slli_epi16(xmm5, 1); - rho_rpi_1_3 = _mm_adds_epi16(xmm4,xmm5); - rho_rmi_1_3 = _mm_subs_epi16(xmm4,xmm5); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm5); - xmm6 = _mm_mulhi_epi16(xmm2,THREE_OVER_SQRT_10); // Re(rho) - xmm7 = _mm_mulhi_epi16(xmm3,ONE_OVER_SQRT_10); // Im(rho) + simde__m128i xmm6 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_10); // Im(rho) xmm6 = _mm_slli_epi16(xmm6,1); - rho_rpi_3_1 = _mm_adds_epi16(xmm6,xmm7); - rho_rmi_3_1 = _mm_subs_epi16(xmm6,xmm7); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm6, xmm7); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm6, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -2371,75 +1864,75 @@ void qam16_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] xmm0 = _mm_setzero_si128(); // ZERO xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r - psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| xmm2= _mm_subs_epi16(rho_rmi_1_1,y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_1,y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_1,y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_1); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_3); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_1); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_1); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_1); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_3); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_3); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_3); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -2452,8 +1945,8 @@ void qam16_qpsk(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -2476,35 +1969,35 @@ void qam16_qpsk(short *stream0_in, y0i_three_over_sqrt10 = _mm_slli_epi16(y0i_three_over_sqrt10,1); // Compute necessary combination of required terms - y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10,y0i_over_sqrt10); - y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10,y0i_over_sqrt10); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10, y0i_over_sqrt10); - y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); - y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); // Add psi - psi_a_p1_p1 = _mm_adds_epi16(psi_r_p1_p1 ,psi_i_p1_p1); - psi_a_p1_p3 = _mm_adds_epi16(psi_r_p1_p3 ,psi_i_p1_p3); - psi_a_p3_p1 = _mm_adds_epi16(psi_r_p3_p1 ,psi_i_p3_p1); - psi_a_p3_p3 = _mm_adds_epi16(psi_r_p3_p3 ,psi_i_p3_p3); - psi_a_p1_m1 = _mm_adds_epi16(psi_r_p1_m1 ,psi_i_p1_m1); - psi_a_p1_m3 = _mm_adds_epi16(psi_r_p1_m3 ,psi_i_p1_m3); - psi_a_p3_m1 = _mm_adds_epi16(psi_r_p3_m1 ,psi_i_p3_m1); - psi_a_p3_m3 = _mm_adds_epi16(psi_r_p3_m3 ,psi_i_p3_m3); - psi_a_m1_p1 = _mm_adds_epi16(psi_r_m1_p1 ,psi_i_m1_p1); - psi_a_m1_p3 = _mm_adds_epi16(psi_r_m1_p3 ,psi_i_m1_p3); - psi_a_m3_p1 = _mm_adds_epi16(psi_r_m3_p1 ,psi_i_m3_p1); - psi_a_m3_p3 = _mm_adds_epi16(psi_r_m3_p3 ,psi_i_m3_p3); - psi_a_m1_m1 = _mm_adds_epi16(psi_r_m1_m1 ,psi_i_m1_m1); - psi_a_m1_m3 = _mm_adds_epi16(psi_r_m1_m3 ,psi_i_m1_m3); - psi_a_m3_m1 = _mm_adds_epi16(psi_r_m3_m1 ,psi_i_m3_m1); - psi_a_m3_m3 = _mm_adds_epi16(psi_r_m3_m3 ,psi_i_m3_m3); + simde__m128i psi_a_p1_p1 = _mm_adds_epi16(psi_r_p1_p1, psi_i_p1_p1); + simde__m128i psi_a_p1_p3 = _mm_adds_epi16(psi_r_p1_p3, psi_i_p1_p3); + simde__m128i psi_a_p3_p1 = _mm_adds_epi16(psi_r_p3_p1, psi_i_p3_p1); + simde__m128i psi_a_p3_p3 = _mm_adds_epi16(psi_r_p3_p3, psi_i_p3_p3); + simde__m128i psi_a_p1_m1 = _mm_adds_epi16(psi_r_p1_m1, psi_i_p1_m1); + simde__m128i psi_a_p1_m3 = _mm_adds_epi16(psi_r_p1_m3, psi_i_p1_m3); + simde__m128i psi_a_p3_m1 = _mm_adds_epi16(psi_r_p3_m1, psi_i_p3_m1); + simde__m128i psi_a_p3_m3 = _mm_adds_epi16(psi_r_p3_m3, psi_i_p3_m3); + simde__m128i psi_a_m1_p1 = _mm_adds_epi16(psi_r_m1_p1, psi_i_m1_p1); + simde__m128i psi_a_m1_p3 = _mm_adds_epi16(psi_r_m1_p3, psi_i_m1_p3); + simde__m128i psi_a_m3_p1 = _mm_adds_epi16(psi_r_m3_p1, psi_i_m3_p1); + simde__m128i psi_a_m3_p3 = _mm_adds_epi16(psi_r_m3_p3, psi_i_m3_p3); + simde__m128i psi_a_m1_m1 = _mm_adds_epi16(psi_r_m1_m1, psi_i_m1_m1); + simde__m128i psi_a_m1_m3 = _mm_adds_epi16(psi_r_m1_m3, psi_i_m1_m3); + simde__m128i psi_a_m3_m1 = _mm_adds_epi16(psi_r_m3_m1, psi_i_m3_m1); + simde__m128i psi_a_m3_m3 = _mm_adds_epi16(psi_r_m3_m3, psi_i_m3_m3); // scale by sqrt(2) psi_a_p1_p1 = _mm_mulhi_epi16(psi_a_p1_p1,ONE_OVER_SQRT_2); @@ -2552,52 +2045,52 @@ void qam16_qpsk(short *stream0_in, // Computing Metrics xmm1 = _mm_adds_epi16(psi_a_p1_p1, y0_p_1_1); - bit_met_p1_p1= _mm_subs_epi16(xmm1, ch_mag_over_10); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm1 = _mm_adds_epi16(psi_a_p1_p3, y0_p_1_3); - bit_met_p1_p3= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_adds_epi16(psi_a_p1_m1, y0_m_1_1); - bit_met_p1_m1= _mm_subs_epi16(xmm1, ch_mag_over_10); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm1 = _mm_adds_epi16(psi_a_p1_m3, y0_m_1_3); - bit_met_p1_m3= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_adds_epi16(psi_a_p3_p1, y0_p_3_1); - bit_met_p3_p1= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_adds_epi16(psi_a_p3_p3, y0_p_3_3); - bit_met_p3_p3= _mm_subs_epi16(xmm1, ch_mag_9_over_10); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm1 = _mm_adds_epi16(psi_a_p3_m1, y0_m_3_1); - bit_met_p3_m1= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_adds_epi16(psi_a_p3_m3, y0_m_3_3); - bit_met_p3_m3= _mm_subs_epi16(xmm1, ch_mag_9_over_10); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm1 = _mm_subs_epi16(psi_a_m1_p1, y0_m_1_1); - bit_met_m1_p1= _mm_subs_epi16(xmm1, ch_mag_over_10); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm1 = _mm_subs_epi16(psi_a_m1_p3, y0_m_1_3); - bit_met_m1_p3= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_subs_epi16(psi_a_m1_m1, y0_p_1_1); - bit_met_m1_m1= _mm_subs_epi16(xmm1, ch_mag_over_10); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm1 = _mm_subs_epi16(psi_a_m1_m3, y0_p_1_3); - bit_met_m1_m3= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_subs_epi16(psi_a_m3_p1, y0_m_3_1); - bit_met_m3_p1= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_subs_epi16(psi_a_m3_p3, y0_m_3_3); - bit_met_m3_p3= _mm_subs_epi16(xmm1, ch_mag_9_over_10); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm1 = _mm_subs_epi16(psi_a_m3_m1, y0_p_3_1); - bit_met_m3_m1= _mm_subs_epi16(xmm1, ch_mag_over_2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm1 = _mm_subs_epi16(psi_a_m3_m3, y0_p_3_3); - bit_met_m3_m3= _mm_subs_epi16(xmm1, ch_mag_9_over_10); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); // LLR of the first bit // Bit = 1 @@ -2607,7 +2100,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m3_m1,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re0= _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p1_p3); @@ -2616,7 +2109,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); // LLR of first bit [L1(1), L1(2), L1(3), L1(4), L1(5), L1(6), L1(7), L1(8)] y0r = _mm_subs_epi16(logmax_den_re0,logmax_num_re0); @@ -2629,7 +2122,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_m3,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p3_p1); @@ -2638,7 +2131,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re1 = _mm_max_epi16(xmm4, xmm5); // LLR of second bit [L2(1), L2(2), L2(3), L2(4)] y1r = _mm_subs_epi16(logmax_den_re1,logmax_num_re1); @@ -2651,7 +2144,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_m1_p1,bit_met_m1_p3); @@ -2660,7 +2153,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p1_m1,bit_met_p1_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im0 = _mm_max_epi16(xmm4, xmm5); // LLR of third bit [L3(1), L3(2), L3(3), L3(4)] y0i = _mm_subs_epi16(logmax_den_im0,logmax_num_im0); @@ -2673,7 +2166,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_m1,bit_met_p3_m1); @@ -2682,7 +2175,7 @@ void qam16_qpsk(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p1,bit_met_m3_p1); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im1 = _mm_max_epi16(xmm4, xmm5); // LLR of fourth bit [L4(1), L4(2), L4(3), L4(4)] y1i = _mm_subs_epi16(logmax_den_im1,logmax_num_im1); @@ -2831,8 +2324,8 @@ void qam16_qam16(short *stream0_in, #if defined(__x86_64__) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -2841,32 +2334,32 @@ void qam16_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi,ONE_OVER_SQRT_10); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi,ONE_OVER_SQRT_10); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi,THREE_OVER_SQRT_10); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi,THREE_OVER_SQRT_10); - rho_rpi_3_3 = _mm_slli_epi16(rho_rpi_3_3,1); - rho_rmi_3_3 = _mm_slli_epi16(rho_rmi_3_3,1); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_10); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_10); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_10); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_10); + rho_rpi_3_3 = _mm_slli_epi16(rho_rpi_3_3, 1); + rho_rmi_3_3 = _mm_slli_epi16(rho_rmi_3_3, 1); - xmm4 = _mm_mulhi_epi16(xmm2,ONE_OVER_SQRT_10); // Re(rho) - xmm5 = _mm_mulhi_epi16(xmm3,THREE_OVER_SQRT_10); // Im(rho) + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_10); // Im(rho) xmm5 = _mm_slli_epi16(xmm5,1); - rho_rpi_1_3 = _mm_adds_epi16(xmm4,xmm5); - rho_rmi_1_3 = _mm_subs_epi16(xmm4,xmm5); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm5); - xmm6 = _mm_mulhi_epi16(xmm2,THREE_OVER_SQRT_10); // Re(rho) - xmm7 = _mm_mulhi_epi16(xmm3,ONE_OVER_SQRT_10); // Im(rho) + simde__m128i xmm6 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_10); // Im(rho) xmm6 = _mm_slli_epi16(xmm6,1); - rho_rpi_3_1 = _mm_adds_epi16(xmm6,xmm7); - rho_rmi_3_1 = _mm_subs_epi16(xmm6,xmm7); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm6, xmm7); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm6, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -2879,75 +2372,75 @@ void qam16_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] xmm0 = _mm_setzero_si128(); // ZERO xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r - psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| xmm2= _mm_subs_epi16(rho_rmi_1_1,y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_1,y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_1,y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_1); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_3); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_1); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_1); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_1); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_3); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_3); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_3); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -2960,8 +2453,8 @@ void qam16_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -2997,18 +2490,18 @@ void qam16_qam16(short *stream0_in, y0i_three_over_sqrt10 = _mm_slli_epi16(y0i_three_over_sqrt10,1); // Compute necessary combination of required terms - y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10,y0i_over_sqrt10); - y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10,y0i_over_sqrt10); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10, y0i_over_sqrt10); - y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); - y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); - - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i tmp_result, tmp_result2; // Compute optimal interfering symbol magnitude interference_abs_epi16(psi_r_p1_p1 ,ch_mag_int,a_r_p1_p1,ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_i_p1_p1 ,ch_mag_int,a_i_p1_p1,ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); @@ -3090,67 +2583,67 @@ void qam16_qam16(short *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p1_p1,a_sq_p1_p1); xmm1 = _mm_adds_epi16(xmm0,y0_p_1_1); - bit_met_p1_p1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_p1_p3,a_sq_p1_p3); xmm1 = _mm_adds_epi16(xmm0,y0_p_1_3); - bit_met_p1_p3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p1_m1,a_sq_p1_m1); xmm1 = _mm_adds_epi16(xmm0,y0_m_1_1); - bit_met_p1_m1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_p1_m3,a_sq_p1_m3); xmm1 = _mm_adds_epi16(xmm0,y0_m_1_3); - bit_met_p1_m3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_p1,a_sq_p3_p1); xmm1 = _mm_adds_epi16(xmm0,y0_p_3_1); - bit_met_p3_p1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_p3,a_sq_p3_p3); xmm1 = _mm_adds_epi16(xmm0,y0_p_3_3); - bit_met_p3_p3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_p3_m1,a_sq_p3_m1); xmm1 = _mm_adds_epi16(xmm0,y0_m_3_1); - bit_met_p3_m1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_m3,a_sq_p3_m3); xmm1 = _mm_adds_epi16(xmm0,y0_m_3_3); - bit_met_p3_m3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_p1,a_sq_m1_p1); xmm1 = _mm_subs_epi16(xmm0,y0_m_1_1); - bit_met_m1_p1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_p3,a_sq_m1_p3); xmm1 = _mm_subs_epi16(xmm0,y0_m_1_3); - bit_met_m1_p3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m1_m1,a_sq_m1_m1); xmm1 = _mm_subs_epi16(xmm0,y0_p_1_1); - bit_met_m1_m1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_m3,a_sq_m1_m3); xmm1 = _mm_subs_epi16(xmm0,y0_p_1_3); - bit_met_m1_m3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_p1,a_sq_m3_p1); xmm1 = _mm_subs_epi16(xmm0,y0_m_3_1); - bit_met_m3_p1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_p3,a_sq_m3_p3); xmm1 = _mm_subs_epi16(xmm0,y0_m_3_3); - bit_met_m3_p3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_m3_m1,a_sq_m3_m1); xmm1 = _mm_subs_epi16(xmm0,y0_p_3_1); - bit_met_m3_m1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_m3,a_sq_m3_m3); xmm1 = _mm_subs_epi16(xmm0,y0_p_3_3); - bit_met_m3_m3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); // LLR of the first bit // Bit = 1 @@ -3160,7 +2653,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m3_m1,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re0= _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p1_p3); @@ -3169,7 +2662,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); // LLR of first bit [L1(1), L1(2), L1(3), L1(4), L1(5), L1(6), L1(7), L1(8)] y0r = _mm_subs_epi16(logmax_den_re0,logmax_num_re0); @@ -3182,7 +2675,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_m3,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p3_p1); @@ -3191,7 +2684,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re1 = _mm_max_epi16(xmm4, xmm5); // LLR of second bit [L2(1), L2(2), L2(3), L2(4)] y1r = _mm_subs_epi16(logmax_den_re1,logmax_num_re1); @@ -3204,7 +2697,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_m1_p1,bit_met_m1_p3); @@ -3213,7 +2706,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p1_m1,bit_met_p1_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im0 = _mm_max_epi16(xmm4, xmm5); // LLR of third bit [L3(1), L3(2), L3(3), L3(4)] y0i = _mm_subs_epi16(logmax_den_im0,logmax_num_im0); @@ -3226,7 +2719,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_m1,bit_met_p3_m1); @@ -3235,7 +2728,7 @@ void qam16_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p1,bit_met_m3_p1); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im1 = _mm_max_epi16(xmm4, xmm5); // LLR of fourth bit [L4(1), L4(2), L4(3), L4(4)] y1i = _mm_subs_epi16(logmax_den_im1,logmax_num_im1); @@ -3395,8 +2888,8 @@ void qam16_qam64(int16_t *stream0_in, #if defined(__x86_64__) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -3405,32 +2898,32 @@ void qam16_qam64(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi,ONE_OVER_SQRT_10); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi,ONE_OVER_SQRT_10); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi,THREE_OVER_SQRT_10); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi,THREE_OVER_SQRT_10); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_10); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_10); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_10); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_10); rho_rpi_3_3 = _mm_slli_epi16(rho_rpi_3_3,1); rho_rmi_3_3 = _mm_slli_epi16(rho_rmi_3_3,1); - xmm4 = _mm_mulhi_epi16(xmm2,ONE_OVER_SQRT_10); // Re(rho) - xmm5 = _mm_mulhi_epi16(xmm3,THREE_OVER_SQRT_10); // Im(rho) + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_10); // Im(rho) xmm5 = _mm_slli_epi16(xmm5,1); - rho_rpi_1_3 = _mm_adds_epi16(xmm4,xmm5); - rho_rmi_1_3 = _mm_subs_epi16(xmm4,xmm5); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm5); - xmm6 = _mm_mulhi_epi16(xmm2,THREE_OVER_SQRT_10); // Re(rho) - xmm7 = _mm_mulhi_epi16(xmm3,ONE_OVER_SQRT_10); // Im(rho) + simde__m128i xmm6 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_10); // Re(rho) + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_10); // Im(rho) xmm6 = _mm_slli_epi16(xmm6,1); - rho_rpi_3_1 = _mm_adds_epi16(xmm6,xmm7); - rho_rmi_3_1 = _mm_subs_epi16(xmm6,xmm7); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm6, xmm7); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm6, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -3443,75 +2936,75 @@ void qam16_qam64(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] xmm0 = _mm_setzero_si128(); // ZERO xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r - psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r| xmm2= _mm_subs_epi16(rho_rmi_1_1,y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_1,y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_1,y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_1_3,y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rmi_3_3,y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_1,y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_1,y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_1_3,y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_subs_epi16(rho_rpi_3_3,y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_1,y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_1_3,y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_1,y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(rho_rpi_3_3,y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_1); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_1_3); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_1); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_1); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_1); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1r,rho_rmi_3_3); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_1_3); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2= _mm_adds_epi16(y1i,rho_rmi_3_3); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -3524,8 +3017,8 @@ void qam16_qam64(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -3561,21 +3054,22 @@ void qam16_qam64(int16_t *stream0_in, y0i_three_over_sqrt10 = _mm_slli_epi16(y0i_three_over_sqrt10,1); // Compute necessary combination of required terms - y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10,y0i_over_sqrt10); - y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10,y0i_over_sqrt10); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_over_sqrt10, y0i_over_sqrt10); - y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); - y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_over_sqrt10, y0i_three_over_sqrt10); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_over_sqrt10); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_over_sqrt10); - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10,y0i_three_over_sqrt10); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt10, y0i_three_over_sqrt10); // Compute optimal interfering symbol magnitude ch_mag_int_with_sigma2 = _mm_srai_epi16(ch_mag_int, 1); // *2 two_ch_mag_int_with_sigma2 = ch_mag_int; // *4 + simde__m128i tmp_result, tmp_result2, tmp_result3, tmp_result4; three_ch_mag_int_with_sigma2 = _mm_adds_epi16(ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2); // *6 interference_abs_64qam_epi16(psi_r_p1_p1 ,ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p1_p1,ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42,FIVE_OVER_SQRT_2_42, @@ -3723,67 +3217,67 @@ void qam16_qam64(int16_t *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p1_p1,a_sq_p1_p1); xmm1 = _mm_adds_epi16(xmm0,y0_p_1_1); - bit_met_p1_p1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_p1_p3,a_sq_p1_p3); xmm1 = _mm_adds_epi16(xmm0,y0_p_1_3); - bit_met_p1_p3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p1_m1,a_sq_p1_m1); xmm1 = _mm_adds_epi16(xmm0,y0_m_1_1); - bit_met_p1_m1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_p1_m3,a_sq_p1_m3); xmm1 = _mm_adds_epi16(xmm0,y0_m_1_3); - bit_met_p1_m3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_p1,a_sq_p3_p1); xmm1 = _mm_adds_epi16(xmm0,y0_p_3_1); - bit_met_p3_p1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_p3,a_sq_p3_p3); xmm1 = _mm_adds_epi16(xmm0,y0_p_3_3); - bit_met_p3_p3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_p3_m1,a_sq_p3_m1); xmm1 = _mm_adds_epi16(xmm0,y0_m_3_1); - bit_met_p3_m1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_p3_m3,a_sq_p3_m3); xmm1 = _mm_adds_epi16(xmm0,y0_m_3_3); - bit_met_p3_m3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_p1,a_sq_m1_p1); xmm1 = _mm_subs_epi16(xmm0,y0_m_1_1); - bit_met_m1_p1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_p3,a_sq_m1_p3); xmm1 = _mm_subs_epi16(xmm0,y0_m_1_3); - bit_met_m1_p3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m1_m1,a_sq_m1_m1); xmm1 = _mm_subs_epi16(xmm0,y0_p_1_1); - bit_met_m1_m1= _mm_subs_epi16(xmm1,ch_mag_over_10); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_over_10); xmm0 = _mm_subs_epi16(psi_a_m1_m3,a_sq_m1_m3); xmm1 = _mm_subs_epi16(xmm0,y0_p_1_3); - bit_met_m1_m3= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_p1,a_sq_m3_p1); xmm1 = _mm_subs_epi16(xmm0,y0_m_3_1); - bit_met_m3_p1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_p3,a_sq_m3_p3); xmm1 = _mm_subs_epi16(xmm0,y0_m_3_3); - bit_met_m3_p3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); xmm0 = _mm_subs_epi16(psi_a_m3_m1,a_sq_m3_m1); xmm1 = _mm_subs_epi16(xmm0,y0_p_3_1); - bit_met_m3_m1= _mm_subs_epi16(xmm1,ch_mag_over_2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_over_2); xmm0 = _mm_subs_epi16(psi_a_m3_m3,a_sq_m3_m3); xmm1 = _mm_subs_epi16(xmm0,y0_p_3_3); - bit_met_m3_m3= _mm_subs_epi16(xmm1,ch_mag_9_over_10); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_9_over_10); // LLR of the first bit // Bit = 1 @@ -3793,7 +3287,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m3_m1,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re0= _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p1_p3); @@ -3802,7 +3296,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); // LLR of first bit [L1(1), L1(2), L1(3), L1(4), L1(5), L1(6), L1(7), L1(8)] y0r = _mm_subs_epi16(logmax_den_re0,logmax_num_re0); @@ -3815,7 +3309,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_m3,bit_met_m3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_re1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_p1,bit_met_p3_p1); @@ -3824,7 +3318,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_re1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_re1 = _mm_max_epi16(xmm4, xmm5); // LLR of second bit [L2(1), L2(2), L2(3), L2(4)] y1r = _mm_subs_epi16(logmax_den_re1,logmax_num_re1); @@ -3837,7 +3331,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_p3_m1,bit_met_p3_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im0 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_m1_p1,bit_met_m1_p3); @@ -3846,7 +3340,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_p1_m1,bit_met_p1_m3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im0 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im0 = _mm_max_epi16(xmm4, xmm5); // LLR of third bit [L3(1), L3(2), L3(3), L3(4)] y0i = _mm_subs_epi16(logmax_den_im0,logmax_num_im0); @@ -3859,7 +3353,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p3,bit_met_m3_p3); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_num_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_num_im1 = _mm_max_epi16(xmm4, xmm5); // Bit = 0 xmm0 = _mm_max_epi16(bit_met_p1_m1,bit_met_p3_m1); @@ -3868,7 +3362,7 @@ void qam16_qam64(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m1_p1,bit_met_m3_p1); xmm4 = _mm_max_epi16(xmm0,xmm1); xmm5 = _mm_max_epi16(xmm2,xmm3); - logmax_den_im1 = _mm_max_epi16(xmm4,xmm5); + simde__m128i logmax_den_im1 = _mm_max_epi16(xmm4, xmm5); // LLR of fourth bit [L4(1), L4(2), L4(3), L4(4)] y1i = _mm_subs_epi16(logmax_den_im1,logmax_num_im1); @@ -4078,8 +3572,8 @@ void qam64_qpsk(int16_t *stream0_in, #if defined(__x86_64) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -4088,66 +3582,66 @@ void qam64_qpsk(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); - rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); - rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); - rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); - rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); + simde__m128i rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); + simde__m128i rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); + simde__m128i rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); rho_rpi_5_5 = _mm_slli_epi16(rho_rpi_5_5, 1); rho_rmi_5_5 = _mm_slli_epi16(rho_rmi_5_5, 1); rho_rpi_7_7 = _mm_slli_epi16(rho_rpi_7_7, 2); rho_rmi_7_7 = _mm_slli_epi16(rho_rmi_7_7, 2); - xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); - xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); - xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); - xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); - xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); + simde__m128i xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); + simde__m128i xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); xmm7 = _mm_slli_epi16(xmm7, 1); xmm8 = _mm_slli_epi16(xmm8, 2); - rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_42); - rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, FIVE_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 1); - rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, SEVEN_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 2); - rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -4160,272 +3654,271 @@ void qam64_qpsk(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] // Psi_r calculation from rho_rpi or rho_rmi xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16 xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); - psi_r_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); - psi_r_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); - psi_r_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1r); - psi_r_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1r); - psi_r_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1r); - psi_r_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1r); - psi_r_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1r); - psi_r_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1r); - psi_r_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1r); - psi_r_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1r); - psi_r_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1r); - psi_r_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1r); - psi_r_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1r); - psi_r_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1r); - psi_r_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1r); - psi_r_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1r); - psi_r_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1r); - psi_r_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1r); - psi_r_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1r); - psi_r_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1r); - psi_r_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1r); - psi_r_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1r); - psi_r_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1r); - psi_r_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1r); - psi_r_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1r); - psi_r_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1r); - psi_r_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1r); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1r); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1r); - psi_r_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1r); - psi_r_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1r); - psi_r_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1r); - psi_r_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1r); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1r); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1r); - psi_r_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1r); - psi_r_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1r); - psi_r_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1r); - psi_r_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1r); - psi_r_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1r); - psi_r_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1r); - psi_r_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1r); - psi_r_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1r); - psi_r_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1r); - psi_r_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1r); - psi_r_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1r); - psi_r_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1r); - psi_r_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1r); - psi_r_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1r); - psi_r_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1r); - psi_r_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1r); - psi_r_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1r); - psi_r_m7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m7 = _mm_abs_epi16(xmm2); - // Psi_i calculation from rho_rpi or rho_rmi + // Simde__M128i Psi_i calculation from rho_rpi or rho_rmi xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1i); - psi_i_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1i); - psi_i_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1i); - psi_i_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1i); - psi_i_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1i); - psi_i_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1i); - psi_i_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1i); - psi_i_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1i); - psi_i_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1i); - psi_i_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1i); - psi_i_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1i); - psi_i_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1i); - psi_i_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1i); - psi_i_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1i); - psi_i_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1i); - psi_i_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1i); - psi_i_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1i); - psi_i_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1i); - psi_i_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1i); - psi_i_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1i); - psi_i_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1i); - psi_i_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1i); - psi_i_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1i); - psi_i_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1i); - psi_i_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1i); - psi_i_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1i); - psi_i_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1i); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1i); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1i); - psi_i_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1i); - psi_i_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1i); - psi_i_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1i); - psi_i_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1i); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1i); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1i); - psi_i_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1i); - psi_i_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1i); - psi_i_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1i); - psi_i_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1i); - psi_i_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1i); - psi_i_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1i); - psi_i_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1i); - psi_i_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1i); - psi_i_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1i); - psi_i_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1i); - psi_i_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1i); - psi_i_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1i); - psi_i_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1i); - psi_i_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1i); - psi_i_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1i); - psi_i_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1i); - psi_i_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1i); - psi_i_m7_m7 = _mm_abs_epi16(xmm2); - + simde__m128i psi_i_m7_m7 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -4438,8 +3931,8 @@ void qam64_qpsk(int16_t *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -4466,39 +3959,39 @@ void qam64_qpsk(int16_t *stream0_in, y0i_seven_over_sqrt_21 = _mm_mulhi_epi16(y0i, SEVEN_OVER_SQRT_42); y0i_seven_over_sqrt_21 = _mm_slli_epi16(y0i_seven_over_sqrt_21, 2); // Q2.14 - y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); // divide by sqrt(2) psi_r_p7_p7 = _mm_mulhi_epi16(psi_r_p7_p7, ONE_OVER_SQRT_2); @@ -4759,70 +4252,70 @@ void qam64_qpsk(int16_t *stream0_in, psi_i_m7_m7 = _mm_mulhi_epi16(psi_i_m7_m7, ONE_OVER_SQRT_2); psi_i_m7_m7 = _mm_slli_epi16(psi_i_m7_m7, 1); - psi_a_p7_p7 = _mm_adds_epi16(psi_r_p7_p7, psi_i_p7_p7); - psi_a_p7_p5 = _mm_adds_epi16(psi_r_p7_p5, psi_i_p7_p5); - psi_a_p7_p3 = _mm_adds_epi16(psi_r_p7_p3, psi_i_p7_p3); - psi_a_p7_p1 = _mm_adds_epi16(psi_r_p7_p1, psi_i_p7_p1); - psi_a_p7_m1 = _mm_adds_epi16(psi_r_p7_m1, psi_i_p7_m1); - psi_a_p7_m3 = _mm_adds_epi16(psi_r_p7_m3, psi_i_p7_m3); - psi_a_p7_m5 = _mm_adds_epi16(psi_r_p7_m5, psi_i_p7_m5); - psi_a_p7_m7 = _mm_adds_epi16(psi_r_p7_m7, psi_i_p7_m7); - psi_a_p5_p7 = _mm_adds_epi16(psi_r_p5_p7, psi_i_p5_p7); - psi_a_p5_p5 = _mm_adds_epi16(psi_r_p5_p5, psi_i_p5_p5); - psi_a_p5_p3 = _mm_adds_epi16(psi_r_p5_p3, psi_i_p5_p3); - psi_a_p5_p1 = _mm_adds_epi16(psi_r_p5_p1, psi_i_p5_p1); - psi_a_p5_m1 = _mm_adds_epi16(psi_r_p5_m1, psi_i_p5_m1); - psi_a_p5_m3 = _mm_adds_epi16(psi_r_p5_m3, psi_i_p5_m3); - psi_a_p5_m5 = _mm_adds_epi16(psi_r_p5_m5, psi_i_p5_m5); - psi_a_p5_m7 = _mm_adds_epi16(psi_r_p5_m7, psi_i_p5_m7); - psi_a_p3_p7 = _mm_adds_epi16(psi_r_p3_p7, psi_i_p3_p7); - psi_a_p3_p5 = _mm_adds_epi16(psi_r_p3_p5, psi_i_p3_p5); - psi_a_p3_p3 = _mm_adds_epi16(psi_r_p3_p3, psi_i_p3_p3); - psi_a_p3_p1 = _mm_adds_epi16(psi_r_p3_p1, psi_i_p3_p1); - psi_a_p3_m1 = _mm_adds_epi16(psi_r_p3_m1, psi_i_p3_m1); - psi_a_p3_m3 = _mm_adds_epi16(psi_r_p3_m3, psi_i_p3_m3); - psi_a_p3_m5 = _mm_adds_epi16(psi_r_p3_m5, psi_i_p3_m5); - psi_a_p3_m7 = _mm_adds_epi16(psi_r_p3_m7, psi_i_p3_m7); - psi_a_p1_p7 = _mm_adds_epi16(psi_r_p1_p7, psi_i_p1_p7); - psi_a_p1_p5 = _mm_adds_epi16(psi_r_p1_p5, psi_i_p1_p5); - psi_a_p1_p3 = _mm_adds_epi16(psi_r_p1_p3, psi_i_p1_p3); - psi_a_p1_p1 = _mm_adds_epi16(psi_r_p1_p1, psi_i_p1_p1); - psi_a_p1_m1 = _mm_adds_epi16(psi_r_p1_m1, psi_i_p1_m1); - psi_a_p1_m3 = _mm_adds_epi16(psi_r_p1_m3, psi_i_p1_m3); - psi_a_p1_m5 = _mm_adds_epi16(psi_r_p1_m5, psi_i_p1_m5); - psi_a_p1_m7 = _mm_adds_epi16(psi_r_p1_m7, psi_i_p1_m7); - psi_a_m1_p7 = _mm_adds_epi16(psi_r_m1_p7, psi_i_m1_p7); - psi_a_m1_p5 = _mm_adds_epi16(psi_r_m1_p5, psi_i_m1_p5); - psi_a_m1_p3 = _mm_adds_epi16(psi_r_m1_p3, psi_i_m1_p3); - psi_a_m1_p1 = _mm_adds_epi16(psi_r_m1_p1, psi_i_m1_p1); - psi_a_m1_m1 = _mm_adds_epi16(psi_r_m1_m1, psi_i_m1_m1); - psi_a_m1_m3 = _mm_adds_epi16(psi_r_m1_m3, psi_i_m1_m3); - psi_a_m1_m5 = _mm_adds_epi16(psi_r_m1_m5, psi_i_m1_m5); - psi_a_m1_m7 = _mm_adds_epi16(psi_r_m1_m7, psi_i_m1_m7); - psi_a_m3_p7 = _mm_adds_epi16(psi_r_m3_p7, psi_i_m3_p7); - psi_a_m3_p5 = _mm_adds_epi16(psi_r_m3_p5, psi_i_m3_p5); - psi_a_m3_p3 = _mm_adds_epi16(psi_r_m3_p3, psi_i_m3_p3); - psi_a_m3_p1 = _mm_adds_epi16(psi_r_m3_p1, psi_i_m3_p1); - psi_a_m3_m1 = _mm_adds_epi16(psi_r_m3_m1, psi_i_m3_m1); - psi_a_m3_m3 = _mm_adds_epi16(psi_r_m3_m3, psi_i_m3_m3); - psi_a_m3_m5 = _mm_adds_epi16(psi_r_m3_m5, psi_i_m3_m5); - psi_a_m3_m7 = _mm_adds_epi16(psi_r_m3_m7, psi_i_m3_m7); - psi_a_m5_p7 = _mm_adds_epi16(psi_r_m5_p7, psi_i_m5_p7); - psi_a_m5_p5 = _mm_adds_epi16(psi_r_m5_p5, psi_i_m5_p5); - psi_a_m5_p3 = _mm_adds_epi16(psi_r_m5_p3, psi_i_m5_p3); - psi_a_m5_p1 = _mm_adds_epi16(psi_r_m5_p1, psi_i_m5_p1); - psi_a_m5_m1 = _mm_adds_epi16(psi_r_m5_m1, psi_i_m5_m1); - psi_a_m5_m3 = _mm_adds_epi16(psi_r_m5_m3, psi_i_m5_m3); - psi_a_m5_m5 = _mm_adds_epi16(psi_r_m5_m5, psi_i_m5_m5); - psi_a_m5_m7 = _mm_adds_epi16(psi_r_m5_m7, psi_i_m5_m7); - psi_a_m7_p7 = _mm_adds_epi16(psi_r_m7_p7, psi_i_m7_p7); - psi_a_m7_p5 = _mm_adds_epi16(psi_r_m7_p5, psi_i_m7_p5); - psi_a_m7_p3 = _mm_adds_epi16(psi_r_m7_p3, psi_i_m7_p3); - psi_a_m7_p1 = _mm_adds_epi16(psi_r_m7_p1, psi_i_m7_p1); - psi_a_m7_m1 = _mm_adds_epi16(psi_r_m7_m1, psi_i_m7_m1); - psi_a_m7_m3 = _mm_adds_epi16(psi_r_m7_m3, psi_i_m7_m3); - psi_a_m7_m5 = _mm_adds_epi16(psi_r_m7_m5, psi_i_m7_m5); - psi_a_m7_m7 = _mm_adds_epi16(psi_r_m7_m7, psi_i_m7_m7); + simde__m128i psi_a_p7_p7 = _mm_adds_epi16(psi_r_p7_p7, psi_i_p7_p7); + simde__m128i psi_a_p7_p5 = _mm_adds_epi16(psi_r_p7_p5, psi_i_p7_p5); + simde__m128i psi_a_p7_p3 = _mm_adds_epi16(psi_r_p7_p3, psi_i_p7_p3); + simde__m128i psi_a_p7_p1 = _mm_adds_epi16(psi_r_p7_p1, psi_i_p7_p1); + simde__m128i psi_a_p7_m1 = _mm_adds_epi16(psi_r_p7_m1, psi_i_p7_m1); + simde__m128i psi_a_p7_m3 = _mm_adds_epi16(psi_r_p7_m3, psi_i_p7_m3); + simde__m128i psi_a_p7_m5 = _mm_adds_epi16(psi_r_p7_m5, psi_i_p7_m5); + simde__m128i psi_a_p7_m7 = _mm_adds_epi16(psi_r_p7_m7, psi_i_p7_m7); + simde__m128i psi_a_p5_p7 = _mm_adds_epi16(psi_r_p5_p7, psi_i_p5_p7); + simde__m128i psi_a_p5_p5 = _mm_adds_epi16(psi_r_p5_p5, psi_i_p5_p5); + simde__m128i psi_a_p5_p3 = _mm_adds_epi16(psi_r_p5_p3, psi_i_p5_p3); + simde__m128i psi_a_p5_p1 = _mm_adds_epi16(psi_r_p5_p1, psi_i_p5_p1); + simde__m128i psi_a_p5_m1 = _mm_adds_epi16(psi_r_p5_m1, psi_i_p5_m1); + simde__m128i psi_a_p5_m3 = _mm_adds_epi16(psi_r_p5_m3, psi_i_p5_m3); + simde__m128i psi_a_p5_m5 = _mm_adds_epi16(psi_r_p5_m5, psi_i_p5_m5); + simde__m128i psi_a_p5_m7 = _mm_adds_epi16(psi_r_p5_m7, psi_i_p5_m7); + simde__m128i psi_a_p3_p7 = _mm_adds_epi16(psi_r_p3_p7, psi_i_p3_p7); + simde__m128i psi_a_p3_p5 = _mm_adds_epi16(psi_r_p3_p5, psi_i_p3_p5); + simde__m128i psi_a_p3_p3 = _mm_adds_epi16(psi_r_p3_p3, psi_i_p3_p3); + simde__m128i psi_a_p3_p1 = _mm_adds_epi16(psi_r_p3_p1, psi_i_p3_p1); + simde__m128i psi_a_p3_m1 = _mm_adds_epi16(psi_r_p3_m1, psi_i_p3_m1); + simde__m128i psi_a_p3_m3 = _mm_adds_epi16(psi_r_p3_m3, psi_i_p3_m3); + simde__m128i psi_a_p3_m5 = _mm_adds_epi16(psi_r_p3_m5, psi_i_p3_m5); + simde__m128i psi_a_p3_m7 = _mm_adds_epi16(psi_r_p3_m7, psi_i_p3_m7); + simde__m128i psi_a_p1_p7 = _mm_adds_epi16(psi_r_p1_p7, psi_i_p1_p7); + simde__m128i psi_a_p1_p5 = _mm_adds_epi16(psi_r_p1_p5, psi_i_p1_p5); + simde__m128i psi_a_p1_p3 = _mm_adds_epi16(psi_r_p1_p3, psi_i_p1_p3); + simde__m128i psi_a_p1_p1 = _mm_adds_epi16(psi_r_p1_p1, psi_i_p1_p1); + simde__m128i psi_a_p1_m1 = _mm_adds_epi16(psi_r_p1_m1, psi_i_p1_m1); + simde__m128i psi_a_p1_m3 = _mm_adds_epi16(psi_r_p1_m3, psi_i_p1_m3); + simde__m128i psi_a_p1_m5 = _mm_adds_epi16(psi_r_p1_m5, psi_i_p1_m5); + simde__m128i psi_a_p1_m7 = _mm_adds_epi16(psi_r_p1_m7, psi_i_p1_m7); + simde__m128i psi_a_m1_p7 = _mm_adds_epi16(psi_r_m1_p7, psi_i_m1_p7); + simde__m128i psi_a_m1_p5 = _mm_adds_epi16(psi_r_m1_p5, psi_i_m1_p5); + simde__m128i psi_a_m1_p3 = _mm_adds_epi16(psi_r_m1_p3, psi_i_m1_p3); + simde__m128i psi_a_m1_p1 = _mm_adds_epi16(psi_r_m1_p1, psi_i_m1_p1); + simde__m128i psi_a_m1_m1 = _mm_adds_epi16(psi_r_m1_m1, psi_i_m1_m1); + simde__m128i psi_a_m1_m3 = _mm_adds_epi16(psi_r_m1_m3, psi_i_m1_m3); + simde__m128i psi_a_m1_m5 = _mm_adds_epi16(psi_r_m1_m5, psi_i_m1_m5); + simde__m128i psi_a_m1_m7 = _mm_adds_epi16(psi_r_m1_m7, psi_i_m1_m7); + simde__m128i psi_a_m3_p7 = _mm_adds_epi16(psi_r_m3_p7, psi_i_m3_p7); + simde__m128i psi_a_m3_p5 = _mm_adds_epi16(psi_r_m3_p5, psi_i_m3_p5); + simde__m128i psi_a_m3_p3 = _mm_adds_epi16(psi_r_m3_p3, psi_i_m3_p3); + simde__m128i psi_a_m3_p1 = _mm_adds_epi16(psi_r_m3_p1, psi_i_m3_p1); + simde__m128i psi_a_m3_m1 = _mm_adds_epi16(psi_r_m3_m1, psi_i_m3_m1); + simde__m128i psi_a_m3_m3 = _mm_adds_epi16(psi_r_m3_m3, psi_i_m3_m3); + simde__m128i psi_a_m3_m5 = _mm_adds_epi16(psi_r_m3_m5, psi_i_m3_m5); + simde__m128i psi_a_m3_m7 = _mm_adds_epi16(psi_r_m3_m7, psi_i_m3_m7); + simde__m128i psi_a_m5_p7 = _mm_adds_epi16(psi_r_m5_p7, psi_i_m5_p7); + simde__m128i psi_a_m5_p5 = _mm_adds_epi16(psi_r_m5_p5, psi_i_m5_p5); + simde__m128i psi_a_m5_p3 = _mm_adds_epi16(psi_r_m5_p3, psi_i_m5_p3); + simde__m128i psi_a_m5_p1 = _mm_adds_epi16(psi_r_m5_p1, psi_i_m5_p1); + simde__m128i psi_a_m5_m1 = _mm_adds_epi16(psi_r_m5_m1, psi_i_m5_m1); + simde__m128i psi_a_m5_m3 = _mm_adds_epi16(psi_r_m5_m3, psi_i_m5_m3); + simde__m128i psi_a_m5_m5 = _mm_adds_epi16(psi_r_m5_m5, psi_i_m5_m5); + simde__m128i psi_a_m5_m7 = _mm_adds_epi16(psi_r_m5_m7, psi_i_m5_m7); + simde__m128i psi_a_m7_p7 = _mm_adds_epi16(psi_r_m7_p7, psi_i_m7_p7); + simde__m128i psi_a_m7_p5 = _mm_adds_epi16(psi_r_m7_p5, psi_i_m7_p5); + simde__m128i psi_a_m7_p3 = _mm_adds_epi16(psi_r_m7_p3, psi_i_m7_p3); + simde__m128i psi_a_m7_p1 = _mm_adds_epi16(psi_r_m7_p1, psi_i_m7_p1); + simde__m128i psi_a_m7_m1 = _mm_adds_epi16(psi_r_m7_m1, psi_i_m7_m1); + simde__m128i psi_a_m7_m3 = _mm_adds_epi16(psi_r_m7_m3, psi_i_m7_m3); + simde__m128i psi_a_m7_m5 = _mm_adds_epi16(psi_r_m7_m5, psi_i_m7_m5); + simde__m128i psi_a_m7_m7 = _mm_adds_epi16(psi_r_m7_m7, psi_i_m7_m7); // Computing different multiples of ||h0||^2 // x=1, y=1 @@ -4858,134 +4351,134 @@ void qam64_qpsk(int16_t *stream0_in, // Computing Metrics xmm1 = _mm_adds_epi16(psi_a_p7_p7, y0_p_7_7); - bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_p5, y0_p_7_5); - bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_p3, y0_p_7_3); - bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_p1, y0_p_7_1); - bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_m1, y0_m_7_1); - bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_m3, y0_m_7_3); - bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_m5, y0_m_7_5); - bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p7_m7, y0_m_7_7); - bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_p7, y0_p_5_7); - bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_p5, y0_p_5_5); - bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_p3, y0_p_5_3); - bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_p1, y0_p_5_1); - bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_m1, y0_m_5_1); - bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_m3, y0_m_5_3); - bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_m5, y0_m_5_5); - bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p5_m7, y0_m_5_7); - bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_p7, y0_p_3_7); - bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_p5, y0_p_3_5); - bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_p3, y0_p_3_3); - bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_p1, y0_p_3_1); - bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_m1, y0_m_3_1); - bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_m3, y0_m_3_3); - bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_m5, y0_m_3_5); - bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p3_m7, y0_m_3_7); - bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_p7, y0_p_1_7); - bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_p5, y0_p_1_5); - bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_p3, y0_p_1_3); - bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_p1, y0_p_1_1); - bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_m1, y0_m_1_1); - bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_m3, y0_m_1_3); - bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_m5, y0_m_1_5); - bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_adds_epi16(psi_a_p1_m7, y0_m_1_7); - bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_p7, y0_m_1_7); - bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_p5, y0_m_1_5); - bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_p3, y0_m_1_3); - bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_p1, y0_m_1_1); - bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_m1, y0_p_1_1); - bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_m3, y0_p_1_3); - bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_m5, y0_p_1_5); - bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m1_m7, y0_p_1_7); - bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_p7, y0_m_3_7); - bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_p5, y0_m_3_5); - bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_p3, y0_m_3_3); - bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_p1, y0_m_3_1); - bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_m1, y0_p_3_1); - bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_m3, y0_p_3_3); - bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_m5, y0_p_3_5); - bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m3_m7, y0_p_3_7); - bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_p7, y0_m_5_7); - bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_p5, y0_m_5_5); - bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_p3, y0_m_5_3); - bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_p1, y0_m_5_1); - bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_m1, y0_p_5_1); - bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_m3, y0_p_5_3); - bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_m5, y0_p_5_5); - bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m5_m7, y0_p_5_7); - bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_p7, y0_m_7_7); - bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_p5, y0_m_7_5); - bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_p3, y0_m_7_3); - bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_p1, y0_m_7_1); - bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_m1, y0_p_7_1); - bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_m3, y0_p_7_3); - bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_m5, y0_p_7_5); - bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm1 = _mm_subs_epi16(psi_a_m7_m7, y0_p_7_7); - bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); // Detection for 1st bit (LTE mapping) // bit = 1 @@ -4995,7 +4488,7 @@ void qam64_qpsk(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_m7_m5, bit_met_m7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_m5_p7, bit_met_m5_p5); xmm1 = _mm_max_epi16(bit_met_m5_p3, bit_met_m5_p1); xmm2 = _mm_max_epi16(bit_met_m5_m1, bit_met_m5_m3); @@ -5028,7 +4521,7 @@ void qam64_qpsk(int16_t *stream0_in, xmm3 = _mm_max_epi16(bit_met_p7_m5, bit_met_p7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_p5_p7, bit_met_p5_p5); xmm1 = _mm_max_epi16(bit_met_p5_p3, bit_met_p5_p1); xmm2 = _mm_max_epi16(bit_met_p5_m1, bit_met_p5_m3); @@ -5190,7 +4683,7 @@ void qam64_qpsk(int16_t *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m128i y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // Detection for 4th bit (LTE mapping) xmm0 = _mm_max_epi16(bit_met_p7_p7, bit_met_p5_p7); @@ -5392,8 +4885,7 @@ void qam64_qpsk(int16_t *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); - + simde__m128i y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // map to output stream, difficult to do in SIMD since we have 6 16bit LLRs // RE 1 @@ -5604,8 +5096,8 @@ void qam64_qam16(short *stream0_in, #if defined(__x86_64__) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -5614,66 +5106,66 @@ void qam64_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); - rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); - rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); - rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); - rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); + simde__m128i rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); + simde__m128i rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); + simde__m128i rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); rho_rpi_5_5 = _mm_slli_epi16(rho_rpi_5_5, 1); rho_rmi_5_5 = _mm_slli_epi16(rho_rmi_5_5, 1); rho_rpi_7_7 = _mm_slli_epi16(rho_rpi_7_7, 2); rho_rmi_7_7 = _mm_slli_epi16(rho_rmi_7_7, 2); - xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); - xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); - xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); - xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); - xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); + simde__m128i xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); + simde__m128i xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); xmm7 = _mm_slli_epi16(xmm7, 1); xmm8 = _mm_slli_epi16(xmm8, 2); - rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_42); - rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, FIVE_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 1); - rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, SEVEN_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 2); - rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -5686,272 +5178,271 @@ void qam64_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] // Psi_r calculation from rho_rpi or rho_rmi xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16 xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); - psi_r_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); - psi_r_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); - psi_r_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1r); - psi_r_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1r); - psi_r_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1r); - psi_r_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1r); - psi_r_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1r); - psi_r_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1r); - psi_r_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1r); - psi_r_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1r); - psi_r_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1r); - psi_r_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1r); - psi_r_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1r); - psi_r_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1r); - psi_r_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1r); - psi_r_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1r); - psi_r_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1r); - psi_r_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1r); - psi_r_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1r); - psi_r_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1r); - psi_r_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1r); - psi_r_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1r); - psi_r_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1r); - psi_r_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1r); - psi_r_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1r); - psi_r_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1r); - psi_r_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1r); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1r); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1r); - psi_r_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1r); - psi_r_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1r); - psi_r_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1r); - psi_r_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1r); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1r); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1r); - psi_r_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1r); - psi_r_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1r); - psi_r_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1r); - psi_r_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1r); - psi_r_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1r); - psi_r_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1r); - psi_r_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1r); - psi_r_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1r); - psi_r_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1r); - psi_r_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1r); - psi_r_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1r); - psi_r_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1r); - psi_r_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1r); - psi_r_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1r); - psi_r_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1r); - psi_r_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1r); - psi_r_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1r); - psi_r_m7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m7 = _mm_abs_epi16(xmm2); - // Psi_i calculation from rho_rpi or rho_rmi + // Simde__M128i Psi_i calculation from rho_rpi or rho_rmi xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1i); - psi_i_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1i); - psi_i_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1i); - psi_i_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1i); - psi_i_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1i); - psi_i_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1i); - psi_i_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1i); - psi_i_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1i); - psi_i_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1i); - psi_i_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1i); - psi_i_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1i); - psi_i_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1i); - psi_i_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1i); - psi_i_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1i); - psi_i_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1i); - psi_i_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1i); - psi_i_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1i); - psi_i_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1i); - psi_i_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1i); - psi_i_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1i); - psi_i_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1i); - psi_i_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1i); - psi_i_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1i); - psi_i_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1i); - psi_i_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1i); - psi_i_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1i); - psi_i_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1i); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1i); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1i); - psi_i_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1i); - psi_i_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1i); - psi_i_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1i); - psi_i_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1i); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1i); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1i); - psi_i_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1i); - psi_i_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1i); - psi_i_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1i); - psi_i_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1i); - psi_i_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1i); - psi_i_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1i); - psi_i_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1i); - psi_i_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1i); - psi_i_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1i); - psi_i_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1i); - psi_i_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1i); - psi_i_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1i); - psi_i_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1i); - psi_i_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1i); - psi_i_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1i); - psi_i_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1i); - psi_i_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1i); - psi_i_m7_m7 = _mm_abs_epi16(xmm2); - + simde__m128i psi_i_m7_m7 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -5964,8 +5455,8 @@ void qam64_qam16(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -6003,40 +5494,40 @@ void qam64_qam16(short *stream0_in, y0i_seven_over_sqrt_21 = _mm_mulhi_epi16(y0i, SEVEN_OVER_SQRT_42); y0i_seven_over_sqrt_21 = _mm_slli_epi16(y0i_seven_over_sqrt_21, 2); // Q2.14 - y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - - y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i tmp_result, tmp_result2; interference_abs_epi16(psi_r_p7_p7, ch_mag_int, a_r_p7_p7, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_r_p7_p5, ch_mag_int, a_r_p7_p5, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_r_p7_p3, ch_mag_int, a_r_p7_p3, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); @@ -6334,197 +5825,197 @@ void qam64_qam16(short *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p7_p7, a_sq_p7_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_7); - bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p5, a_sq_p7_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_5); - bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p3, a_sq_p7_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_3); - bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p1, a_sq_p7_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_1); - bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m1, a_sq_p7_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_1); - bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m3, a_sq_p7_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_3); - bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m5, a_sq_p7_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_5); - bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m7, a_sq_p7_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_7); - bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p7, a_sq_p5_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_7); - bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p5, a_sq_p5_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_5); - bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p3, a_sq_p5_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_3); - bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p1, a_sq_p5_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_1); - bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m1, a_sq_p5_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_1); - bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m3, a_sq_p5_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_3); - bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m5, a_sq_p5_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_5); - bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m7, a_sq_p5_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_7); - bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p7, a_sq_p3_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_7); - bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p5, a_sq_p3_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_5); - bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p3, a_sq_p3_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_3); - bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p1, a_sq_p3_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_1); - bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m1, a_sq_p3_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_1); - bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m3, a_sq_p3_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_3); - bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m5, a_sq_p3_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_5); - bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m7, a_sq_p3_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_7); - bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p7, a_sq_p1_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_7); - bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p5, a_sq_p1_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_5); - bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p3, a_sq_p1_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_3); - bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_1); - bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_1); - bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m3, a_sq_p1_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_3); - bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m5, a_sq_p1_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_5); - bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m7, a_sq_p1_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_7); - bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p7, a_sq_m1_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_7); - bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p5, a_sq_m1_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_5); - bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p3, a_sq_m1_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_3); - bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_1); - bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_1); - bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m3, a_sq_m1_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_3); - bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m5, a_sq_m1_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_5); - bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m7, a_sq_m1_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_7); - bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p7, a_sq_m3_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_7); - bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p5, a_sq_m3_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_5); - bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p3, a_sq_m3_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_3); - bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p1, a_sq_m3_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_1); - bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m1, a_sq_m3_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_1); - bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m3, a_sq_m3_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_3); - bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m5, a_sq_m3_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_5); - bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m7, a_sq_m3_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_7); - bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p7, a_sq_m5_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_7); - bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p5, a_sq_m5_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_5); - bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p3, a_sq_m5_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_3); - bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p1, a_sq_m5_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_1); - bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m1, a_sq_m5_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_1); - bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m3, a_sq_m5_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_3); - bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m5, a_sq_m5_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_5); - bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m7, a_sq_m5_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_7); - bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p7, a_sq_m7_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_7); - bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p5, a_sq_m7_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_5); - bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p3, a_sq_m7_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_3); - bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p1, a_sq_m7_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_1); - bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m1, a_sq_m7_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_1); - bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m3, a_sq_m7_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_3); - bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m5, a_sq_m7_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_5); - bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m7, a_sq_m7_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_7); - bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); // Detection for 1st bit (LTE mapping) // bit = 1 @@ -6534,7 +6025,7 @@ void qam64_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m7_m5, bit_met_m7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_m5_p7, bit_met_m5_p5); xmm1 = _mm_max_epi16(bit_met_m5_p3, bit_met_m5_p1); xmm2 = _mm_max_epi16(bit_met_m5_m1, bit_met_m5_m3); @@ -6567,7 +6058,7 @@ void qam64_qam16(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p7_m5, bit_met_p7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_p5_p7, bit_met_p5_p5); xmm1 = _mm_max_epi16(bit_met_p5_p3, bit_met_p5_p1); xmm2 = _mm_max_epi16(bit_met_p5_m1, bit_met_p5_m3); @@ -6729,7 +6220,7 @@ void qam64_qam16(short *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m128i y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // Detection for 4th bit (LTE mapping) xmm0 = _mm_max_epi16(bit_met_p7_p7, bit_met_p5_p7); @@ -6931,8 +6422,7 @@ void qam64_qam16(short *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); - + simde__m128i y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // map to output stream, difficult to do in SIMD since we have 6 16bit LLRs // RE 1 @@ -7151,8 +6641,8 @@ void qam64_qam64(short *stream0_in, #if defined(__x86_64__) || defined(__i386__) // Get rho - xmm0 = rho01_128i[i]; - xmm1 = rho01_128i[i+1]; + simde__m128i xmm0 = rho01_128i[i]; + simde__m128i xmm1 = rho01_128i[i + 1]; xmm0 = _mm_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); xmm0 = _mm_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); @@ -7161,66 +6651,66 @@ void qam64_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) - xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) - rho_rpi = _mm_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = _mm_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m128i xmm2 = _mm_unpacklo_epi64(xmm0, xmm1); // Re(rho) + simde__m128i xmm3 = _mm_unpackhi_epi64(xmm0, xmm1); // Im(rho) + simde__m128i rho_rpi = _mm_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m128i rho_rmi = _mm_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); - rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); - rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); - rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); - rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); - rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); - rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); - rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rpi_1_1 = _mm_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); + simde__m128i rho_rmi_1_1 = _mm_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); + simde__m128i rho_rpi_3_3 = _mm_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); + simde__m128i rho_rmi_3_3 = _mm_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); + simde__m128i rho_rpi_5_5 = _mm_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); + simde__m128i rho_rmi_5_5 = _mm_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); + simde__m128i rho_rpi_7_7 = _mm_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); + simde__m128i rho_rmi_7_7 = _mm_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); rho_rpi_5_5 = _mm_slli_epi16(rho_rpi_5_5, 1); rho_rmi_5_5 = _mm_slli_epi16(rho_rmi_5_5, 1); rho_rpi_7_7 = _mm_slli_epi16(rho_rpi_7_7, 2); rho_rmi_7_7 = _mm_slli_epi16(rho_rmi_7_7, 2); - xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); - xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); - xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); - xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); - xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); + simde__m128i xmm4 = _mm_mulhi_epi16(xmm2, ONE_OVER_SQRT_42); + simde__m128i xmm5 = _mm_mulhi_epi16(xmm3, ONE_OVER_SQRT_42); + simde__m128i xmm6 = _mm_mulhi_epi16(xmm3, THREE_OVER_SQRT_42); + simde__m128i xmm7 = _mm_mulhi_epi16(xmm3, FIVE_OVER_SQRT_42); + simde__m128i xmm8 = _mm_mulhi_epi16(xmm3, SEVEN_OVER_SQRT_42); xmm7 = _mm_slli_epi16(xmm7, 1); xmm8 = _mm_slli_epi16(xmm8, 2); - rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_1_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_1_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_1_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_1_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_1_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_1_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, THREE_OVER_SQRT_42); - rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); - rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_3_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_3_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_3_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_3_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_3_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_3_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, FIVE_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 1); - rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); - rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); + simde__m128i rho_rpi_5_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_5_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_5_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_5_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_5_7 = _mm_adds_epi16(xmm4, xmm8); + simde__m128i rho_rmi_5_7 = _mm_subs_epi16(xmm4, xmm8); xmm4 = _mm_mulhi_epi16(xmm2, SEVEN_OVER_SQRT_42); xmm4 = _mm_slli_epi16(xmm4, 2); - rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); - rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); - rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); - rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); - rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); - rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); + simde__m128i rho_rpi_7_1 = _mm_adds_epi16(xmm4, xmm5); + simde__m128i rho_rmi_7_1 = _mm_subs_epi16(xmm4, xmm5); + simde__m128i rho_rpi_7_3 = _mm_adds_epi16(xmm4, xmm6); + simde__m128i rho_rmi_7_3 = _mm_subs_epi16(xmm4, xmm6); + simde__m128i rho_rpi_7_5 = _mm_adds_epi16(xmm4, xmm7); + simde__m128i rho_rmi_7_5 = _mm_subs_epi16(xmm4, xmm7); // Rearrange interfering MF output xmm0 = stream1_128i_in[i]; @@ -7233,272 +6723,271 @@ void qam64_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] - y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] + simde__m128i y1r = _mm_unpacklo_epi64(xmm0, xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)] + simde__m128i y1i = _mm_unpackhi_epi64(xmm0, xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] // Psi_r calculation from rho_rpi or rho_rmi xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16 xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); - psi_r_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); - psi_r_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); - psi_r_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1r); - psi_r_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1r); - psi_r_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1r); - psi_r_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1r); - psi_r_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1r); - psi_r_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1r); - psi_r_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1r); - psi_r_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1r); - psi_r_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1r); - psi_r_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1r); - psi_r_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1r); - psi_r_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1r); - psi_r_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1r); - psi_r_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1r); - psi_r_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1r); - psi_r_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1r); - psi_r_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1r); - psi_r_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1r); - psi_r_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1r); - psi_r_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1r); - psi_r_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1r); - psi_r_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1r); - psi_r_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1r); - psi_r_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1r); - psi_r_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1r); - psi_r_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1r); - psi_r_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1r); - psi_r_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1r); - psi_r_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1r); - psi_r_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1r); - psi_r_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1r); - psi_r_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1r); - psi_r_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1r); - psi_r_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1r); - psi_r_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1r); - psi_r_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1r); - psi_r_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1r); - psi_r_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1r); - psi_r_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1r); - psi_r_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1r); - psi_r_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1r); - psi_r_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1r); - psi_r_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1r); - psi_r_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1r); - psi_r_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1r); - psi_r_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1r); - psi_r_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1r); - psi_r_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1r); - psi_r_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1r); - psi_r_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1r); - psi_r_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1r); - psi_r_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1r); - psi_r_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1r); - psi_r_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1r); - psi_r_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1r); - psi_r_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1r); - psi_r_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1r); - psi_r_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1r); - psi_r_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1r); - psi_r_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1r); - psi_r_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1r); - psi_r_m7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_r_m7_m7 = _mm_abs_epi16(xmm2); - // Psi_i calculation from rho_rpi or rho_rmi + // Simde__M128i Psi_i calculation from rho_rpi or rho_rmi xmm2 = _mm_subs_epi16(rho_rmi_7_7, y1i); - psi_i_p7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_7, y1i); - psi_i_p7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_7, y1i); - psi_i_p7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_7, y1i); - psi_i_p7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_7, y1i); - psi_i_p7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_7, y1i); - psi_i_p7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_7, y1i); - psi_i_p7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_7, y1i); - psi_i_p7_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p7_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_5, y1i); - psi_i_p5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_5, y1i); - psi_i_p5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_5, y1i); - psi_i_p5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_5, y1i); - psi_i_p5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_5, y1i); - psi_i_p5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_5, y1i); - psi_i_p5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_5, y1i); - psi_i_p5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_5, y1i); - psi_i_p5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_3, y1i); - psi_i_p3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_3, y1i); - psi_i_p3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_3, y1i); - psi_i_p3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_3, y1i); - psi_i_p3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_3, y1i); - psi_i_p3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_3, y1i); - psi_i_p3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_3, y1i); - psi_i_p3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_3, y1i); - psi_i_p3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_7_1, y1i); - psi_i_p1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_5_1, y1i); - psi_i_p1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_3_1, y1i); - psi_i_p1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rmi_1_1, y1i); - psi_i_p1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_1_1, y1i); - psi_i_p1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_3_1, y1i); - psi_i_p1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_5_1, y1i); - psi_i_p1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rpi_7_1, y1i); - psi_i_p1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_p1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_1, y1i); - psi_i_m1_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_1, y1i); - psi_i_m1_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_1, y1i); - psi_i_m1_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_1, y1i); - psi_i_m1_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_1, y1i); - psi_i_m1_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_1, y1i); - psi_i_m1_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_1, y1i); - psi_i_m1_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_1, y1i); - psi_i_m1_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m1_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1i); - psi_i_m3_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_3, y1i); - psi_i_m3_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_3, y1i); - psi_i_m3_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_3, y1i); - psi_i_m3_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_3, y1i); - psi_i_m3_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_3, y1i); - psi_i_m3_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_3, y1i); - psi_i_m3_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_3, y1i); - psi_i_m3_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m3_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1i); - psi_i_m5_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_5, y1i); - psi_i_m5_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_5, y1i); - psi_i_m5_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_5, y1i); - psi_i_m5_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_5, y1i); - psi_i_m5_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_5, y1i); - psi_i_m5_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_5, y1i); - psi_i_m5_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_5, y1i); - psi_i_m5_m7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m5_m7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1i); - psi_i_m7_p7 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p7 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_5_7, y1i); - psi_i_m7_p5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p5 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_3_7, y1i); - psi_i_m7_p3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p3 = _mm_abs_epi16(xmm2); xmm2 = _mm_subs_epi16(rho_rpi_1_7, y1i); - psi_i_m7_p1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_p1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_1_7, y1i); - psi_i_m7_m1 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m1 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_3_7, y1i); - psi_i_m7_m3 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m3 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_5_7, y1i); - psi_i_m7_m5 = _mm_abs_epi16(xmm2); + simde__m128i psi_i_m7_m5 = _mm_abs_epi16(xmm2); xmm2 = _mm_adds_epi16(rho_rmi_7_7, y1i); - psi_i_m7_m7 = _mm_abs_epi16(xmm2); - + simde__m128i psi_i_m7_m7 = _mm_abs_epi16(xmm2); // Rearrange desired MF output xmm0 = stream0_128i_in[i]; @@ -7511,8 +7000,8 @@ void qam64_qam64(short *stream0_in, xmm1 = _mm_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = _mm_unpackhi_epi64(xmm0,xmm1); + simde__m128i y0r = _mm_unpacklo_epi64(xmm0, xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + simde__m128i y0i = _mm_unpackhi_epi64(xmm0, xmm1); // Rearrange desired channel magnitudes xmm2 = ch_mag_128i[i]; // = [|h|^2(1),|h|^2(1),|h|^2(2),|h|^2(2)]*(2/sqrt(10)) @@ -7550,45 +7039,45 @@ void qam64_qam64(short *stream0_in, y0i_seven_over_sqrt_21 = _mm_mulhi_epi16(y0i, SEVEN_OVER_SQRT_42); y0i_seven_over_sqrt_21 = _mm_slli_epi16(y0i_seven_over_sqrt_21, 2); // Q2.14 - y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_7_1 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_7_3 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_7_5 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_7_7 = _mm_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_5_1 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_5_3 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_5_5 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_5_7 = _mm_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_3_1 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_3_3 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_3_5 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_3_7 = _mm_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_p_1_1 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_p_1_3 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_p_1_5 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_p_1_7 = _mm_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_1_1 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_1_3 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_1_5 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_1_7 = _mm_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_3_1 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_3_3 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_3_5 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_3_7 = _mm_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_5_1 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_5_3 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_5_5 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_5_7 = _mm_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m128i y0_m_7_1 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m128i y0_m_7_3 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m128i y0_m_7_5 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m128i y0_m_7_7 = _mm_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); // Detection of interference term ch_mag_int_with_sigma2 = _mm_srai_epi16(ch_mag_int, 1); // *2 two_ch_mag_int_with_sigma2 = ch_mag_int; // *4 three_ch_mag_int_with_sigma2 = _mm_adds_epi16(ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2); // *6 - + simde__m128i tmp_result, tmp_result2, tmp_result3, tmp_result4; interference_abs_64qam_epi16(psi_r_p7_p7, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p7_p7, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, SEVEN_OVER_SQRT_2_42); interference_abs_64qam_epi16(psi_r_p7_p5, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p7_p5, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, @@ -8144,197 +7633,197 @@ void qam64_qam64(short *stream0_in, // Computing Metrics xmm0 = _mm_subs_epi16(psi_a_p7_p7, a_sq_p7_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_7); - bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p5, a_sq_p7_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_5); - bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p3, a_sq_p7_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_3); - bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_p1, a_sq_p7_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_7_1); - bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m1, a_sq_p7_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_1); - bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m3, a_sq_p7_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_3); - bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m5, a_sq_p7_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_5); - bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p7_m7, a_sq_p7_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_7_7); - bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_p7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p7, a_sq_p5_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_7); - bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p5, a_sq_p5_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_5); - bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p3, a_sq_p5_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_3); - bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_p1, a_sq_p5_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_5_1); - bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m1, a_sq_p5_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_1); - bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m3, a_sq_p5_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_3); - bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m5, a_sq_p5_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_5); - bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p5_m7, a_sq_p5_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_5_7); - bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_p5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p7, a_sq_p3_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_7); - bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p5, a_sq_p3_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_5); - bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p3, a_sq_p3_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_3); - bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_p1, a_sq_p3_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_3_1); - bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m1, a_sq_p3_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_1); - bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m3, a_sq_p3_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_3); - bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_p3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m5, a_sq_p3_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_5); - bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_p3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p3_m7, a_sq_p3_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_3_7); - bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_p3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p7, a_sq_p1_p7); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_7); - bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p5, a_sq_p1_p5); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_5); - bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p3, a_sq_p1_p3); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_3); - bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); xmm1 = _mm_adds_epi16(xmm0, y0_p_1_1); - bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_1); - bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_p1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m3, a_sq_p1_m3); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_3); - bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_p1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m5, a_sq_p1_m5); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_5); - bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_p1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_p1_m7, a_sq_p1_m7); xmm1 = _mm_adds_epi16(xmm0, y0_m_1_7); - bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_p1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p7, a_sq_m1_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_7); - bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_p7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p5, a_sq_m1_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_5); - bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_p5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p3, a_sq_m1_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_3); - bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_p3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_1_1); - bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_p1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_1); - bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m128i bit_met_m1_m1 = _mm_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m3, a_sq_m1_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_3); - bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m1_m3 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m5, a_sq_m1_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_5); - bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m1_m5 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m1_m7, a_sq_m1_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_1_7); - bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m1_m7 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p7, a_sq_m3_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_7); - bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_p7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p5, a_sq_m3_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_5); - bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_p5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p3, a_sq_m3_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_3); - bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_p3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_p1, a_sq_m3_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_3_1); - bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_p1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m1, a_sq_m3_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_1); - bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m128i bit_met_m3_m1 = _mm_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m3, a_sq_m3_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_3); - bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m128i bit_met_m3_m3 = _mm_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m5, a_sq_m3_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_5); - bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m3_m5 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m3_m7, a_sq_m3_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_3_7); - bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m3_m7 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p7, a_sq_m5_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_7); - bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_p7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p5, a_sq_m5_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_5); - bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_p5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p3, a_sq_m5_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_3); - bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_p3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_p1, a_sq_m5_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_5_1); - bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_p1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m1, a_sq_m5_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_1); - bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m128i bit_met_m5_m1 = _mm_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m3, a_sq_m5_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_3); - bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m128i bit_met_m5_m3 = _mm_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m5, a_sq_m5_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_5); - bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m5_m5 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m5_m7, a_sq_m5_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_5_7); - bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m5_m7 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p7, a_sq_m7_p7); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_7); - bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_p7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p5, a_sq_m7_p5); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_5); - bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_p5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p3, a_sq_m7_p3); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_3); - bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_p3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_p1, a_sq_m7_p1); xmm1 = _mm_subs_epi16(xmm0, y0_m_7_1); - bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_p1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m1, a_sq_m7_m1); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_1); - bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m128i bit_met_m7_m1 = _mm_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m3, a_sq_m7_m3); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_3); - bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m128i bit_met_m7_m3 = _mm_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m5, a_sq_m7_m5); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_5); - bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m128i bit_met_m7_m5 = _mm_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = _mm_subs_epi16(psi_a_m7_m7, a_sq_m7_m7); xmm1 = _mm_subs_epi16(xmm0, y0_p_7_7); - bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m128i bit_met_m7_m7 = _mm_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); // Detection for 1st bit (LTE mapping) // bit = 1 @@ -8344,7 +7833,7 @@ void qam64_qam64(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_m7_m5, bit_met_m7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_den_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_m5_p7, bit_met_m5_p5); xmm1 = _mm_max_epi16(bit_met_m5_p3, bit_met_m5_p1); xmm2 = _mm_max_epi16(bit_met_m5_m1, bit_met_m5_m3); @@ -8377,7 +7866,7 @@ void qam64_qam64(short *stream0_in, xmm3 = _mm_max_epi16(bit_met_p7_m5, bit_met_p7_m7); xmm4 = _mm_max_epi16(xmm0, xmm1); xmm5 = _mm_max_epi16(xmm2, xmm3); - logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); + simde__m128i logmax_num_re0 = _mm_max_epi16(xmm4, xmm5); xmm0 = _mm_max_epi16(bit_met_p5_p7, bit_met_p5_p5); xmm1 = _mm_max_epi16(bit_met_p5_p3, bit_met_p5_p1); xmm2 = _mm_max_epi16(bit_met_p5_m1, bit_met_p5_m3); @@ -8539,7 +8028,7 @@ void qam64_qam64(short *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m128i y2r = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // Detection for 4th bit (LTE mapping) xmm0 = _mm_max_epi16(bit_met_p7_p7, bit_met_p5_p7); @@ -8741,8 +8230,7 @@ void qam64_qam64(short *stream0_in, logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = _mm_max_epi16(logmax_num_re0, xmm5); - y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); - + simde__m128i y2i = _mm_subs_epi16(logmax_num_re0, logmax_den_re0); // map to output stream, difficult to do in SIMD since we have 6 16bit LLRs // RE 1 diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c index 719295a5ef..c00040f668 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c @@ -35,604 +35,118 @@ #include "PHY/phy_extern_ue.h" #include "PHY/sse_intrin.h" -int16_t ones256[16] __attribute__ ((aligned(32))) = {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; + static const int16_t ones256[16] __attribute__((aligned(32))) = {0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff}; -static __m256i rho_rpi __attribute__ ((aligned(32))); -static __m256i rho_rmi __attribute__ ((aligned(32))); -static __m256i rho_rpi_1_1 __attribute__ ((aligned(32))); -static __m256i rho_rpi_1_3 __attribute__ ((aligned(32))); -static __m256i rho_rpi_1_5 __attribute__ ((aligned(32))); -static __m256i rho_rpi_1_7 __attribute__ ((aligned(32))); -static __m256i rho_rpi_3_1 __attribute__ ((aligned(32))); -static __m256i rho_rpi_3_3 __attribute__ ((aligned(32))); -static __m256i rho_rpi_3_5 __attribute__ ((aligned(32))); -static __m256i rho_rpi_3_7 __attribute__ ((aligned(32))); -static __m256i rho_rpi_5_1 __attribute__ ((aligned(32))); -static __m256i rho_rpi_5_3 __attribute__ ((aligned(32))); -static __m256i rho_rpi_5_5 __attribute__ ((aligned(32))); -static __m256i rho_rpi_5_7 __attribute__ ((aligned(32))); -static __m256i rho_rpi_7_1 __attribute__ ((aligned(32))); -static __m256i rho_rpi_7_3 __attribute__ ((aligned(32))); -static __m256i rho_rpi_7_5 __attribute__ ((aligned(32))); -static __m256i rho_rpi_7_7 __attribute__ ((aligned(32))); -static __m256i rho_rmi_1_1 __attribute__ ((aligned(32))); -static __m256i rho_rmi_1_3 __attribute__ ((aligned(32))); -static __m256i rho_rmi_1_5 __attribute__ ((aligned(32))); -static __m256i rho_rmi_1_7 __attribute__ ((aligned(32))); -static __m256i rho_rmi_3_1 __attribute__ ((aligned(32))); -static __m256i rho_rmi_3_3 __attribute__ ((aligned(32))); -static __m256i rho_rmi_3_5 __attribute__ ((aligned(32))); -static __m256i rho_rmi_3_7 __attribute__ ((aligned(32))); -static __m256i rho_rmi_5_1 __attribute__ ((aligned(32))); -static __m256i rho_rmi_5_3 __attribute__ ((aligned(32))); -static __m256i rho_rmi_5_5 __attribute__ ((aligned(32))); -static __m256i rho_rmi_5_7 __attribute__ ((aligned(32))); -static __m256i rho_rmi_7_1 __attribute__ ((aligned(32))); -static __m256i rho_rmi_7_3 __attribute__ ((aligned(32))); -static __m256i rho_rmi_7_5 __attribute__ ((aligned(32))); -static __m256i rho_rmi_7_7 __attribute__ ((aligned(32))); + //============================================================================================== + // Auxiliary Makros -static __m256i psi_r_m7_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_m7_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_m5_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_m3_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_m1_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_p1_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_p3_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_p5_p7 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_m7 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_m5 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_m3 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_m1 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_p1 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_p3 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_p5 __attribute__ ((aligned(32))); -static __m256i psi_r_p7_p7 __attribute__ ((aligned(32))); + // calculate interference magnitude +#define interference_abs_epi16(psi, int_ch_mag, int_mag, c1, c2) \ + tmp_result = simde_mm256_cmpgt_epi16(int_ch_mag, psi); \ + tmp_result2 = simde_mm256_xor_si256(tmp_result, (*(__m256i *)&ones256[0])); \ + tmp_result = simde_mm256_and_si256(tmp_result, c1); \ + tmp_result2 = simde_mm256_and_si256(tmp_result2, c2); \ + const simde__m256i int_mag = simde_mm256_or_si256(tmp_result, tmp_result2); -static __m256i psi_i_m7_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_m7_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_m5_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_m3_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_m1_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_p1_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_p3_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_p5_p7 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_m7 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_m5 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_m3 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_m1 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_p1 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_p3 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_p5 __attribute__ ((aligned(32))); -static __m256i psi_i_p7_p7 __attribute__ ((aligned(32))); + // calculate interference magnitude + // tmp_result = ones in shorts corr. to interval 2<=x<=4, tmp_result2 interval < 2, tmp_result3 interval 46 +#define interference_abs_64qam_epi16(psi, int_ch_mag, int_two_ch_mag, int_three_ch_mag, a, c1, c3, c5, c7) \ + tmp_result = simde_mm256_cmpgt_epi16(int_two_ch_mag, psi); \ + tmp_result3 = simde_mm256_xor_si256(tmp_result, (*(__m256i *)&ones256[0])); \ + tmp_result2 = simde_mm256_cmpgt_epi16(int_ch_mag, psi); \ + tmp_result = simde_mm256_xor_si256(tmp_result, tmp_result2); \ + tmp_result4 = simde_mm256_cmpgt_epi16(psi, int_three_ch_mag); \ + tmp_result3 = simde_mm256_xor_si256(tmp_result3, tmp_result4); \ + tmp_result = simde_mm256_and_si256(tmp_result, c3); \ + tmp_result2 = simde_mm256_and_si256(tmp_result2, c1); \ + tmp_result3 = simde_mm256_and_si256(tmp_result3, c5); \ + tmp_result4 = simde_mm256_and_si256(tmp_result4, c7); \ + tmp_result = simde_mm256_or_si256(tmp_result, tmp_result2); \ + tmp_result3 = simde_mm256_or_si256(tmp_result3, tmp_result4); \ + const simde__m256i a = simde_mm256_or_si256(tmp_result, tmp_result3); -static __m256i a_r_m7_m7 __attribute__ ((aligned(32))); -static __m256i a_r_m7_m5 __attribute__ ((aligned(32))); -static __m256i a_r_m7_m3 __attribute__ ((aligned(32))); -static __m256i a_r_m7_m1 __attribute__ ((aligned(32))); -static __m256i a_r_m7_p1 __attribute__ ((aligned(32))); -static __m256i a_r_m7_p3 __attribute__ ((aligned(32))); -static __m256i a_r_m7_p5 __attribute__ ((aligned(32))); -static __m256i a_r_m7_p7 __attribute__ ((aligned(32))); -static __m256i a_r_m5_m7 __attribute__ ((aligned(32))); -static __m256i a_r_m5_m5 __attribute__ ((aligned(32))); -static __m256i a_r_m5_m3 __attribute__ ((aligned(32))); -static __m256i a_r_m5_m1 __attribute__ ((aligned(32))); -static __m256i a_r_m5_p1 __attribute__ ((aligned(32))); -static __m256i a_r_m5_p3 __attribute__ ((aligned(32))); -static __m256i a_r_m5_p5 __attribute__ ((aligned(32))); -static __m256i a_r_m5_p7 __attribute__ ((aligned(32))); -static __m256i a_r_m3_m7 __attribute__ ((aligned(32))); -static __m256i a_r_m3_m5 __attribute__ ((aligned(32))); -static __m256i a_r_m3_m3 __attribute__ ((aligned(32))); -static __m256i a_r_m3_m1 __attribute__ ((aligned(32))); -static __m256i a_r_m3_p1 __attribute__ ((aligned(32))); -static __m256i a_r_m3_p3 __attribute__ ((aligned(32))); -static __m256i a_r_m3_p5 __attribute__ ((aligned(32))); -static __m256i a_r_m3_p7 __attribute__ ((aligned(32))); -static __m256i a_r_m1_m7 __attribute__ ((aligned(32))); -static __m256i a_r_m1_m5 __attribute__ ((aligned(32))); -static __m256i a_r_m1_m3 __attribute__ ((aligned(32))); -static __m256i a_r_m1_m1 __attribute__ ((aligned(32))); -static __m256i a_r_m1_p1 __attribute__ ((aligned(32))); -static __m256i a_r_m1_p3 __attribute__ ((aligned(32))); -static __m256i a_r_m1_p5 __attribute__ ((aligned(32))); -static __m256i a_r_m1_p7 __attribute__ ((aligned(32))); -static __m256i a_r_p1_m7 __attribute__ ((aligned(32))); -static __m256i a_r_p1_m5 __attribute__ ((aligned(32))); -static __m256i a_r_p1_m3 __attribute__ ((aligned(32))); -static __m256i a_r_p1_m1 __attribute__ ((aligned(32))); -static __m256i a_r_p1_p1 __attribute__ ((aligned(32))); -static __m256i a_r_p1_p3 __attribute__ ((aligned(32))); -static __m256i a_r_p1_p5 __attribute__ ((aligned(32))); -static __m256i a_r_p1_p7 __attribute__ ((aligned(32))); -static __m256i a_r_p3_m7 __attribute__ ((aligned(32))); -static __m256i a_r_p3_m5 __attribute__ ((aligned(32))); -static __m256i a_r_p3_m3 __attribute__ ((aligned(32))); -static __m256i a_r_p3_m1 __attribute__ ((aligned(32))); -static __m256i a_r_p3_p1 __attribute__ ((aligned(32))); -static __m256i a_r_p3_p3 __attribute__ ((aligned(32))); -static __m256i a_r_p3_p5 __attribute__ ((aligned(32))); -static __m256i a_r_p3_p7 __attribute__ ((aligned(32))); -static __m256i a_r_p5_m7 __attribute__ ((aligned(32))); -static __m256i a_r_p5_m5 __attribute__ ((aligned(32))); -static __m256i a_r_p5_m3 __attribute__ ((aligned(32))); -static __m256i a_r_p5_m1 __attribute__ ((aligned(32))); -static __m256i a_r_p5_p1 __attribute__ ((aligned(32))); -static __m256i a_r_p5_p3 __attribute__ ((aligned(32))); -static __m256i a_r_p5_p5 __attribute__ ((aligned(32))); -static __m256i a_r_p5_p7 __attribute__ ((aligned(32))); -static __m256i a_r_p7_m7 __attribute__ ((aligned(32))); -static __m256i a_r_p7_m5 __attribute__ ((aligned(32))); -static __m256i a_r_p7_m3 __attribute__ ((aligned(32))); -static __m256i a_r_p7_m1 __attribute__ ((aligned(32))); -static __m256i a_r_p7_p1 __attribute__ ((aligned(32))); -static __m256i a_r_p7_p3 __attribute__ ((aligned(32))); -static __m256i a_r_p7_p5 __attribute__ ((aligned(32))); -static __m256i a_r_p7_p7 __attribute__ ((aligned(32))); + // calculates psi_a = psi_r*a_r + psi_i*a_i +#define prodsum_psi_a_epi16(psi_r, a_r, psi_i, a_i, psi_a) \ + tmp_result = simde_mm256_mulhi_epi16(psi_r, a_r); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(psi_i, a_i); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + simde__m256i psi_a = simde_mm256_adds_epi16(tmp_result, tmp_result2); -static __m256i a_i_m7_m7 __attribute__ ((aligned(32))); -static __m256i a_i_m7_m5 __attribute__ ((aligned(32))); -static __m256i a_i_m7_m3 __attribute__ ((aligned(32))); -static __m256i a_i_m7_m1 __attribute__ ((aligned(32))); -static __m256i a_i_m7_p1 __attribute__ ((aligned(32))); -static __m256i a_i_m7_p3 __attribute__ ((aligned(32))); -static __m256i a_i_m7_p5 __attribute__ ((aligned(32))); -static __m256i a_i_m7_p7 __attribute__ ((aligned(32))); -static __m256i a_i_m5_m7 __attribute__ ((aligned(32))); -static __m256i a_i_m5_m5 __attribute__ ((aligned(32))); -static __m256i a_i_m5_m3 __attribute__ ((aligned(32))); -static __m256i a_i_m5_m1 __attribute__ ((aligned(32))); -static __m256i a_i_m5_p1 __attribute__ ((aligned(32))); -static __m256i a_i_m5_p3 __attribute__ ((aligned(32))); -static __m256i a_i_m5_p5 __attribute__ ((aligned(32))); -static __m256i a_i_m5_p7 __attribute__ ((aligned(32))); -static __m256i a_i_m3_m7 __attribute__ ((aligned(32))); -static __m256i a_i_m3_m5 __attribute__ ((aligned(32))); -static __m256i a_i_m3_m3 __attribute__ ((aligned(32))); -static __m256i a_i_m3_m1 __attribute__ ((aligned(32))); -static __m256i a_i_m3_p1 __attribute__ ((aligned(32))); -static __m256i a_i_m3_p3 __attribute__ ((aligned(32))); -static __m256i a_i_m3_p5 __attribute__ ((aligned(32))); -static __m256i a_i_m3_p7 __attribute__ ((aligned(32))); -static __m256i a_i_m1_m7 __attribute__ ((aligned(32))); -static __m256i a_i_m1_m5 __attribute__ ((aligned(32))); -static __m256i a_i_m1_m3 __attribute__ ((aligned(32))); -static __m256i a_i_m1_m1 __attribute__ ((aligned(32))); -static __m256i a_i_m1_p1 __attribute__ ((aligned(32))); -static __m256i a_i_m1_p3 __attribute__ ((aligned(32))); -static __m256i a_i_m1_p5 __attribute__ ((aligned(32))); -static __m256i a_i_m1_p7 __attribute__ ((aligned(32))); -static __m256i a_i_p1_m7 __attribute__ ((aligned(32))); -static __m256i a_i_p1_m5 __attribute__ ((aligned(32))); -static __m256i a_i_p1_m3 __attribute__ ((aligned(32))); -static __m256i a_i_p1_m1 __attribute__ ((aligned(32))); -static __m256i a_i_p1_p1 __attribute__ ((aligned(32))); -static __m256i a_i_p1_p3 __attribute__ ((aligned(32))); -static __m256i a_i_p1_p5 __attribute__ ((aligned(32))); -static __m256i a_i_p1_p7 __attribute__ ((aligned(32))); -static __m256i a_i_p3_m7 __attribute__ ((aligned(32))); -static __m256i a_i_p3_m5 __attribute__ ((aligned(32))); -static __m256i a_i_p3_m3 __attribute__ ((aligned(32))); -static __m256i a_i_p3_m1 __attribute__ ((aligned(32))); -static __m256i a_i_p3_p1 __attribute__ ((aligned(32))); -static __m256i a_i_p3_p3 __attribute__ ((aligned(32))); -static __m256i a_i_p3_p5 __attribute__ ((aligned(32))); -static __m256i a_i_p3_p7 __attribute__ ((aligned(32))); -static __m256i a_i_p5_m7 __attribute__ ((aligned(32))); -static __m256i a_i_p5_m5 __attribute__ ((aligned(32))); -static __m256i a_i_p5_m3 __attribute__ ((aligned(32))); -static __m256i a_i_p5_m1 __attribute__ ((aligned(32))); -static __m256i a_i_p5_p1 __attribute__ ((aligned(32))); -static __m256i a_i_p5_p3 __attribute__ ((aligned(32))); -static __m256i a_i_p5_p5 __attribute__ ((aligned(32))); -static __m256i a_i_p5_p7 __attribute__ ((aligned(32))); -static __m256i a_i_p7_m7 __attribute__ ((aligned(32))); -static __m256i a_i_p7_m5 __attribute__ ((aligned(32))); -static __m256i a_i_p7_m3 __attribute__ ((aligned(32))); -static __m256i a_i_p7_m1 __attribute__ ((aligned(32))); -static __m256i a_i_p7_p1 __attribute__ ((aligned(32))); -static __m256i a_i_p7_p3 __attribute__ ((aligned(32))); -static __m256i a_i_p7_p5 __attribute__ ((aligned(32))); -static __m256i a_i_p7_p7 __attribute__ ((aligned(32))); + // calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor +#define square_a_epi16(a_r, a_i, int_ch_mag, scale_factor, a_sq) \ + tmp_result = simde_mm256_mulhi_epi16(a_r, a_r); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result = simde_mm256_mulhi_epi16(tmp_result, scale_factor); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result = simde_mm256_mulhi_epi16(tmp_result, int_ch_mag); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(a_i, a_i); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2, scale_factor); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2, int_ch_mag); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + const simde__m256i a_sq = simde_mm256_adds_epi16(tmp_result, tmp_result2); -static __m256i psi_a_m7_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_m7_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_m5_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_m3_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_m1_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_p1_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_p3_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_p5_p7 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_m7 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_m5 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_m3 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_m1 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_p1 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_p3 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_p5 __attribute__ ((aligned(32))); -static __m256i psi_a_p7_p7 __attribute__ ((aligned(32))); + // calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor for 64-QAM +#define square_a_64qam_epi16(a_r, a_i, int_ch_mag, scale_factor, a_sq) \ + tmp_result = simde_mm256_mulhi_epi16(a_r, a_r); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result = simde_mm256_mulhi_epi16(tmp_result, scale_factor); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 3); \ + tmp_result = simde_mm256_mulhi_epi16(tmp_result, int_ch_mag); \ + tmp_result = simde_mm256_slli_epi16(tmp_result, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(a_i, a_i); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2, scale_factor); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 3); \ + tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2, int_ch_mag); \ + tmp_result2 = simde_mm256_slli_epi16(tmp_result2, 1); \ + const simde__m256i a_sq = simde_mm256_adds_epi16(tmp_result, tmp_result2); -static __m256i a_sq_m7_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_m7_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_m5_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_m3_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_m1_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_p1_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_p3_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_p5_p7 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_m7 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_m5 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_m3 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_m1 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_p1 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_p3 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_p5 __attribute__ ((aligned(32))); -static __m256i a_sq_p7_p7 __attribute__ ((aligned(32))); + void seperate_real_imag_parts(__m256i *out_re, __m256i *out_im, __m256i in0, __m256i in1) + { + __m256i tmp0; + __m256i tmp1; -static __m256i bit_met_m7_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_m7_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_m5_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_m3_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_m1_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_p1_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_p3_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_p5_p7 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_m7 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_m5 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_m3 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_m1 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_p1 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_p3 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_p5 __attribute__ ((aligned(32))); -static __m256i bit_met_p7_p7 __attribute__ ((aligned(32))); + in0 = simde_mm256_shufflelo_epi16(in0, 0xd8); //_MM_SHUFFLE(0,2,1,3)); + in0 = simde_mm256_shufflehi_epi16(in0, 0xd8); //_MM_SHUFFLE(0,2,1,3)); + in0 = simde_mm256_shuffle_epi32(in0, 0xd8); //_MM_SHUFFLE(0,2,1,3)); -static __m256i y0_p_1_1 __attribute__ ((aligned(32))); -static __m256i y0_p_1_3 __attribute__ ((aligned(32))); -static __m256i y0_p_1_5 __attribute__ ((aligned(32))); -static __m256i y0_p_1_7 __attribute__ ((aligned(32))); -static __m256i y0_p_3_1 __attribute__ ((aligned(32))); -static __m256i y0_p_3_3 __attribute__ ((aligned(32))); -static __m256i y0_p_3_5 __attribute__ ((aligned(32))); -static __m256i y0_p_3_7 __attribute__ ((aligned(32))); -static __m256i y0_p_5_1 __attribute__ ((aligned(32))); -static __m256i y0_p_5_3 __attribute__ ((aligned(32))); -static __m256i y0_p_5_5 __attribute__ ((aligned(32))); -static __m256i y0_p_5_7 __attribute__ ((aligned(32))); -static __m256i y0_p_7_1 __attribute__ ((aligned(32))); -static __m256i y0_p_7_3 __attribute__ ((aligned(32))); -static __m256i y0_p_7_5 __attribute__ ((aligned(32))); -static __m256i y0_p_7_7 __attribute__ ((aligned(32))); -static __m256i y0_m_1_1 __attribute__ ((aligned(32))); -static __m256i y0_m_1_3 __attribute__ ((aligned(32))); -static __m256i y0_m_1_5 __attribute__ ((aligned(32))); -static __m256i y0_m_1_7 __attribute__ ((aligned(32))); -static __m256i y0_m_3_1 __attribute__ ((aligned(32))); -static __m256i y0_m_3_3 __attribute__ ((aligned(32))); -static __m256i y0_m_3_5 __attribute__ ((aligned(32))); -static __m256i y0_m_3_7 __attribute__ ((aligned(32))); -static __m256i y0_m_5_1 __attribute__ ((aligned(32))); -static __m256i y0_m_5_3 __attribute__ ((aligned(32))); -static __m256i y0_m_5_5 __attribute__ ((aligned(32))); -static __m256i y0_m_5_7 __attribute__ ((aligned(32))); -static __m256i y0_m_7_1 __attribute__ ((aligned(32))); -static __m256i y0_m_7_3 __attribute__ ((aligned(32))); -static __m256i y0_m_7_5 __attribute__ ((aligned(32))); -static __m256i y0_m_7_7 __attribute__ ((aligned(32))); + in1 = simde_mm256_shufflelo_epi16(in1, 0xd8); //_MM_SHUFFLE(0,2,1,3)); + in1 = simde_mm256_shufflehi_epi16(in1, 0xd8); //_MM_SHUFFLE(0,2,1,3)); + in1 = simde_mm256_shuffle_epi32(in1, 0xd8); //_MM_SHUFFLE(0,2,1,3)); -static __m256i xmm0 __attribute__ ((aligned(32))); -static __m256i xmm1 __attribute__ ((aligned(32))); -static __m256i xmm2 __attribute__ ((aligned(32))); -static __m256i xmm3 __attribute__ ((aligned(32))); -static __m256i xmm4 __attribute__ ((aligned(32))); -static __m256i xmm5 __attribute__ ((aligned(32))); -static __m256i xmm6 __attribute__ ((aligned(32))); -static __m256i xmm7 __attribute__ ((aligned(32))); -static __m256i xmm8 __attribute__ ((aligned(32))); + // in0 = [Re(0,1,2,3) Im(0,1,2,3) Re(4,5,6,7) Im(4,5,6,7)] + // in0 = [Re(8,9,10,11) Im(8,9,10,11) Re(12,13,14,15) Im(12,13,14,15)] -static __m256i y0r __attribute__ ((aligned(32))); -static __m256i y0i __attribute__ ((aligned(32))); -static __m256i y1r __attribute__ ((aligned(32))); -static __m256i y1i __attribute__ ((aligned(32))); -static __m256i y2r __attribute__ ((aligned(32))); -static __m256i y2i __attribute__ ((aligned(32))); + tmp0 = simde_mm256_unpacklo_epi64(in0, in1); + // axmm2 = [Re(0,1,2,3) Re(8,9,10,11) Re(4,5,6,7) Re(12,13,14,15)] + tmp0 = simde_mm256_permute4x64_epi64(tmp0, 0xd8); // Re(rho) -static __m256i logmax_num_re0 __attribute__ ((aligned(32))); -static __m256i logmax_den_re0 __attribute__ ((aligned(32))); + tmp1 = simde_mm256_unpackhi_epi64(in0, in1); + // axmm3 = [Im(0,1,2,3) Im(8,9,10,11) Im(4,5,6,7) Im(12,13,14,15)] + tmp1 = simde_mm256_permute4x64_epi64(tmp1, 0xd8); // Im(rho) -static __m256i tmp_result __attribute__ ((aligned(32))); -static __m256i tmp_result2 __attribute__ ((aligned(32))); -static __m256i tmp_result3 __attribute__ ((aligned(32))); -static __m256i tmp_result4 __attribute__ ((aligned(32))); - -//============================================================================================== -// Auxiliary Makros - -// calculate interference magnitude -#define interference_abs_epi16(psi,int_ch_mag,int_mag,c1,c2) tmp_result = simde_mm256_cmpgt_epi16(int_ch_mag,psi); tmp_result2 = simde_mm256_xor_si256(tmp_result,(*(__m256i*)&ones256[0])); tmp_result = simde_mm256_and_si256(tmp_result,c1); tmp_result2 = simde_mm256_and_si256(tmp_result2,c2); int_mag = simde_mm256_or_si256(tmp_result,tmp_result2); - -// calculate interference magnitude -// tmp_result = ones in shorts corr. to interval 2<=x<=4, tmp_result2 interval < 2, tmp_result3 interval 46 -#define interference_abs_64qam_epi16(psi,int_ch_mag,int_two_ch_mag,int_three_ch_mag,a,c1,c3,c5,c7) tmp_result = simde_mm256_cmpgt_epi16(int_two_ch_mag,psi); tmp_result3 = simde_mm256_xor_si256(tmp_result,(*(__m256i*)&ones256[0])); tmp_result2 = simde_mm256_cmpgt_epi16(int_ch_mag,psi); tmp_result = simde_mm256_xor_si256(tmp_result,tmp_result2); tmp_result4 = simde_mm256_cmpgt_epi16(psi,int_three_ch_mag); tmp_result3 = simde_mm256_xor_si256(tmp_result3,tmp_result4); tmp_result = simde_mm256_and_si256(tmp_result,c3); tmp_result2 = simde_mm256_and_si256(tmp_result2,c1); tmp_result3 = simde_mm256_and_si256(tmp_result3,c5); tmp_result4 = simde_mm256_and_si256(tmp_result4,c7); tmp_result = simde_mm256_or_si256(tmp_result,tmp_result2); tmp_result3 = simde_mm256_or_si256(tmp_result3,tmp_result4); a = simde_mm256_or_si256(tmp_result,tmp_result3); - -// calculates psi_a = psi_r*a_r + psi_i*a_i -#define prodsum_psi_a_epi16(psi_r,a_r,psi_i,a_i,psi_a) tmp_result = simde_mm256_mulhi_epi16(psi_r,a_r); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result2 = simde_mm256_mulhi_epi16(psi_i,a_i); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); psi_a = simde_mm256_adds_epi16(tmp_result,tmp_result2); - -// calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor -#define square_a_epi16(a_r,a_i,int_ch_mag,scale_factor,a_sq) tmp_result = simde_mm256_mulhi_epi16(a_r,a_r); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result = simde_mm256_mulhi_epi16(tmp_result,scale_factor); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result = simde_mm256_mulhi_epi16(tmp_result,int_ch_mag); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result2 = simde_mm256_mulhi_epi16(a_i,a_i); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2,scale_factor); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2,int_ch_mag); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); a_sq = simde_mm256_adds_epi16(tmp_result,tmp_result2); - -// calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor for 64-QAM -#define square_a_64qam_epi16(a_r,a_i,int_ch_mag,scale_factor,a_sq) tmp_result = simde_mm256_mulhi_epi16(a_r,a_r); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result = simde_mm256_mulhi_epi16(tmp_result,scale_factor); tmp_result = simde_mm256_slli_epi16(tmp_result,3); tmp_result = simde_mm256_mulhi_epi16(tmp_result,int_ch_mag); tmp_result = simde_mm256_slli_epi16(tmp_result,1); tmp_result2 = simde_mm256_mulhi_epi16(a_i,a_i); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2,scale_factor); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,3); tmp_result2 = simde_mm256_mulhi_epi16(tmp_result2,int_ch_mag); tmp_result2 = simde_mm256_slli_epi16(tmp_result2,1); a_sq = simde_mm256_adds_epi16(tmp_result,tmp_result2); - -void seperate_real_imag_parts(__m256i *out_re, - __m256i *out_im, - __m256i in0, - __m256i in1) -{ - __m256i tmp0; - __m256i tmp1; - - in0 = simde_mm256_shufflelo_epi16(in0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - in0 = simde_mm256_shufflehi_epi16(in0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - in0 = simde_mm256_shuffle_epi32(in0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - - in1 = simde_mm256_shufflelo_epi16(in1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - in1 = simde_mm256_shufflehi_epi16(in1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - in1 = simde_mm256_shuffle_epi32(in1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - - //in0 = [Re(0,1,2,3) Im(0,1,2,3) Re(4,5,6,7) Im(4,5,6,7)] - //in0 = [Re(8,9,10,11) Im(8,9,10,11) Re(12,13,14,15) Im(12,13,14,15)] - - tmp0 = simde_mm256_unpacklo_epi64(in0, in1); - //axmm2 = [Re(0,1,2,3) Re(8,9,10,11) Re(4,5,6,7) Re(12,13,14,15)] - tmp0 = simde_mm256_permute4x64_epi64(tmp0,0xd8); // Re(rho) - - tmp1 = simde_mm256_unpackhi_epi64(in0, in1); - //axmm3 = [Im(0,1,2,3) Im(8,9,10,11) Im(4,5,6,7) Im(12,13,14,15)] - tmp1 = simde_mm256_permute4x64_epi64(tmp1,0xd8); // Im(rho) - - *out_re = tmp0; - *out_im = tmp1; + *out_re = tmp0; + *out_im = tmp1; } void qam64_qam16_avx2(short *stream0_in, @@ -730,20 +244,21 @@ void qam64_qam16_avx2(short *stream0_in, xmm2 = _mm_unpacklo_epi64(xmm0,xmm1); // Re(rho) xmm3 = _mm_unpackhi_epi64(xmm0,xmm1); // Im(rho) */ + simde__m256i xmm0, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8; seperate_real_imag_parts(&xmm2, &xmm3, rho01_256i[i], rho01_256i[i+1]); - rho_rpi = simde_mm256_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = simde_mm256_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + const simde__m256i rho_rpi = simde_mm256_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + const simde__m256i rho_rmi = simde_mm256_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = simde_mm256_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); - rho_rmi_1_1 = simde_mm256_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); - rho_rpi_3_3 = simde_mm256_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); - rho_rmi_3_3 = simde_mm256_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); - rho_rpi_5_5 = simde_mm256_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); - rho_rmi_5_5 = simde_mm256_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); - rho_rpi_7_7 = simde_mm256_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); - rho_rmi_7_7 = simde_mm256_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); + simde__m256i rho_rpi_1_1 = simde_mm256_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); + simde__m256i rho_rmi_1_1 = simde_mm256_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); + simde__m256i rho_rpi_3_3 = simde_mm256_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); + simde__m256i rho_rmi_3_3 = simde_mm256_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); + simde__m256i rho_rpi_5_5 = simde_mm256_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); + simde__m256i rho_rmi_5_5 = simde_mm256_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); + simde__m256i rho_rpi_7_7 = simde_mm256_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); + simde__m256i rho_rmi_7_7 = simde_mm256_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); rho_rpi_5_5 = simde_mm256_slli_epi16(rho_rpi_5_5, 1); rho_rmi_5_5 = simde_mm256_slli_epi16(rho_rmi_5_5, 1); @@ -758,38 +273,38 @@ void qam64_qam16_avx2(short *stream0_in, xmm7 = simde_mm256_slli_epi16(xmm7, 1); xmm8 = simde_mm256_slli_epi16(xmm8, 2); - rho_rpi_1_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_1_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_1_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_1_5 = simde_mm256_subs_epi16(xmm4, xmm7); - rho_rpi_1_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_1_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_1_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_1_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_1_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_1_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_1_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_1_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, THREE_OVER_SQRT_42); - rho_rpi_3_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_3_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_3_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_3_5 = simde_mm256_subs_epi16(xmm4, xmm7); - rho_rpi_3_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_3_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_3_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_3_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_3_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_3_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_3_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_3_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, FIVE_OVER_SQRT_42); xmm4 = simde_mm256_slli_epi16(xmm4, 1); - rho_rpi_5_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_5_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_5_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_5_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_5_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_5_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_5_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_5_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_5_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_5_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_5_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_5_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, SEVEN_OVER_SQRT_42); xmm4 = simde_mm256_slli_epi16(xmm4, 2); - rho_rpi_7_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_7_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_7_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_7_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_7_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_7_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_7_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_7_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_7_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_7_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_7_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_7_5 = simde_mm256_subs_epi16(xmm4, xmm7); // Rearrange interfering MF output /* @@ -807,286 +322,288 @@ void qam64_qam16_avx2(short *stream0_in, y1i = simde_mm256_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)] */ + simde__m256i y1r, y1i; seperate_real_imag_parts(&y1r, &y1i, stream1_256i_in[i], stream1_256i_in[i+1]); // Psi_r calculation from rho_rpi or rho_rmi xmm0 = simde_mm256_broadcastw_epi16(_mm_set1_epi16(0));// ZERO for abs_pi16 xmm2 = simde_mm256_subs_epi16(rho_rpi_7_7, y1r); - psi_r_p7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_5, y1r); - psi_r_p7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_3, y1r); - psi_r_p7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_1, y1r); - psi_r_p7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_1, y1r); - psi_r_p7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_3, y1r); - psi_r_p7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_5, y1r); - psi_r_p7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_7, y1r); - psi_r_p7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_7, y1r); - psi_r_p5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_5, y1r); - psi_r_p5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_3, y1r); - psi_r_p5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_1, y1r); - psi_r_p5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_1, y1r); - psi_r_p5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_3, y1r); - psi_r_p5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_5, y1r); - psi_r_p5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_7, y1r); - psi_r_p5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_7, y1r); - psi_r_p3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_5, y1r); - psi_r_p3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_3, y1r); - psi_r_p3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_1, y1r); - psi_r_p3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_1, y1r); - psi_r_p3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_3, y1r); - psi_r_p3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_5, y1r); - psi_r_p3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_7, y1r); - psi_r_p3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_7, y1r); - psi_r_p1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_5, y1r); - psi_r_p1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_3, y1r); - psi_r_p1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_1, y1r); - psi_r_p1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_1, y1r); - psi_r_p1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_3, y1r); - psi_r_p1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_5, y1r); - psi_r_p1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_7, y1r); - psi_r_p1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_7, y1r); - psi_r_m1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_5, y1r); - psi_r_m1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_3, y1r); - psi_r_m1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_1, y1r); - psi_r_m1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_1, y1r); - psi_r_m1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_3, y1r); - psi_r_m1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_5, y1r); - psi_r_m1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_7, y1r); - psi_r_m1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_7, y1r); - psi_r_m3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_5, y1r); - psi_r_m3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_3, y1r); - psi_r_m3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_1, y1r); - psi_r_m3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_1, y1r); - psi_r_m3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_3, y1r); - psi_r_m3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_5, y1r); - psi_r_m3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_7, y1r); - psi_r_m3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_7, y1r); - psi_r_m5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_5, y1r); - psi_r_m5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_3, y1r); - psi_r_m5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_1, y1r); - psi_r_m5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_1, y1r); - psi_r_m5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_3, y1r); - psi_r_m5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_5, y1r); - psi_r_m5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_7, y1r); - psi_r_m5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_7, y1r); - psi_r_m7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_5, y1r); - psi_r_m7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_3, y1r); - psi_r_m7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_1, y1r); - psi_r_m7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_1, y1r); - psi_r_m7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_3, y1r); - psi_r_m7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_5, y1r); - psi_r_m7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_7, y1r); - psi_r_m7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m7 = simde_mm256_abs_epi16(xmm2); // Psi_i calculation from rho_rpi or rho_rmi xmm2 = simde_mm256_subs_epi16(rho_rmi_7_7, y1i); - psi_i_p7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_7, y1i); - psi_i_p7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_7, y1i); - psi_i_p7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_7, y1i); - psi_i_p7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_7, y1i); - psi_i_p7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_7, y1i); - psi_i_p7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_7, y1i); - psi_i_p7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_7, y1i); - psi_i_p7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_5, y1i); - psi_i_p5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_5, y1i); - psi_i_p5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_5, y1i); - psi_i_p5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_5, y1i); - psi_i_p5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_5, y1i); - psi_i_p5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_5, y1i); - psi_i_p5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_5, y1i); - psi_i_p5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_5, y1i); - psi_i_p5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_3, y1i); - psi_i_p3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_3, y1i); - psi_i_p3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_3, y1i); - psi_i_p3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_3, y1i); - psi_i_p3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_3, y1i); - psi_i_p3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_3, y1i); - psi_i_p3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_3, y1i); - psi_i_p3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_3, y1i); - psi_i_p3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_1, y1i); - psi_i_p1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_1, y1i); - psi_i_p1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_1, y1i); - psi_i_p1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_1, y1i); - psi_i_p1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_1, y1i); - psi_i_p1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_1, y1i); - psi_i_p1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_1, y1i); - psi_i_p1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_1, y1i); - psi_i_p1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_1, y1i); - psi_i_m1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_1, y1i); - psi_i_m1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_1, y1i); - psi_i_m1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_1, y1i); - psi_i_m1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_1, y1i); - psi_i_m1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_1, y1i); - psi_i_m1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_1, y1i); - psi_i_m1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_1, y1i); - psi_i_m1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_3, y1i); - psi_i_m3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_3, y1i); - psi_i_m3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_3, y1i); - psi_i_m3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_3, y1i); - psi_i_m3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_3, y1i); - psi_i_m3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_3, y1i); - psi_i_m3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_3, y1i); - psi_i_m3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_3, y1i); - psi_i_m3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_5, y1i); - psi_i_m5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_5, y1i); - psi_i_m5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_5, y1i); - psi_i_m5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_5, y1i); - psi_i_m5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_5, y1i); - psi_i_m5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_5, y1i); - psi_i_m5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_5, y1i); - psi_i_m5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_5, y1i); - psi_i_m5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_7, y1i); - psi_i_m7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_7, y1i); - psi_i_m7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_7, y1i); - psi_i_m7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_7, y1i); - psi_i_m7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_7, y1i); - psi_i_m7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_7, y1i); - psi_i_m7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_7, y1i); - psi_i_m7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_7, y1i); - psi_i_m7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m7 = simde_mm256_abs_epi16(xmm2); -/* - // Rearrange desired MF output - xmm0 = stream0_128i_in[i]; - xmm1 = stream0_128i_in[i+1]; - xmm0 = simde_mm256_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - xmm0 = simde_mm256_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - xmm0 = simde_mm256_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); - xmm1 = simde_mm256_shufflelo_epi16(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - xmm1 = simde_mm256_shufflehi_epi16(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - xmm1 = simde_mm256_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); - //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] - //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] - y0r = simde_mm256_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] - y0i = simde_mm256_unpackhi_epi64(xmm0,xmm1); -*/ + /* + // Rearrange desired MF output + xmm0 = stream0_128i_in[i]; + xmm1 = stream0_128i_in[i+1]; + xmm0 = simde_mm256_shufflelo_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); + xmm0 = simde_mm256_shufflehi_epi16(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); + xmm0 = simde_mm256_shuffle_epi32(xmm0,0xd8); //_MM_SHUFFLE(0,2,1,3)); + xmm1 = simde_mm256_shufflelo_epi16(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); + xmm1 = simde_mm256_shufflehi_epi16(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); + xmm1 = simde_mm256_shuffle_epi32(xmm1,0xd8); //_MM_SHUFFLE(0,2,1,3)); + //xmm0 = [Re(0,1) Re(2,3) Im(0,1) Im(2,3)] + //xmm1 = [Re(4,5) Re(6,7) Im(4,5) Im(6,7)] + y0r = simde_mm256_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] + y0i = simde_mm256_unpackhi_epi64(xmm0,xmm1); + */ + simde__m256i y0r, y0i; seperate_real_imag_parts(&y0r, &y0i, stream0_256i_in[i], stream0_256i_in[i+1]); /* @@ -1133,40 +650,40 @@ void qam64_qam16_avx2(short *stream0_in, y0i_seven_over_sqrt_21 = simde_mm256_mulhi_epi16(y0i, SEVEN_OVER_SQRT_42); y0i_seven_over_sqrt_21 = simde_mm256_slli_epi16(y0i_seven_over_sqrt_21, 2); // Q2.14 - y0_p_7_1 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_7_3 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_7_5 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_7_7 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_5_1 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_5_3 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_5_5 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_5_7 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_3_1 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_3_3 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_3_5 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_3_7 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_1_1 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_1_3 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_1_5 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_1_7 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - - y0_m_1_1 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_1_3 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_1_5 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_1_7 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_3_1 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_3_3 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_3_5 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_3_7 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_5_1 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_5_3 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_5_5 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_5_7 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_7_1 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_7_3 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_7_5 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_7_7 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_7_1 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_7_3 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_7_5 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_7_7 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_5_1 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_5_3 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_5_5 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_5_7 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_3_1 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_3_3 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_3_5 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_3_7 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_1_1 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_1_3 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_1_5 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_1_7 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_1_1 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_1_3 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_1_5 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_1_7 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_3_1 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_3_3 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_3_5 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_3_7 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_5_1 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_5_3 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_5_5 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_5_7 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_7_1 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_7_3 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_7_5 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_7_7 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i tmp_result, tmp_result2; interference_abs_epi16(psi_r_p7_p7, ch_mag_int, a_r_p7_p7, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_r_p7_p5, ch_mag_int, a_r_p7_p5, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); interference_abs_epi16(psi_r_p7_p3, ch_mag_int, a_r_p7_p3, ONE_OVER_SQRT_10_Q15, THREE_OVER_SQRT_10); @@ -1461,200 +978,201 @@ void qam64_qam16_avx2(short *stream0_in, ch_mag_98_over_42_with_sigma2 = simde_mm256_mulhi_epi16(ch_mag_des,FORTYNINE_OVER_FOUR_SQRT_42); ch_mag_98_over_42_with_sigma2 = simde_mm256_slli_epi16(ch_mag_98_over_42_with_sigma2,2); + simde__m256i xmm1; // Computing Metrics xmm0 = simde_mm256_subs_epi16(psi_a_p7_p7, a_sq_p7_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_7); - bit_met_p7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_p7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p5, a_sq_p7_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_5); - bit_met_p7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p3, a_sq_p7_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_3); - bit_met_p7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p1, a_sq_p7_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_1); - bit_met_p7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m1, a_sq_p7_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_1); - bit_met_p7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m3, a_sq_p7_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_3); - bit_met_p7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m5, a_sq_p7_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_5); - bit_met_p7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m7, a_sq_p7_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_7); - bit_met_p7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_p7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p7, a_sq_p5_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_7); - bit_met_p5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p5, a_sq_p5_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_5); - bit_met_p5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p3, a_sq_p5_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_3); - bit_met_p5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p1, a_sq_p5_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_1); - bit_met_p5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m1, a_sq_p5_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_1); - bit_met_p5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m3, a_sq_p5_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_3); - bit_met_p5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m5, a_sq_p5_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_5); - bit_met_p5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m7, a_sq_p5_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_7); - bit_met_p5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p7, a_sq_p3_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_7); - bit_met_p3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p5, a_sq_p3_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_5); - bit_met_p3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p3, a_sq_p3_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_3); - bit_met_p3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_p3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p1, a_sq_p3_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_1); - bit_met_p3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m1, a_sq_p3_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_1); - bit_met_p3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m3, a_sq_p3_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_3); - bit_met_p3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_p3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m5, a_sq_p3_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_5); - bit_met_p3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m7, a_sq_p3_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_7); - bit_met_p3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p7, a_sq_p1_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_7); - bit_met_p1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p5, a_sq_p1_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_5); - bit_met_p1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p3, a_sq_p1_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_3); - bit_met_p1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_1); - bit_met_p1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_p1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_1); - bit_met_p1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_p1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m3, a_sq_p1_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_3); - bit_met_p1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m5, a_sq_p1_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_5); - bit_met_p1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m7, a_sq_p1_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_7); - bit_met_p1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p7, a_sq_m1_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_7); - bit_met_m1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p5, a_sq_m1_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_5); - bit_met_m1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p3, a_sq_m1_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_3); - bit_met_m1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_1); - bit_met_m1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_m1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_1); - bit_met_m1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_m1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m3, a_sq_m1_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_3); - bit_met_m1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m5, a_sq_m1_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_5); - bit_met_m1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m7, a_sq_m1_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_7); - bit_met_m1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p7, a_sq_m3_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_7); - bit_met_m3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p5, a_sq_m3_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_5); - bit_met_m3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p3, a_sq_m3_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_3); - bit_met_m3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_m3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p1, a_sq_m3_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_1); - bit_met_m3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m1, a_sq_m3_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_1); - bit_met_m3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m3, a_sq_m3_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_3); - bit_met_m3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_m3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m5, a_sq_m3_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_5); - bit_met_m3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m7, a_sq_m3_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_7); - bit_met_m3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p7, a_sq_m5_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_7); - bit_met_m5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p5, a_sq_m5_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_5); - bit_met_m5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p3, a_sq_m5_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_3); - bit_met_m5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p1, a_sq_m5_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_1); - bit_met_m5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m1, a_sq_m5_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_1); - bit_met_m5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m3, a_sq_m5_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_3); - bit_met_m5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m5, a_sq_m5_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_5); - bit_met_m5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m7, a_sq_m5_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_7); - bit_met_m5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p7, a_sq_m7_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_7); - bit_met_m7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_m7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p5, a_sq_m7_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_5); - bit_met_m7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p3, a_sq_m7_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_3); - bit_met_m7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p1, a_sq_m7_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_1); - bit_met_m7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m1, a_sq_m7_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_1); - bit_met_m7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m3, a_sq_m7_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_3); - bit_met_m7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m5, a_sq_m7_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_5); - bit_met_m7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m7, a_sq_m7_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_7); - bit_met_m7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_m7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); // Detection for 1st bit (LTE mapping) // bit = 1 @@ -1664,7 +1182,7 @@ void qam64_qam16_avx2(short *stream0_in, xmm3 = simde_mm256_max_epi16(bit_met_m7_m5, bit_met_m7_m7); xmm4 = simde_mm256_max_epi16(xmm0, xmm1); xmm5 = simde_mm256_max_epi16(xmm2, xmm3); - logmax_den_re0 = simde_mm256_max_epi16(xmm4, xmm5); + simde__m256i logmax_den_re0 = simde_mm256_max_epi16(xmm4, xmm5); xmm0 = simde_mm256_max_epi16(bit_met_m5_p7, bit_met_m5_p5); xmm1 = simde_mm256_max_epi16(bit_met_m5_p3, bit_met_m5_p1); xmm2 = simde_mm256_max_epi16(bit_met_m5_m1, bit_met_m5_m3); @@ -1697,7 +1215,7 @@ void qam64_qam16_avx2(short *stream0_in, xmm3 = simde_mm256_max_epi16(bit_met_p7_m5, bit_met_p7_m7); xmm4 = simde_mm256_max_epi16(xmm0, xmm1); xmm5 = simde_mm256_max_epi16(xmm2, xmm3); - logmax_num_re0 = simde_mm256_max_epi16(xmm4, xmm5); + simde__m256i logmax_num_re0 = simde_mm256_max_epi16(xmm4, xmm5); xmm0 = simde_mm256_max_epi16(bit_met_p5_p7, bit_met_p5_p5); xmm1 = simde_mm256_max_epi16(bit_met_p5_p3, bit_met_p5_p1); xmm2 = simde_mm256_max_epi16(bit_met_p5_m1, bit_met_p5_m3); @@ -1859,7 +1377,7 @@ void qam64_qam16_avx2(short *stream0_in, logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm5); - y2r = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m256i y2r = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); // Detection for 4th bit (LTE mapping) xmm0 = simde_mm256_max_epi16(bit_met_p7_p7, bit_met_p5_p7); @@ -2061,7 +1579,7 @@ void qam64_qam16_avx2(short *stream0_in, logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm5); - y2i = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m256i y2i = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); // map to output stream, difficult to do in SIMD since we have 6 16bit LLRs // RE 1 @@ -2300,21 +1818,21 @@ void qam64_qam64_avx2(int32_t *stream0_in, //xmm3 = [Im(0,1,2,3) Im(8,9,10,11) Im(4,5,6,7) Im(12,13,14,15)] xmm3 = simde_mm256_permute4x64_epi64(xmm3,0xd8); // Im(rho) */ - + simde__m256i xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8; seperate_real_imag_parts(&xmm2, &xmm3, rho01_256i[i], rho01_256i[i+1]); - rho_rpi = simde_mm256_adds_epi16(xmm2,xmm3); // rho = Re(rho) + Im(rho) - rho_rmi = simde_mm256_subs_epi16(xmm2,xmm3); // rho* = Re(rho) - Im(rho) + simde__m256i rho_rpi = simde_mm256_adds_epi16(xmm2, xmm3); // rho = Re(rho) + Im(rho) + simde__m256i rho_rmi = simde_mm256_subs_epi16(xmm2, xmm3); // rho* = Re(rho) - Im(rho) // Compute the different rhos - rho_rpi_1_1 = simde_mm256_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); - rho_rmi_1_1 = simde_mm256_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); - rho_rpi_3_3 = simde_mm256_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); - rho_rmi_3_3 = simde_mm256_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); - rho_rpi_5_5 = simde_mm256_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); - rho_rmi_5_5 = simde_mm256_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); - rho_rpi_7_7 = simde_mm256_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); - rho_rmi_7_7 = simde_mm256_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); + simde__m256i rho_rpi_1_1 = simde_mm256_mulhi_epi16(rho_rpi, ONE_OVER_SQRT_42); + simde__m256i rho_rmi_1_1 = simde_mm256_mulhi_epi16(rho_rmi, ONE_OVER_SQRT_42); + simde__m256i rho_rpi_3_3 = simde_mm256_mulhi_epi16(rho_rpi, THREE_OVER_SQRT_42); + simde__m256i rho_rmi_3_3 = simde_mm256_mulhi_epi16(rho_rmi, THREE_OVER_SQRT_42); + simde__m256i rho_rpi_5_5 = simde_mm256_mulhi_epi16(rho_rpi, FIVE_OVER_SQRT_42); + simde__m256i rho_rmi_5_5 = simde_mm256_mulhi_epi16(rho_rmi, FIVE_OVER_SQRT_42); + simde__m256i rho_rpi_7_7 = simde_mm256_mulhi_epi16(rho_rpi, SEVEN_OVER_SQRT_42); + simde__m256i rho_rmi_7_7 = simde_mm256_mulhi_epi16(rho_rmi, SEVEN_OVER_SQRT_42); rho_rpi_5_5 = simde_mm256_slli_epi16(rho_rpi_5_5, 1); rho_rmi_5_5 = simde_mm256_slli_epi16(rho_rmi_5_5, 1); @@ -2329,38 +1847,38 @@ void qam64_qam64_avx2(int32_t *stream0_in, xmm7 = simde_mm256_slli_epi16(xmm7, 1); xmm8 = simde_mm256_slli_epi16(xmm8, 2); - rho_rpi_1_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_1_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_1_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_1_5 = simde_mm256_subs_epi16(xmm4, xmm7); - rho_rpi_1_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_1_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_1_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_1_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_1_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_1_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_1_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_1_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, THREE_OVER_SQRT_42); - rho_rpi_3_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_3_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_3_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_3_5 = simde_mm256_subs_epi16(xmm4, xmm7); - rho_rpi_3_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_3_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_3_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_3_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_3_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_3_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_3_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_3_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, FIVE_OVER_SQRT_42); xmm4 = simde_mm256_slli_epi16(xmm4, 1); - rho_rpi_5_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_5_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_5_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_5_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_5_7 = simde_mm256_adds_epi16(xmm4, xmm8); - rho_rmi_5_7 = simde_mm256_subs_epi16(xmm4, xmm8); + simde__m256i rho_rpi_5_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_5_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_5_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_5_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_5_7 = simde_mm256_adds_epi16(xmm4, xmm8); + simde__m256i rho_rmi_5_7 = simde_mm256_subs_epi16(xmm4, xmm8); xmm4 = simde_mm256_mulhi_epi16(xmm2, SEVEN_OVER_SQRT_42); xmm4 = simde_mm256_slli_epi16(xmm4, 2); - rho_rpi_7_1 = simde_mm256_adds_epi16(xmm4, xmm5); - rho_rmi_7_1 = simde_mm256_subs_epi16(xmm4, xmm5); - rho_rpi_7_3 = simde_mm256_adds_epi16(xmm4, xmm6); - rho_rmi_7_3 = simde_mm256_subs_epi16(xmm4, xmm6); - rho_rpi_7_5 = simde_mm256_adds_epi16(xmm4, xmm7); - rho_rmi_7_5 = simde_mm256_subs_epi16(xmm4, xmm7); + simde__m256i rho_rpi_7_1 = simde_mm256_adds_epi16(xmm4, xmm5); + simde__m256i rho_rmi_7_1 = simde_mm256_subs_epi16(xmm4, xmm5); + simde__m256i rho_rpi_7_3 = simde_mm256_adds_epi16(xmm4, xmm6); + simde__m256i rho_rmi_7_3 = simde_mm256_subs_epi16(xmm4, xmm6); + simde__m256i rho_rpi_7_5 = simde_mm256_adds_epi16(xmm4, xmm7); + simde__m256i rho_rmi_7_5 = simde_mm256_subs_epi16(xmm4, xmm7); // Rearrange interfering MF output /* @@ -2380,272 +1898,272 @@ void qam64_qam64_avx2(int32_t *stream0_in, y1i = simde_mm256_unpackhi_epi64(xmm0, xmm1); y1i = simde_mm256_permute4x64_epi64(y1i,0xd8); // Im(y1) */ - + simde__m256i y1r, y1i, xmm0; seperate_real_imag_parts(&y1r, &y1i, stream1_256i_in[i], stream1_256i_in[i+1]); // Psi_r calculation from rho_rpi or rho_rmi xmm0 = simde_mm256_broadcastw_epi16(_mm_set1_epi16(0));// ZERO for abs_pi16 xmm2 = simde_mm256_subs_epi16(rho_rpi_7_7, y1r); - psi_r_p7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_5, y1r); - psi_r_p7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_3, y1r); - psi_r_p7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_1, y1r); - psi_r_p7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_1, y1r); - psi_r_p7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_3, y1r); - psi_r_p7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_5, y1r); - psi_r_p7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_7, y1r); - psi_r_p7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p7_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_7, y1r); - psi_r_p5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_5, y1r); - psi_r_p5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_3, y1r); - psi_r_p5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_1, y1r); - psi_r_p5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_1, y1r); - psi_r_p5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_3, y1r); - psi_r_p5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_5, y1r); - psi_r_p5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_7, y1r); - psi_r_p5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_7, y1r); - psi_r_p3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_5, y1r); - psi_r_p3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_3, y1r); - psi_r_p3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_1, y1r); - psi_r_p3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_1, y1r); - psi_r_p3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_3, y1r); - psi_r_p3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_5, y1r); - psi_r_p3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_7, y1r); - psi_r_p3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_7, y1r); - psi_r_p1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_5, y1r); - psi_r_p1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_3, y1r); - psi_r_p1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_1, y1r); - psi_r_p1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_1, y1r); - psi_r_p1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_3, y1r); - psi_r_p1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_5, y1r); - psi_r_p1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_7, y1r); - psi_r_p1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_p1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_7, y1r); - psi_r_m1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_5, y1r); - psi_r_m1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_3, y1r); - psi_r_m1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_1, y1r); - psi_r_m1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_1, y1r); - psi_r_m1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_3, y1r); - psi_r_m1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_5, y1r); - psi_r_m1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_7, y1r); - psi_r_m1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_7, y1r); - psi_r_m3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_5, y1r); - psi_r_m3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_3, y1r); - psi_r_m3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_1, y1r); - psi_r_m3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_1, y1r); - psi_r_m3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_3, y1r); - psi_r_m3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_5, y1r); - psi_r_m3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_7, y1r); - psi_r_m3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_7, y1r); - psi_r_m5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_5, y1r); - psi_r_m5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_3, y1r); - psi_r_m5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_1, y1r); - psi_r_m5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_1, y1r); - psi_r_m5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_3, y1r); - psi_r_m5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_5, y1r); - psi_r_m5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_7, y1r); - psi_r_m5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_7, y1r); - psi_r_m7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_5, y1r); - psi_r_m7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_3, y1r); - psi_r_m7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_1, y1r); - psi_r_m7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_1, y1r); - psi_r_m7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_3, y1r); - psi_r_m7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_5, y1r); - psi_r_m7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_7, y1r); - psi_r_m7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_r_m7_m7 = simde_mm256_abs_epi16(xmm2); - // Psi_i calculation from rho_rpi or rho_rmi + // Simde__M256i Psi_i calculation from rho_rpi or rho_rmi xmm2 = simde_mm256_subs_epi16(rho_rmi_7_7, y1i); - psi_i_p7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_7, y1i); - psi_i_p7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_7, y1i); - psi_i_p7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_7, y1i); - psi_i_p7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_7, y1i); - psi_i_p7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_7, y1i); - psi_i_p7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_7, y1i); - psi_i_p7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_7, y1i); - psi_i_p7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p7_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_5, y1i); - psi_i_p5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_5, y1i); - psi_i_p5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_5, y1i); - psi_i_p5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_5, y1i); - psi_i_p5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_5, y1i); - psi_i_p5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_5, y1i); - psi_i_p5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_5, y1i); - psi_i_p5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_5, y1i); - psi_i_p5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_3, y1i); - psi_i_p3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_3, y1i); - psi_i_p3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_3, y1i); - psi_i_p3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_3, y1i); - psi_i_p3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_3, y1i); - psi_i_p3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_3, y1i); - psi_i_p3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_3, y1i); - psi_i_p3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_3, y1i); - psi_i_p3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_7_1, y1i); - psi_i_p1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_5_1, y1i); - psi_i_p1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_3_1, y1i); - psi_i_p1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rmi_1_1, y1i); - psi_i_p1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_1_1, y1i); - psi_i_p1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_3_1, y1i); - psi_i_p1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_5_1, y1i); - psi_i_p1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rpi_7_1, y1i); - psi_i_p1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_p1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_1, y1i); - psi_i_m1_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_1, y1i); - psi_i_m1_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_1, y1i); - psi_i_m1_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_1, y1i); - psi_i_m1_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_1, y1i); - psi_i_m1_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_1, y1i); - psi_i_m1_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_1, y1i); - psi_i_m1_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_1, y1i); - psi_i_m1_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m1_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_3, y1i); - psi_i_m3_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_3, y1i); - psi_i_m3_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_3, y1i); - psi_i_m3_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_3, y1i); - psi_i_m3_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_3, y1i); - psi_i_m3_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_3, y1i); - psi_i_m3_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_3, y1i); - psi_i_m3_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_3, y1i); - psi_i_m3_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m3_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_5, y1i); - psi_i_m5_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_5, y1i); - psi_i_m5_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_5, y1i); - psi_i_m5_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_5, y1i); - psi_i_m5_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_5, y1i); - psi_i_m5_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_5, y1i); - psi_i_m5_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_5, y1i); - psi_i_m5_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_5, y1i); - psi_i_m5_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m5_m7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_7_7, y1i); - psi_i_m7_p7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p7 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_5_7, y1i); - psi_i_m7_p5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_3_7, y1i); - psi_i_m7_p3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_subs_epi16(rho_rpi_1_7, y1i); - psi_i_m7_p1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_p1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_1_7, y1i); - psi_i_m7_m1 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m1 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_3_7, y1i); - psi_i_m7_m3 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m3 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_5_7, y1i); - psi_i_m7_m5 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m5 = simde_mm256_abs_epi16(xmm2); xmm2 = simde_mm256_adds_epi16(rho_rmi_7_7, y1i); - psi_i_m7_m7 = simde_mm256_abs_epi16(xmm2); + simde__m256i psi_i_m7_m7 = simde_mm256_abs_epi16(xmm2); /* // Rearrange desired MF output @@ -2662,6 +2180,7 @@ void qam64_qam64_avx2(int32_t *stream0_in, y0r = _mm_unpacklo_epi64(xmm0,xmm1); // = [y0r(1),y0r(2),y0r(3),y0r(4)] y0i = _mm_unpackhi_epi64(xmm0,xmm1); */ + simde__m256i y0r, y0i; seperate_real_imag_parts(&y0r, &y0i, stream0_256i_in[i], stream0_256i_in[i+1]); // Rearrange desired channel magnitudes @@ -2709,46 +2228,45 @@ void qam64_qam64_avx2(int32_t *stream0_in, y0i_seven_over_sqrt_21 = simde_mm256_mulhi_epi16(y0i, SEVEN_OVER_SQRT_42); y0i_seven_over_sqrt_21 = simde_mm256_slli_epi16(y0i_seven_over_sqrt_21, 2); // Q2.14 + simde__m256i y0_p_7_1 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_7_3 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_7_5 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_7_7 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_5_1 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_5_3 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_5_5 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_5_7 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_3_1 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_3_3 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_3_5 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_3_7 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_p_1_1 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_p_1_3 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_p_1_5 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_p_1_7 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_7_1 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_7_3 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_7_5 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_7_7 = simde_mm256_adds_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_5_1 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_5_3 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_5_5 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_5_7 = simde_mm256_adds_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_3_1 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_3_3 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_3_5 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_3_7 = simde_mm256_adds_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_p_1_1 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_p_1_3 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_p_1_5 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_p_1_7 = simde_mm256_adds_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - - y0_m_1_1 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_1_3 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_1_5 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_1_7 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_3_1 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_3_3 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_3_5 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_3_7 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_5_1 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_5_3 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_5_5 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_5_7 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); - y0_m_7_1 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); - y0_m_7_3 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); - y0_m_7_5 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); - y0_m_7_7 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_1_1 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_1_3 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_1_5 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_1_7 = simde_mm256_subs_epi16(y0r_one_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_3_1 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_3_3 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_3_5 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_3_7 = simde_mm256_subs_epi16(y0r_three_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_5_1 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_5_3 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_5_5 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_5_7 = simde_mm256_subs_epi16(y0r_five_over_sqrt_21, y0i_seven_over_sqrt_21); + simde__m256i y0_m_7_1 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_one_over_sqrt_21); + simde__m256i y0_m_7_3 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_three_over_sqrt_21); + simde__m256i y0_m_7_5 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_five_over_sqrt_21); + simde__m256i y0_m_7_7 = simde_mm256_subs_epi16(y0r_seven_over_sqrt_21, y0i_seven_over_sqrt_21); // Detection of interference term ch_mag_int_with_sigma2 = simde_mm256_srai_epi16(ch_mag_int, 1); // *2 two_ch_mag_int_with_sigma2 = ch_mag_int; // *4 three_ch_mag_int_with_sigma2 = simde_mm256_adds_epi16(ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2); // *6 - + simde__m256i tmp_result, tmp_result2, tmp_result3, tmp_result4; interference_abs_64qam_epi16(psi_r_p7_p7, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p7_p7, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, SEVEN_OVER_SQRT_2_42); interference_abs_64qam_epi16(psi_r_p7_p5, ch_mag_int_with_sigma2, two_ch_mag_int_with_sigma2, three_ch_mag_int_with_sigma2, a_r_p7_p5, ONE_OVER_SQRT_2_42, THREE_OVER_SQRT_2_42, FIVE_OVER_SQRT_2_42, @@ -3303,198 +2821,198 @@ void qam64_qam64_avx2(int32_t *stream0_in, // Computing Metrics xmm0 = simde_mm256_subs_epi16(psi_a_p7_p7, a_sq_p7_p7); - xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_7); - bit_met_p7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_7); + simde__m256i bit_met_p7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p5, a_sq_p7_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_5); - bit_met_p7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p3, a_sq_p7_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_3); - bit_met_p7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_p1, a_sq_p7_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_7_1); - bit_met_p7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m1, a_sq_p7_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_1); - bit_met_p7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m3, a_sq_p7_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_3); - bit_met_p7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m5, a_sq_p7_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_5); - bit_met_p7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p7_m7, a_sq_p7_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_7_7); - bit_met_p7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_p7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p7, a_sq_p5_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_7); - bit_met_p5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p5, a_sq_p5_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_5); - bit_met_p5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p3, a_sq_p5_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_3); - bit_met_p5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_p1, a_sq_p5_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_5_1); - bit_met_p5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m1, a_sq_p5_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_1); - bit_met_p5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m3, a_sq_p5_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_3); - bit_met_p5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m5, a_sq_p5_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_5); - bit_met_p5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p5_m7, a_sq_p5_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_5_7); - bit_met_p5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_p5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p7, a_sq_p3_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_7); - bit_met_p3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p5, a_sq_p3_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_5); - bit_met_p3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p3, a_sq_p3_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_3); - bit_met_p3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_p3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_p1, a_sq_p3_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_3_1); - bit_met_p3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m1, a_sq_p3_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_1); - bit_met_p3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m3, a_sq_p3_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_3); - bit_met_p3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_p3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m5, a_sq_p3_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_5); - bit_met_p3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_p3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p3_m7, a_sq_p3_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_3_7); - bit_met_p3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_p3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p7, a_sq_p1_p7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_7); - bit_met_p1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p5, a_sq_p1_p5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_5); - bit_met_p1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p3, a_sq_p1_p3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_3); - bit_met_p1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_p1, a_sq_p1_p1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_p_1_1); - bit_met_p1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_p1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m1, a_sq_p1_m1); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_1); - bit_met_p1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_p1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m3, a_sq_p1_m3); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_3); - bit_met_p1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_p1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m5, a_sq_p1_m5); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_5); - bit_met_p1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_p1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_p1_m7, a_sq_p1_m7); xmm1 = simde_mm256_adds_epi16(xmm0, y0_m_1_7); - bit_met_p1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_p1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p7, a_sq_m1_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_7); - bit_met_m1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m1_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p5, a_sq_m1_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_5); - bit_met_m1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m1_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p3, a_sq_m1_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_3); - bit_met_m1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m1_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_p1, a_sq_m1_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_1_1); - bit_met_m1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_m1_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m1, a_sq_m1_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_1); - bit_met_m1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); + simde__m256i bit_met_m1_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_2_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m3, a_sq_m1_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_3); - bit_met_m1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m1_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m5, a_sq_m1_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_5); - bit_met_m1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m1_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m1_m7, a_sq_m1_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_1_7); - bit_met_m1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m1_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p7, a_sq_m3_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_7); - bit_met_m3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m3_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p5, a_sq_m3_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_5); - bit_met_m3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m3_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p3, a_sq_m3_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_3); - bit_met_m3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_m3_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_p1, a_sq_m3_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_3_1); - bit_met_m3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m3_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m1, a_sq_m3_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_1); - bit_met_m3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); + simde__m256i bit_met_m3_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_10_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m3, a_sq_m3_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_3); - bit_met_m3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); + simde__m256i bit_met_m3_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_18_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m5, a_sq_m3_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_5); - bit_met_m3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m3_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m3_m7, a_sq_m3_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_3_7); - bit_met_m3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m3_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p7, a_sq_m5_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_7); - bit_met_m5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m5_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p5, a_sq_m5_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_5); - bit_met_m5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m5_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p3, a_sq_m5_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_3); - bit_met_m5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m5_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_p1, a_sq_m5_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_5_1); - bit_met_m5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m5_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m1, a_sq_m5_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_1); - bit_met_m5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); + simde__m256i bit_met_m5_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_26_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m3, a_sq_m5_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_3); - bit_met_m5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); + simde__m256i bit_met_m5_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_34_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m5, a_sq_m5_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_5); - bit_met_m5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m5_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m5_m7, a_sq_m5_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_5_7); - bit_met_m5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m5_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p7, a_sq_m7_p7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_7); - bit_met_m7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_m7_p7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p5, a_sq_m7_p5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_5); - bit_met_m7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m7_p5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p3, a_sq_m7_p3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_3); - bit_met_m7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m7_p3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_p1, a_sq_m7_p1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_m_7_1); - bit_met_m7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m7_p1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m1, a_sq_m7_m1); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_1); - bit_met_m7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); + simde__m256i bit_met_m7_m1 = simde_mm256_subs_epi16(xmm1, ch_mag_50_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m3, a_sq_m7_m3); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_3); - bit_met_m7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); + simde__m256i bit_met_m7_m3 = simde_mm256_subs_epi16(xmm1, ch_mag_58_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m5, a_sq_m7_m5); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_5); - bit_met_m7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); + simde__m256i bit_met_m7_m5 = simde_mm256_subs_epi16(xmm1, ch_mag_74_over_42_with_sigma2); xmm0 = simde_mm256_subs_epi16(psi_a_m7_m7, a_sq_m7_m7); xmm1 = simde_mm256_subs_epi16(xmm0, y0_p_7_7); - bit_met_m7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); + simde__m256i bit_met_m7_m7 = simde_mm256_subs_epi16(xmm1, ch_mag_98_over_42_with_sigma2); // Detection for 1st bit (LTE mapping) // bit = 1 @@ -3504,7 +3022,7 @@ void qam64_qam64_avx2(int32_t *stream0_in, xmm3 = simde_mm256_max_epi16(bit_met_m7_m5, bit_met_m7_m7); xmm4 = simde_mm256_max_epi16(xmm0, xmm1); xmm5 = simde_mm256_max_epi16(xmm2, xmm3); - logmax_den_re0 = simde_mm256_max_epi16(xmm4, xmm5); + simde__m256i logmax_den_re0 = simde_mm256_max_epi16(xmm4, xmm5); xmm0 = simde_mm256_max_epi16(bit_met_m5_p7, bit_met_m5_p5); xmm1 = simde_mm256_max_epi16(bit_met_m5_p3, bit_met_m5_p1); xmm2 = simde_mm256_max_epi16(bit_met_m5_m1, bit_met_m5_m3); @@ -3537,7 +3055,7 @@ void qam64_qam64_avx2(int32_t *stream0_in, xmm3 = simde_mm256_max_epi16(bit_met_p7_m5, bit_met_p7_m7); xmm4 = simde_mm256_max_epi16(xmm0, xmm1); xmm5 = simde_mm256_max_epi16(xmm2, xmm3); - logmax_num_re0 = simde_mm256_max_epi16(xmm4, xmm5); + simde__m256i logmax_num_re0 = simde_mm256_max_epi16(xmm4, xmm5); xmm0 = simde_mm256_max_epi16(bit_met_p5_p7, bit_met_p5_p5); xmm1 = simde_mm256_max_epi16(bit_met_p5_p3, bit_met_p5_p1); xmm2 = simde_mm256_max_epi16(bit_met_p5_m1, bit_met_p5_m3); @@ -3699,7 +3217,7 @@ void qam64_qam64_avx2(int32_t *stream0_in, logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm5); - y2r = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m256i y2r = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); // Detection for 4th bit (LTE mapping) xmm0 = simde_mm256_max_epi16(bit_met_p7_p7, bit_met_p5_p7); @@ -3901,7 +3419,7 @@ void qam64_qam64_avx2(int32_t *stream0_in, logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm4); logmax_num_re0 = simde_mm256_max_epi16(logmax_num_re0, xmm5); - y2i = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); + simde__m256i y2i = simde_mm256_subs_epi16(logmax_num_re0, logmax_den_re0); // map to output stream, difficult to do in SIMD since we have 6 16bit LLRs // RE 1