target/arm/vec_helper: Add gvec fp indexed multiply-and-add operations

Add gvec helpers for doing Neon-style indexed non-fused fp
multiply-and-accumulate operations.

Backports commit c50d8d144098a8261233ca31b47e3bc487e112fe
This commit is contained in:
Peter Maydell 2021-03-01 17:50:32 -05:00 committed by Lioncash
parent 3cc3099e36
commit 8c6affbca4
18 changed files with 97 additions and 5 deletions

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_aarch64 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_aarch64
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_aarch64 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_aarch64
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_aarch64 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_aarch64
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_aarch64
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_aarch64
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_aarch64
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_aarch64
#define helper_power_down helper_power_down_aarch64 #define helper_power_down helper_power_down_aarch64
#define helper_pre_hvc helper_pre_hvc_aarch64 #define helper_pre_hvc helper_pre_hvc_aarch64
#define helper_pre_smc helper_pre_smc_aarch64 #define helper_pre_smc helper_pre_smc_aarch64

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_aarch64eb #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_aarch64eb
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_aarch64eb #define helper_gvec_vrintx_h helper_gvec_vrintx_h_aarch64eb
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_aarch64eb #define helper_gvec_vrintx_s helper_gvec_vrintx_s_aarch64eb
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_aarch64eb
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_aarch64eb
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_aarch64eb
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_aarch64eb
#define helper_power_down helper_power_down_aarch64eb #define helper_power_down helper_power_down_aarch64eb
#define helper_pre_hvc helper_pre_hvc_aarch64eb #define helper_pre_hvc helper_pre_hvc_aarch64eb
#define helper_pre_smc helper_pre_smc_aarch64eb #define helper_pre_smc helper_pre_smc_aarch64eb

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_arm #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_arm
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_arm #define helper_gvec_vrintx_h helper_gvec_vrintx_h_arm
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_arm #define helper_gvec_vrintx_s helper_gvec_vrintx_s_arm
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_arm
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_arm
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_arm
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_arm
#define helper_power_down helper_power_down_arm #define helper_power_down helper_power_down_arm
#define helper_pre_hvc helper_pre_hvc_arm #define helper_pre_hvc helper_pre_hvc_arm
#define helper_pre_smc helper_pre_smc_arm #define helper_pre_smc helper_pre_smc_arm

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_armeb #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_armeb
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_armeb #define helper_gvec_vrintx_h helper_gvec_vrintx_h_armeb
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_armeb #define helper_gvec_vrintx_s helper_gvec_vrintx_s_armeb
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_armeb
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_armeb
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_armeb
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_armeb
#define helper_power_down helper_power_down_armeb #define helper_power_down helper_power_down_armeb
#define helper_pre_hvc helper_pre_hvc_armeb #define helper_pre_hvc helper_pre_hvc_armeb
#define helper_pre_smc helper_pre_smc_armeb #define helper_pre_smc helper_pre_smc_armeb

View file

