mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 18:44:58 -06:00
target/sparc: Implement XMULX
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
680af1b4a5
commit
029b0283df
4 changed files with 19 additions and 0 deletions
|
@ -135,6 +135,8 @@ DEF_HELPER_FLAGS_2(fcmpeq8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
DEF_HELPER_FLAGS_2(fcmpne8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
DEF_HELPER_FLAGS_2(fcmpne8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
DEF_HELPER_FLAGS_2(fcmpule8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
DEF_HELPER_FLAGS_2(fcmpule8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
DEF_HELPER_FLAGS_2(fcmpugt8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
DEF_HELPER_FLAGS_2(fcmpugt8, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
|
DEF_HELPER_FLAGS_2(xmulx, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
|
DEF_HELPER_FLAGS_2(xmulxhi, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||||
#endif
|
#endif
|
||||||
#undef VIS_HELPER
|
#undef VIS_HELPER
|
||||||
#undef VIS_CMPHELPER
|
#undef VIS_CMPHELPER
|
||||||
|
|
|
@ -391,6 +391,8 @@ FCMPEq 10 000 cc:2 110101 ..... 0 0101 0111 ..... \
|
||||||
ADDXCcc 10 ..... 110110 ..... 0 0001 0011 ..... @r_r_r
|
ADDXCcc 10 ..... 110110 ..... 0 0001 0011 ..... @r_r_r
|
||||||
UMULXHI 10 ..... 110110 ..... 0 0001 0110 ..... @r_r_r
|
UMULXHI 10 ..... 110110 ..... 0 0001 0110 ..... @r_r_r
|
||||||
LZCNT 10 ..... 110110 00000 0 0001 0111 ..... @r_r2
|
LZCNT 10 ..... 110110 00000 0 0001 0111 ..... @r_r2
|
||||||
|
XMULX 10 ..... 110110 ..... 1 0001 0101 ..... @r_r_r
|
||||||
|
XMULXHI 10 ..... 110110 ..... 1 0001 0110 ..... @r_r_r
|
||||||
|
|
||||||
ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r
|
ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r
|
||||||
ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r
|
ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r
|
||||||
|
|
|
@ -90,6 +90,8 @@
|
||||||
# define gen_helper_fxtoq ({ qemu_build_not_reached(); NULL; })
|
# define gen_helper_fxtoq ({ qemu_build_not_reached(); NULL; })
|
||||||
# define gen_helper_fxtos ({ qemu_build_not_reached(); NULL; })
|
# define gen_helper_fxtos ({ qemu_build_not_reached(); NULL; })
|
||||||
# define gen_helper_pdist ({ qemu_build_not_reached(); NULL; })
|
# define gen_helper_pdist ({ qemu_build_not_reached(); NULL; })
|
||||||
|
# define gen_helper_xmulx ({ qemu_build_not_reached(); NULL; })
|
||||||
|
# define gen_helper_xmulxhi ({ qemu_build_not_reached(); NULL; })
|
||||||
# define MAXTL_MASK 0
|
# define MAXTL_MASK 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5088,6 +5090,8 @@ TRANS(FPCMPULE8, VIS3B, do_rdd, a, gen_helper_fcmpule8)
|
||||||
TRANS(FPCMPUGT8, VIS3B, do_rdd, a, gen_helper_fcmpugt8)
|
TRANS(FPCMPUGT8, VIS3B, do_rdd, a, gen_helper_fcmpugt8)
|
||||||
|
|
||||||
TRANS(PDISTN, VIS3, do_rdd, a, gen_op_pdistn)
|
TRANS(PDISTN, VIS3, do_rdd, a, gen_op_pdistn)
|
||||||
|
TRANS(XMULX, VIS3, do_rrr, a, gen_helper_xmulx)
|
||||||
|
TRANS(XMULXHI, VIS3, do_rrr, a, gen_helper_xmulxhi)
|
||||||
|
|
||||||
static bool do_env_ddd(DisasContext *dc, arg_r_r_r *a,
|
static bool do_env_ddd(DisasContext *dc, arg_r_r_r *a,
|
||||||
void (*func)(TCGv_i64, TCGv_env, TCGv_i64, TCGv_i64))
|
void (*func)(TCGv_i64, TCGv_env, TCGv_i64, TCGv_i64))
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include "exec/helper-proto.h"
|
#include "exec/helper-proto.h"
|
||||||
|
#include "crypto/clmul.h"
|
||||||
|
|
||||||
target_ulong helper_array8(target_ulong rs1, target_ulong rs2)
|
target_ulong helper_array8(target_ulong rs1, target_ulong rs2)
|
||||||
{
|
{
|
||||||
|
@ -509,3 +510,13 @@ uint64_t helper_fslas32(uint64_t src1, uint64_t src2)
|
||||||
|
|
||||||
return r.ll;
|
return r.ll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t helper_xmulx(uint64_t src1, uint64_t src2)
|
||||||
|
{
|
||||||
|
return int128_getlo(clmul_64(src1, src2));
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t helper_xmulxhi(uint64_t src1, uint64_t src2)
|
||||||
|
{
|
||||||
|
return int128_gethi(clmul_64(src1, src2));
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue