mirror of https://github.com/xemu-project/xemu.git
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
|
@ -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(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(xmulx, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||
DEF_HELPER_FLAGS_2(xmulxhi, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
||||
#endif
|
||||
#undef VIS_HELPER
|
||||
#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
|
||||
UMULXHI 10 ..... 110110 ..... 0 0001 0110 ..... @r_r_r
|
||||
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
|
||||
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_fxtos ({ 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
|
||||
#endif
|
||||
|
||||
|
@ -5088,6 +5090,8 @@ TRANS(FPCMPULE8, VIS3B, do_rdd, a, gen_helper_fcmpule8)
|
|||
TRANS(FPCMPUGT8, VIS3B, do_rdd, a, gen_helper_fcmpugt8)
|
||||
|
||||
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,
|
||||
void (*func)(TCGv_i64, TCGv_env, TCGv_i64, TCGv_i64))
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "exec/helper-proto.h"
|
||||
#include "crypto/clmul.h"
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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…
Reference in New Issue