@ -1858,6 +1858,10 @@ symbols = (
'helper_gvec_vrint_rm_s', 'helper_gvec_vrint_rm_s',
'helper_gvec_vrintx_h', 'helper_gvec_vrintx_h',
'helper_gvec_vrintx_s', 'helper_gvec_vrintx_s',
'helper_gvec_fmla_nf_idx_h',
'helper_gvec_fmla_nf_idx_s',
'helper_gvec_fmls_nf_idx_h',
'helper_gvec_fmls_nf_idx_s',
'helper_power_down', 'helper_power_down',
'helper_pre_hvc', 'helper_pre_hvc',
'helper_pre_smc', 'helper_pre_smc',

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_m68k #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_m68k
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_m68k #define helper_gvec_vrintx_h helper_gvec_vrintx_h_m68k
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_m68k #define helper_gvec_vrintx_s helper_gvec_vrintx_s_m68k
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_m68k
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_m68k
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_m68k
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_m68k
#define helper_power_down helper_power_down_m68k #define helper_power_down helper_power_down_m68k
#define helper_pre_hvc helper_pre_hvc_m68k #define helper_pre_hvc helper_pre_hvc_m68k
#define helper_pre_smc helper_pre_smc_m68k #define helper_pre_smc helper_pre_smc_m68k

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips #define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips #define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_mips
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_mips
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_mips
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_mips
#define helper_power_down helper_power_down_mips #define helper_power_down helper_power_down_mips
#define helper_pre_hvc helper_pre_hvc_mips #define helper_pre_hvc helper_pre_hvc_mips
#define helper_pre_smc helper_pre_smc_mips #define helper_pre_smc helper_pre_smc_mips

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips64 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips64
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips64 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips64
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips64 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips64
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_mips64
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_mips64
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_mips64
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_mips64
#define helper_power_down helper_power_down_mips64 #define helper_power_down helper_power_down_mips64
#define helper_pre_hvc helper_pre_hvc_mips64 #define helper_pre_hvc helper_pre_hvc_mips64
#define helper_pre_smc helper_pre_smc_mips64 #define helper_pre_smc helper_pre_smc_mips64

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips64el #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mips64el
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips64el #define helper_gvec_vrintx_h helper_gvec_vrintx_h_mips64el
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips64el #define helper_gvec_vrintx_s helper_gvec_vrintx_s_mips64el
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_mips64el
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_mips64el
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_mips64el
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_mips64el
#define helper_power_down helper_power_down_mips64el #define helper_power_down helper_power_down_mips64el
#define helper_pre_hvc helper_pre_hvc_mips64el #define helper_pre_hvc helper_pre_hvc_mips64el
#define helper_pre_smc helper_pre_smc_mips64el #define helper_pre_smc helper_pre_smc_mips64el

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mipsel #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_mipsel
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_mipsel #define helper_gvec_vrintx_h helper_gvec_vrintx_h_mipsel
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_mipsel #define helper_gvec_vrintx_s helper_gvec_vrintx_s_mipsel
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_mipsel
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_mipsel
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_mipsel
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_mipsel
#define helper_power_down helper_power_down_mipsel #define helper_power_down helper_power_down_mipsel
#define helper_pre_hvc helper_pre_hvc_mipsel #define helper_pre_hvc helper_pre_hvc_mipsel
#define helper_pre_smc helper_pre_smc_mipsel #define helper_pre_smc helper_pre_smc_mipsel

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_powerpc #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_powerpc
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_powerpc #define helper_gvec_vrintx_h helper_gvec_vrintx_h_powerpc
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_powerpc #define helper_gvec_vrintx_s helper_gvec_vrintx_s_powerpc
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_powerpc
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_powerpc
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_powerpc
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_powerpc
#define helper_power_down helper_power_down_powerpc #define helper_power_down helper_power_down_powerpc
#define helper_pre_hvc helper_pre_hvc_powerpc #define helper_pre_hvc helper_pre_hvc_powerpc
#define helper_pre_smc helper_pre_smc_powerpc #define helper_pre_smc helper_pre_smc_powerpc

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_riscv32 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_riscv32
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_riscv32 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_riscv32
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_riscv32 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_riscv32
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_riscv32
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_riscv32
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_riscv32
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_riscv32
#define helper_power_down helper_power_down_riscv32 #define helper_power_down helper_power_down_riscv32
#define helper_pre_hvc helper_pre_hvc_riscv32 #define helper_pre_hvc helper_pre_hvc_riscv32
#define helper_pre_smc helper_pre_smc_riscv32 #define helper_pre_smc helper_pre_smc_riscv32

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_riscv64 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_riscv64
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_riscv64 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_riscv64
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_riscv64 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_riscv64
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_riscv64
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_riscv64
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_riscv64
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_riscv64
#define helper_power_down helper_power_down_riscv64 #define helper_power_down helper_power_down_riscv64
#define helper_pre_hvc helper_pre_hvc_riscv64 #define helper_pre_hvc helper_pre_hvc_riscv64
#define helper_pre_smc helper_pre_smc_riscv64 #define helper_pre_smc helper_pre_smc_riscv64

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_sparc #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_sparc
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_sparc #define helper_gvec_vrintx_h helper_gvec_vrintx_h_sparc
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_sparc #define helper_gvec_vrintx_s helper_gvec_vrintx_s_sparc
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_sparc
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_sparc
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_sparc
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_sparc
#define helper_power_down helper_power_down_sparc #define helper_power_down helper_power_down_sparc
#define helper_pre_hvc helper_pre_hvc_sparc #define helper_pre_hvc helper_pre_hvc_sparc
#define helper_pre_smc helper_pre_smc_sparc #define helper_pre_smc helper_pre_smc_sparc

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_sparc64 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_sparc64
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_sparc64 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_sparc64
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_sparc64 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_sparc64
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_sparc64
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_sparc64
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_sparc64
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_sparc64
#define helper_power_down helper_power_down_sparc64 #define helper_power_down helper_power_down_sparc64
#define helper_pre_hvc helper_pre_hvc_sparc64 #define helper_pre_hvc helper_pre_hvc_sparc64
#define helper_pre_smc helper_pre_smc_sparc64 #define helper_pre_smc helper_pre_smc_sparc64

View file

@ -738,6 +738,16 @@ DEF_HELPER_FLAGS_5(gvec_fmul_idx_s, TCG_CALL_NO_RWG,
DEF_HELPER_FLAGS_5(gvec_fmul_idx_d, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_5(gvec_fmul_idx_d, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, i32) void, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_5(gvec_fmla_nf_idx_h, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_5(gvec_fmla_nf_idx_s, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_5(gvec_fmls_nf_idx_h, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_5(gvec_fmls_nf_idx_s, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_6(gvec_fmla_idx_h, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(gvec_fmla_idx_h, TCG_CALL_NO_RWG,
void, ptr, ptr, ptr, ptr, ptr, i32) void, ptr, ptr, ptr, ptr, ptr, i32)
DEF_HELPER_FLAGS_6(gvec_fmla_idx_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(gvec_fmla_idx_s, TCG_CALL_NO_RWG,

View file

@ -1086,7 +1086,7 @@ DO_MLA_IDX(gvec_mls_idx_d, uint64_t, -, )
#undef DO_MLA_IDX #undef DO_MLA_IDX
#define DO_FMUL_IDX(NAME, TYPE, H) \ #define DO_FMUL_IDX(NAME, ADD, TYPE, H) \
void HELPER(NAME)(void *vd, void *vn, void *vm, void *stat, uint32_t desc) \ void HELPER(NAME)(void *vd, void *vn, void *vm, void *stat, uint32_t desc) \
{ \ { \
intptr_t i, j, oprsz = simd_oprsz(desc); \ intptr_t i, j, oprsz = simd_oprsz(desc); \
@ -1096,15 +1096,33 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, void *stat, uint32_t desc) \
for (i = 0; i < oprsz / sizeof(TYPE); i += segment) { \ for (i = 0; i < oprsz / sizeof(TYPE); i += segment) { \
TYPE mm = m[H(i + idx)]; \ TYPE mm = m[H(i + idx)]; \
for (j = 0; j < segment; j++) { \ for (j = 0; j < segment; j++) { \
d[i + j] = TYPE##_mul(n[i + j], mm, stat); \ d[i + j] = TYPE##_##ADD(d[i + j], \
TYPE##_mul(n[i + j], mm, stat), stat); \
} \ } \
} \ } \
clear_tail(d, oprsz, simd_maxsz(desc)); \ clear_tail(d, oprsz, simd_maxsz(desc)); \
} }
DO_FMUL_IDX(gvec_fmul_idx_h, float16, H2) #define float16_nop(N, M, S) (M)
DO_FMUL_IDX(gvec_fmul_idx_s, float32, H4) #define float32_nop(N, M, S) (M)
DO_FMUL_IDX(gvec_fmul_idx_d, float64, ) #define float64_nop(N, M, S) (M)
DO_FMUL_IDX(gvec_fmul_idx_h, nop, float16, H2)
DO_FMUL_IDX(gvec_fmul_idx_s, nop, float32, H4)
DO_FMUL_IDX(gvec_fmul_idx_d, nop, float64, )
/*
* Non-fused multiply-accumulate operations, for Neon. NB that unlike
* the fused ops below they assume accumulate both from and into Vd.
*/
DO_FMUL_IDX(gvec_fmla_nf_idx_h, add, float16, H2)
DO_FMUL_IDX(gvec_fmla_nf_idx_s, add, float32, H4)
DO_FMUL_IDX(gvec_fmls_nf_idx_h, sub, float16, H2)
DO_FMUL_IDX(gvec_fmls_nf_idx_s, sub, float32, H4)
#undef float16_nop
#undef float32_nop
#undef float64_nop
#undef DO_FMUL_IDX #undef DO_FMUL_IDX

View file

@ -1852,6 +1852,10 @@
#define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_x86_64 #define helper_gvec_vrint_rm_s helper_gvec_vrint_rm_s_x86_64
#define helper_gvec_vrintx_h helper_gvec_vrintx_h_x86_64 #define helper_gvec_vrintx_h helper_gvec_vrintx_h_x86_64
#define helper_gvec_vrintx_s helper_gvec_vrintx_s_x86_64 #define helper_gvec_vrintx_s helper_gvec_vrintx_s_x86_64
#define helper_gvec_fmla_nf_idx_h helper_gvec_fmla_nf_idx_h_x86_64
#define helper_gvec_fmla_nf_idx_s helper_gvec_fmla_nf_idx_s_x86_64
#define helper_gvec_fmls_nf_idx_h helper_gvec_fmls_nf_idx_h_x86_64
#define helper_gvec_fmls_nf_idx_s helper_gvec_fmls_nf_idx_s_x86_64
#define helper_power_down helper_power_down_x86_64 #define helper_power_down helper_power_down_x86_64
#define helper_pre_hvc helper_pre_hvc_x86_64 #define helper_pre_hvc helper_pre_hvc_x86_64
#define helper_pre_smc helper_pre_smc_x86_64 #define helper_pre_smc helper_pre_smc_x86_64