target/ppc: Move VMX integer logical instructions to decodetree.
Moving the following instructions to decodetree specification: v{and, andc, nand, or, orc, nor, xor, eqv} : VX-form The changes were verified by validating that the tcp ops generated by those instructions remain the same, which were captured with the '-d in_asm,op' flag. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Chinmay Rath <rathc@linux.ibm.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
21b5f5464f
commit
664eb39ec9
@ -709,6 +709,17 @@ VCMPNEZW 000100 ..... ..... ..... . 0110000111 @VC
|
||||
VCMPSQ 000100 ... -- ..... ..... 00101000001 @VX_bf
|
||||
VCMPUQ 000100 ... -- ..... ..... 00100000001 @VX_bf
|
||||
|
||||
## Vector Integer Logical Instructions
|
||||
|
||||
VAND 000100 ..... ..... ..... 10000000100 @VX
|
||||
VANDC 000100 ..... ..... ..... 10001000100 @VX
|
||||
VNAND 000100 ..... ..... ..... 10110000100 @VX
|
||||
VOR 000100 ..... ..... ..... 10010000100 @VX
|
||||
VORC 000100 ..... ..... ..... 10101000100 @VX
|
||||
VNOR 000100 ..... ..... ..... 10100000100 @VX
|
||||
VXOR 000100 ..... ..... ..... 10011000100 @VX
|
||||
VEQV 000100 ..... ..... ..... 11010000100 @VX
|
||||
|
||||
## Vector Integer Average Instructions
|
||||
|
||||
VAVGSB 000100 ..... ..... ..... 10100000010 @VX
|
||||
|
@ -205,16 +205,6 @@ static void glue(gen_, name)(DisasContext *ctx) \
|
||||
16, 16); \
|
||||
}
|
||||
|
||||
/* Logical operations */
|
||||
GEN_VXFORM_V(vand, MO_64, tcg_gen_gvec_and, 2, 16);
|
||||
GEN_VXFORM_V(vandc, MO_64, tcg_gen_gvec_andc, 2, 17);
|
||||
GEN_VXFORM_V(vor, MO_64, tcg_gen_gvec_or, 2, 18);
|
||||
GEN_VXFORM_V(vxor, MO_64, tcg_gen_gvec_xor, 2, 19);
|
||||
GEN_VXFORM_V(vnor, MO_64, tcg_gen_gvec_nor, 2, 20);
|
||||
GEN_VXFORM_V(veqv, MO_64, tcg_gen_gvec_eqv, 2, 26);
|
||||
GEN_VXFORM_V(vnand, MO_64, tcg_gen_gvec_nand, 2, 22);
|
||||
GEN_VXFORM_V(vorc, MO_64, tcg_gen_gvec_orc, 2, 21);
|
||||
|
||||
#define GEN_VXFORM(name, opc2, opc3) \
|
||||
static void glue(gen_, name)(DisasContext *ctx) \
|
||||
{ \
|
||||
@ -727,6 +717,16 @@ TRANS_FLAGS(ALTIVEC, VRLH, do_vector_gvec3_VX, MO_16, tcg_gen_gvec_rotlv)
|
||||
TRANS_FLAGS(ALTIVEC, VRLW, do_vector_gvec3_VX, MO_32, tcg_gen_gvec_rotlv)
|
||||
TRANS_FLAGS2(ALTIVEC_207, VRLD, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_rotlv)
|
||||
|
||||
/* Logical operations */
|
||||
TRANS_FLAGS(ALTIVEC, VAND, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_and);
|
||||
TRANS_FLAGS(ALTIVEC, VANDC, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_andc);
|
||||
TRANS_FLAGS(ALTIVEC, VOR, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_or);
|
||||
TRANS_FLAGS(ALTIVEC, VXOR, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_xor);
|
||||
TRANS_FLAGS(ALTIVEC, VNOR, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_nor);
|
||||
TRANS_FLAGS2(ALTIVEC_207, VEQV, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_eqv);
|
||||
TRANS_FLAGS2(ALTIVEC_207, VNAND, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_nand);
|
||||
TRANS_FLAGS2(ALTIVEC_207, VORC, do_vector_gvec3_VX, MO_64, tcg_gen_gvec_orc);
|
||||
|
||||
static TCGv_vec do_vrl_mask_vec(unsigned vece, TCGv_vec vrb)
|
||||
{
|
||||
TCGv_vec t0 = tcg_temp_new_vec_matching(vrb),
|
||||
@ -3331,8 +3331,6 @@ TRANS_FLAGS2(ISA310, VMODUQ, do_vx_helper, gen_helper_VMODUQ)
|
||||
#undef DIVS64
|
||||
#undef DIVU64
|
||||
|
||||
#undef GEN_VX_LOGICAL
|
||||
#undef GEN_VX_LOGICAL_207
|
||||
#undef GEN_VXFORM
|
||||
#undef GEN_VXFORM_207
|
||||
#undef GEN_VXFORM_DUAL
|
||||
|
@ -1,18 +1,3 @@
|
||||
#define GEN_VX_LOGICAL(name, tcg_op, opc2, opc3) \
|
||||
GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC)
|
||||
|
||||
#define GEN_VX_LOGICAL_207(name, tcg_op, opc2, opc3) \
|
||||
GEN_HANDLER_E(name, 0x04, opc2, opc3, 0x00000000, PPC_NONE, PPC2_ALTIVEC_207)
|
||||
|
||||
GEN_VX_LOGICAL(vand, tcg_gen_and_i64, 2, 16),
|
||||
GEN_VX_LOGICAL(vandc, tcg_gen_andc_i64, 2, 17),
|
||||
GEN_VX_LOGICAL(vor, tcg_gen_or_i64, 2, 18),
|
||||
GEN_VX_LOGICAL(vxor, tcg_gen_xor_i64, 2, 19),
|
||||
GEN_VX_LOGICAL(vnor, tcg_gen_nor_i64, 2, 20),
|
||||
GEN_VX_LOGICAL_207(veqv, tcg_gen_eqv_i64, 2, 26),
|
||||
GEN_VX_LOGICAL_207(vnand, tcg_gen_nand_i64, 2, 22),
|
||||
GEN_VX_LOGICAL_207(vorc, tcg_gen_orc_i64, 2, 21),
|
||||
|
||||
#define GEN_VXFORM(name, opc2, opc3) \
|
||||
GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user