tcg: Add tcg_gen_gvec_dup_imm

Add a version of tcg_gen_dup_* that takes both immediate and
a vector element size operand. This will replace the set of
tcg_gen_gvec_dup{8,16,32,64}i functions that encode the element
size within the function name.

Backports commit 44c94677febd15488f9190b11eaa4a08e8ac696b from qemu
This commit is contained in:
Richard Henderson 2020-05-07 09:54:37 -04:00 committed by Lioncash
parent d350125eab
commit 07f622e57d
18 changed files with 25 additions and 0 deletions

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_aarch64
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_aarch64
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_aarch64
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_aarch64
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_aarch64
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_aarch64
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_aarch64

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_aarch64eb
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_aarch64eb
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_aarch64eb
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_aarch64eb
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_aarch64eb
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_aarch64eb
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_aarch64eb

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_arm
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_arm
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_arm
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_arm
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_arm
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_arm
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_arm

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_armeb
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_armeb
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_armeb
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_armeb
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_armeb
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_armeb
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_armeb

View file

@ -2901,6 +2901,7 @@ symbols = (
'tcg_gen_gvec_dup64i',
'tcg_gen_gvec_dup_i32',
'tcg_gen_gvec_dup_i64',
'tcg_gen_gvec_dup_imm',
'tcg_gen_gvec_dup_mem',
'tcg_gen_gvec_eqv',
'tcg_gen_gvec_mov',

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_m68k
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_m68k
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_m68k
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_m68k
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_m68k
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_m68k
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_m68k

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_mips
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_mips
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_mips
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_mips
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_mips
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_mips
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_mips

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_mips64
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_mips64
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_mips64
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_mips64
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_mips64
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_mips64
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_mips64

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_mips64el
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_mips64el
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_mips64el
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_mips64el
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_mips64el
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_mips64el
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_mips64el

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_mipsel
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_mipsel
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_mipsel
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_mipsel
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_mipsel
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_mipsel
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_mipsel

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_powerpc
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_powerpc
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_powerpc
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_powerpc
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_powerpc
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_powerpc
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_powerpc

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_riscv32
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_riscv32
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_riscv32
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_riscv32
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_riscv32
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_riscv32
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_riscv32

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_riscv64
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_riscv64
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_riscv64
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_riscv64
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_riscv64
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_riscv64
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_riscv64

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_sparc
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_sparc
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_sparc
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_sparc
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_sparc
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_sparc
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_sparc

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_sparc64
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_sparc64
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_sparc64
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_sparc64
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_sparc64
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_sparc64
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_sparc64

View file

@ -1570,6 +1570,13 @@ void tcg_gen_gvec_dup8i(TCGContext *s, uint32_t dofs, uint32_t oprsz,
do_dup(s, MO_8, dofs, oprsz, maxsz, NULL, NULL, x);
}
void tcg_gen_gvec_dup_imm(TCGContext *s, unsigned vece, uint32_t dofs, uint32_t oprsz,
uint32_t maxsz, uint64_t x)
{
check_size_align(oprsz, maxsz, dofs);
do_dup(s, vece, dofs, oprsz, maxsz, NULL, NULL, x);
}
void tcg_gen_gvec_not(TCGContext *s, unsigned vece, uint32_t dofs, uint32_t aofs,
uint32_t oprsz, uint32_t maxsz)
{

View file

@ -313,6 +313,8 @@ void tcg_gen_gvec_ors(TCGContext *s, unsigned vece, uint32_t dofs, uint32_t aofs
void tcg_gen_gvec_dup_mem(TCGContext *, unsigned vece, uint32_t dofs, uint32_t aofs,
uint32_t s, uint32_t m);
void tcg_gen_gvec_dup_imm(TCGContext *, unsigned vece, uint32_t dofs, uint32_t s,
uint32_t m, uint64_t imm);
void tcg_gen_gvec_dup_i32(TCGContext *, unsigned vece, uint32_t dofs, uint32_t s,
uint32_t m, TCGv_i32);
void tcg_gen_gvec_dup_i64(TCGContext *, unsigned vece, uint32_t dofs, uint32_t s,

View file

@ -2895,6 +2895,7 @@
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_x86_64
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_x86_64
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_x86_64
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_x86_64
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_x86_64
#define tcg_gen_gvec_eqv tcg_gen_gvec_eqv_x86_64
#define tcg_gen_gvec_mov tcg_gen_gvec_mov_x86_64