Richard Henderson
caf3eacc8f
tcg: Introduce TCG_TARGET_HAS_tst
...
Define as 0 for all tcg backends.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 23:43:48 +00:00
Richard Henderson
b701f195d3
tcg: Remove TCG_TARGET_HAS_neg_{i32,i64}
...
The movcond opcode is now mandatory for backends to implement.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20231026041404.1229328-7-richard.henderson@linaro.org >
2023-11-06 08:27:21 -08:00
Richard Henderson
0fbee2b764
tcg/loongarch64: Implement neg opcodes
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20231026041404.1229328-6-richard.henderson@linaro.org >
2023-11-06 08:27:21 -08:00
Richard Henderson
3871be753f
tcg: Remove TCG_TARGET_HAS_movcond_{i32,i64}
...
The movcond opcode is now mandatory for backends to implement.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20231026041404.1229328-4-richard.henderson@linaro.org >
2023-11-06 08:27:21 -08:00
Richard Henderson
f2a553481e
tcg/loongarch64: Use cpuinfo.h
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiajie Chen <c@jia.je >
Message-Id: <20230916220151.526140-5-richard.henderson@linaro.org >
2023-11-06 08:27:21 -08:00
Jiajie Chen
58f8961285
tcg/loongarch64: Implement 128-bit load & store
...
If LSX is available, use LSX instructions to implement 128-bit load &
store when MO_128 is required, otherwise use two 64-bit loads & stores.
Signed-off-by: Jiajie Chen <c@jia.je >
Message-Id: <20230908022302.180442-17-c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-16 14:57:10 +00:00
Jiajie Chen
561b001aef
tcg/loongarch64: Lower rotli_vec to vrotri
...
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-16-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
0765cce114
tcg/loongarch64: Lower rotv_vec ops to LSX
...
Lower the following ops:
- rotrv_vec
- rotlv_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-15-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
2931527b4d
tcg/loongarch64: Lower vector shift integer ops
...
Lower the following ops:
- shli_vec
- shrv_vec
- sarv_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-14-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
c8b859b45e
tcg/loongarch64: Lower bitsel_vec to vbitsel
...
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-13-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
94304d7b3d
tcg/loongarch64: Lower vector shift vector ops
...
Lower the following ops:
- shlv_vec
- shrv_vec
- sarv_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-12-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
5256ea1176
tcg/loongarch64: Lower vector saturated ops
...
Lower the following ops:
- ssadd_vec
- usadd_vec
- sssub_vec
- ussub_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-11-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
b2f84adc00
tcg/loongarch64: Lower vector min max ops
...
Lower the following ops:
- smin_vec
- smax_vec
- umin_vec
- umax_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-10-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
76d20c205d
tcg/loongarch64: Lower mul_vec to vmul
...
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-9-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
7d577c3ecd
tcg/loongarch64: Lower neg_vec to vneg
...
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-8-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
24c42fde52
tcg/loongarch64: Lower vector bitwise operations
...
Lower the following ops:
- and_vec
- andc_vec
- or_vec
- orc_vec
- xor_vec
- nor_vec
- not_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-7-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
16288ded94
tcg/loongarch64: Lower basic tcg vec ops to LSX
...
LSX support on host cpu is detected via hwcap.
Lower the following ops to LSX:
- dup_vec
- dupi_vec
- dupm_vec
- ld_vec
- st_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-3-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:50 -07:00
Richard Henderson
3635502dd0
tcg: Introduce negsetcond opcodes
...
Introduce a new opcode for negative setcond.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-24 11:22:42 -07:00
Richard Henderson
13d885b0ad
tcg: Unify TCG_TARGET_HAS_extr[lh]_i64_i32
...
Replace the separate defines with TCG_TARGET_HAS_extr_i64_i32,
so that the two parts of backend-specific type changing cannot
be out of sync.
Reported-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: <20230822175127.1173698-1-richard.henderson@linaro.org >
2023-08-24 11:22:42 -07:00
Richard Henderson
d46259c037
tcg: Split out tcg-target-reg-bits.h
...
Often, the only thing we need to know about the TCG host
is the register size.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-06-05 12:04:28 -07:00
Richard Henderson
12fde9bcdb
tcg: Add INDEX_op_qemu_{ld,st}_i128
...
Add opcodes for backend support for 128-bit memory operations.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-05-16 16:30:25 -07:00
Richard Henderson
7b88010719
tcg: Introduce tcg_target_has_memory_bswap
...
Replace the unparameterized TCG_TARGET_HAS_MEMORY_BSWAP macro
with a function with a memop argument.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-05-16 15:21:39 -07:00
Richard Henderson
5427a9a760
tcg: Add TCG_TARGET_CALL_{RET,ARG}_I128
...
Fill in the parameters for the host ABI for Int128 for
those backends which require no extra modification.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-02-04 06:19:42 -10:00
Richard Henderson
709bcd7da3
tcg/loongarch64: Reorg goto_tb implementation
...
The old implementation replaces two insns, swapping between
b <dest>
nop
and
pcaddu18i tmp, <dest>
jirl zero, tmp, <dest> & 0xffff
There is a race condition in which a thread could be stopped at
the jirl, i.e. with the top of the address loaded, and when
restarted we have re-linked to a different TB, so that the top
half no longer matches the bottom half.
Note that while we never directly re-link to a different TB, we
can link, unlink, and link again all while the stopped thread
remains stopped.
The new implementation replaces only one insn, swapping between
b <dest>
and
pcadd tmp, <jmp_addr>
falling through to load the address from tmp, and branch.
Reviewed-by: WANG Xuerui <git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-23 16:00:13 -10:00
Richard Henderson
7bc76a4c2e
tcg/loongarch64: Implement movcond
...
Reviewed-by: WANG Xuerui <git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-23 16:00:13 -10:00
Richard Henderson
2fd2e78d1b
tcg: Remove TCG_TARGET_HAS_direct_jump
...
We now have the option to generate direct or indirect
goto_tb depending on the dynamic displacement, thus
the define is no longer necessary or completely accurate.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-17 10:25:49 -10:00
Richard Henderson
0012e3516e
tcg: Move tb_target_set_jmp_target declaration to tcg.h
...
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-17 10:22:35 -10:00
Richard Henderson
0fe1c98da9
tcg: Change tb_target_set_jmp_target arguments
...
Replace 'tc_ptr' and 'addr' with 'tb' and 'n'.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-17 10:21:54 -10:00
Richard Henderson
eb8b0224fc
tcg: Replace TCG_TARGET_EXTEND_ARGS with TCG_TARGET_CALL_ARG_I32
...
For 64-bit hosts that had TCG_TARGET_EXTEND_ARGS, set
TCG_TARGET_CALL_ARG_I32 to TCG_CALL_ARG_EXTEND.
Otherwise, use TCG_CALL_ARG_NORMAL.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-05 11:41:29 -08:00
Richard Henderson
c8eef96046
tcg: Replace TCG_TARGET_CALL_ALIGN_ARGS with TCG_TARGET_CALL_ARG_I64
...
For 32-bit hosts when TCG_TARGET_CALL_ALIGN_ARGS was set, use
TCG_CALL_ARG_EVEN. For 64-bit hosts, TCG_TARGET_CALL_ALIGN_ARGS
was silently ignored, so always use TCG_CALL_ARG_NORMAL.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-05 11:41:29 -08:00
Qi Hu
f072a1ae7f
tcg/loongarch64: Add direct jump support
...
Similar to the ARM64, LoongArch has PC-relative instructions such as
PCADDU18I. These instructions can be used to support direct jump for
LoongArch. Additionally, if instruction "B offset" can cover the target
address(target is within ±128MB range), a single "B offset" plus a nop
will be used by "tb_target_set_jump_target".
Signed-off-by: Qi Hu <huqi@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: WANG Xuerui <git@xen0n.name >
Message-Id: <20221015092754.91971-1-huqi@loongson.cn >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2022-10-25 22:01:14 +10:00
WANG Xuerui
6f78c7b082
tcg/loongarch64: Support raising sigbus for user-only
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220106134238.3936163-1-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2022-02-09 08:55:02 +11:00
WANG Xuerui
ff13c19689
tcg/loongarch64: Implement mul/mulsh/muluh/div/divu/rem/remu ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-19-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
a164010b05
tcg/loongarch64: Implement shl/shr/sar/rotl/rotr ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-17-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
fde6930160
tcg/loongarch64: Implement clz/ctz ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20211221054105.178795-16-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
4ab2aff0db
tcg/loongarch64: Implement bswap{16,32,64} ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-15-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
7257809f62
tcg/loongarch64: Implement deposit/extract ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-14-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
97b2fafbf7
tcg/loongarch64: Implement not/and/or/xor/nor/andc/orc ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-13-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
6be08fcfc3
tcg/loongarch64: Implement sign-/zero-extension ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-12-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
6cb14e4de2
tcg/loongarch64: Add the tcg-target.h file
...
Support for all optional TCG ops are initially marked disabled; the bits
are to be set in individual commits later.
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20211221054105.178795-4-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00