On 13/09/15 23:03, Aurelien Jarno wrote:
> The xscmpodp and xscmpudp instructions only have the AX, BX bits in
> there encoding, the lowest bit (usually TX) is marked as an invalid
> bit. We therefore can't decode them with GEN_XX2FORM, which decodes
> the two lowest bit.
> 
> Introduce a new form GEN_XX2FORM, which decodes AX and BX and mark
> the lowest bit as invalid.
> 
> Cc: Tom Musta <tommu...@gmail.com>
> Cc: Alexander Graf <ag...@suse.de>
> Cc: qemu-sta...@nongnu.org
> Signed-off-by: Aurelien Jarno <aurel...@aurel32.net>
> ---
>  target-ppc/translate.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 84c5cea..c0eed13 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -10670,6 +10670,13 @@ GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 0, 
> PPC_NONE, fl2), \
>  GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 2, opc3, 0, PPC_NONE, fl2), \
>  GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 3, opc3, 0, PPC_NONE, fl2)
>  
> +#undef GEN_XX2IFORM
> +#define GEN_XX2IFORM(name, opc2, opc3, fl2)                           \
> +GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 1, PPC_NONE, fl2), \
> +GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 1, PPC_NONE, fl2), \
> +GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 2, opc3, 1, PPC_NONE, fl2), \
> +GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 3, opc3, 1, PPC_NONE, fl2)
> +
>  #undef GEN_XX3_RC_FORM
>  #define GEN_XX3_RC_FORM(name, opc2, opc3, fl2)                          \
>  GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x00, opc3 | 0x00, 0, PPC_NONE, 
> fl2), \
> @@ -10731,8 +10738,8 @@ GEN_XX3FORM(xsnmaddadp, 0x04, 0x14, PPC2_VSX),
>  GEN_XX3FORM(xsnmaddmdp, 0x04, 0x15, PPC2_VSX),
>  GEN_XX3FORM(xsnmsubadp, 0x04, 0x16, PPC2_VSX),
>  GEN_XX3FORM(xsnmsubmdp, 0x04, 0x17, PPC2_VSX),
> -GEN_XX2FORM(xscmpodp,  0x0C, 0x05, PPC2_VSX),
> -GEN_XX2FORM(xscmpudp,  0x0C, 0x04, PPC2_VSX),
> +GEN_XX2IFORM(xscmpodp,  0x0C, 0x05, PPC2_VSX),
> +GEN_XX2IFORM(xscmpudp,  0x0C, 0x04, PPC2_VSX),

According to PowerISA 2.07, xscmpodp and xscmpudp are of type XX3, not
of type XX2 ... so should this macro maybe rather be named XX3IFORM instead?

 Thomas


Reply via email to