target/ppc: Implemented vector module word/doubleword
Implement the following PowerISA v3.1 instructions: vmodsw: Vector Modulo Signed Word vmoduw: Vector Modulo Unsigned Word vmodsd: Vector Modulo Signed Doubleword vmodud: Vector Modulo Unsigned Doubleword Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220525134954.85056-8-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
a173ba88be
commit
5adb27cd8f
@ -802,3 +802,8 @@ VDIVESD 000100 ..... ..... ..... 01111001011 @VX
|
||||
VDIVEUD 000100 ..... ..... ..... 01011001011 @VX
|
||||
VDIVESQ 000100 ..... ..... ..... 01100001011 @VX
|
||||
VDIVEUQ 000100 ..... ..... ..... 01000001011 @VX
|
||||
|
||||
VMODSW 000100 ..... ..... ..... 11110001011 @VX
|
||||
VMODUW 000100 ..... ..... ..... 11010001011 @VX
|
||||
VMODSD 000100 ..... ..... ..... 11111001011 @VX
|
||||
VMODUD 000100 ..... ..... ..... 11011001011 @VX
|
||||
|
@ -3365,6 +3365,11 @@ static void do_diveu_i32(TCGv_i32 t, TCGv_i32 a, TCGv_i32 b)
|
||||
DIVS32(do_divesw, do_dives_i32)
|
||||
DIVU32(do_diveuw, do_diveu_i32)
|
||||
|
||||
DIVS32(do_modsw, tcg_gen_rem_i32)
|
||||
DIVU32(do_moduw, tcg_gen_remu_i32)
|
||||
DIVS64(do_modsd, tcg_gen_rem_i64)
|
||||
DIVU64(do_modud, tcg_gen_remu_i64)
|
||||
|
||||
TRANS_FLAGS2(ISA310, VDIVESW, do_vdiv_vmod, MO_32, do_divesw, NULL)
|
||||
TRANS_FLAGS2(ISA310, VDIVEUW, do_vdiv_vmod, MO_32, do_diveuw, NULL)
|
||||
TRANS_FLAGS2(ISA310, VDIVESD, do_vx_helper, gen_helper_VDIVESD)
|
||||
@ -3372,6 +3377,11 @@ TRANS_FLAGS2(ISA310, VDIVEUD, do_vx_helper, gen_helper_VDIVEUD)
|
||||
TRANS_FLAGS2(ISA310, VDIVESQ, do_vx_helper, gen_helper_VDIVESQ)
|
||||
TRANS_FLAGS2(ISA310, VDIVEUQ, do_vx_helper, gen_helper_VDIVEUQ)
|
||||
|
||||
TRANS_FLAGS2(ISA310, VMODSW, do_vdiv_vmod, MO_32, do_modsw , NULL)
|
||||
TRANS_FLAGS2(ISA310, VMODUW, do_vdiv_vmod, MO_32, do_moduw, NULL)
|
||||
TRANS_FLAGS2(ISA310, VMODSD, do_vdiv_vmod, MO_64, NULL, do_modsd)
|
||||
TRANS_FLAGS2(ISA310, VMODUD, do_vdiv_vmod, MO_64, NULL, do_modud)
|
||||
|
||||
#undef DIVS32
|
||||
#undef DIVU32
|
||||
#undef DIVS64
|
||||
|
Loading…
Reference in New Issue
Block a user