Richard Henderson
2b2ae0a42e
tcg/loongarch64: Use C_N2_I1 for INDEX_op_qemu_ld_a*_i128
...
Use new registers for the output, so that we never overlap
the input address, which could happen for user-only.
This avoids a "tmp = addr + 0" in that case.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiajie Chen <c@jia.je >
Message-Id: <20230916220151.526140-3-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
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
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
e9d7c8cf95
tcg/loongarch64: Lower add/sub_vec to vadd/vsub
...
Lower the following ops:
- add_vec
- sub_vec
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-6-c@jia.je >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 05:26:51 -07:00
Jiajie Chen
d8b6fa593d
tcg/loongarch64: Lower cmp_vec to vseq/vsle/vslt
...
Signed-off-by: Jiajie Chen <c@jia.je >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230908022302.180442-5-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
e3205306d8
tcg/loongarch64: Simplify constraints on qemu_ld/st
...
The softmmu tlb uses TCG_REG_TMP[0-2], not any of the normally available
registers. Now that we handle overlap betwen inputs and helper arguments,
we can allow any allocatable reg.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-05-11 09:53:41 +01: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
0e95be93c1
tcg/loongarch64: Introduce tcg_out_addi
...
Adjust the constraints to allow any int32_t for immediate
addition. Split immediate adds into addu16i + addi, which
covers quite a lot of the immediate space. For the hole in
the middle, load the constant into TMP0 instead.
Reviewed-by: WANG Xuerui <git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-01-23 16:00:13 -10:00
WANG Xuerui
d3a1727c19
tcg/loongarch64: Add softmmu load/store helpers, implement qemu_ld/qemu_st ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20211221054105.178795-24-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
251ebcd812
tcg/loongarch64: Implement simple load/store 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-23-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
9ee775cf29
tcg/loongarch64: Implement setcond ops
...
Signed-off-by: WANG Xuerui <git@xen0n.name >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20211221054105.178795-21-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00
WANG Xuerui
94505c02f4
tcg/loongarch64: Implement br/brcond 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-20-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08: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
39f54ce5c4
tcg/loongarch64: Implement add/sub ops
...
The neg_i{32,64} ops is fully expressible with sub, so omitted for
simplicity.
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-18-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
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
e3b15766b9
tcg/loongarch64: Implement goto_ptr
...
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-11-git@xen0n.name >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-21 13:17:06 -08:00