This patch adds the Vector Multiply Unsigned Word Modulo (vmuluwm) instruction.
The existing VARITH_DO macro is re-used to (trivially) instantiate the helper code. Since bits 21-31 of any vmuluwm instruction is 137, the instruction is coded as a dual to vmulouw (bits 21-31 = 136). Signed-off-by: Tom Musta <tommu...@gmail.com> --- target-ppc/helper.h | 1 + target-ppc/int_helper.c | 1 + target-ppc/translate.c | 5 ++++- 3 files changed, 6 insertions(+), 1 deletions(-) diff --git a/target-ppc/helper.h b/target-ppc/helper.h index ca18447..c20d50e 100644 --- a/target-ppc/helper.h +++ b/target-ppc/helper.h @@ -176,6 +176,7 @@ DEF_HELPER_3(vmulosw, void, avr, avr, avr) DEF_HELPER_3(vmuloub, void, avr, avr, avr) DEF_HELPER_3(vmulouh, void, avr, avr, avr) DEF_HELPER_3(vmulouw, void, avr, avr, avr) +DEF_HELPER_3(vmuluwm, void, avr, avr, avr) DEF_HELPER_3(vsrab, void, avr, avr, avr) DEF_HELPER_3(vsrah, void, avr, avr, avr) DEF_HELPER_3(vsraw, void, avr, avr, avr) diff --git a/target-ppc/int_helper.c b/target-ppc/int_helper.c index 09590c7..7a50f4a 100644 --- a/target-ppc/int_helper.c +++ b/target-ppc/int_helper.c @@ -505,6 +505,7 @@ VARITH(ubm, u8) VARITH(uhm, u16) VARITH(uwm, u32) VARITH(udm, u64) +VARITH_DO(muluwm, *, u32) #undef VARITH_DO #undef VARITH diff --git a/target-ppc/translate.c b/target-ppc/translate.c index faee4c3..bbaaf6e 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -6962,6 +6962,9 @@ GEN_VXFORM(vmrglw, 6, 6); GEN_VXFORM(vmuloub, 4, 0); GEN_VXFORM(vmulouh, 4, 1); GEN_VXFORM(vmulouw, 4, 2); +GEN_VXFORM(vmuluwm, 4, 2); +GEN_VXFORM_DUAL(vmulouw, PPC_ALTIVEC, PPC_NONE, + vmuluwm, PPC_NONE, PPC2_ALTIVEC_207) GEN_VXFORM(vmulosb, 4, 4); GEN_VXFORM(vmulosh, 4, 5); GEN_VXFORM(vmulosw, 4, 6); @@ -10348,7 +10351,7 @@ GEN_VXFORM(vmrglh, 6, 5), GEN_VXFORM(vmrglw, 6, 6), GEN_VXFORM(vmuloub, 4, 0), GEN_VXFORM(vmulouh, 4, 1), -GEN_VXFORM_207(vmulouw, 4, 2), +GEN_VXFORM_DUAL(vmulouw, vmuluwm, 4, 2, PPC_ALTIVEC, PPC_NONE), GEN_VXFORM(vmulosb, 4, 4), GEN_VXFORM(vmulosh, 4, 5), GEN_VXFORM_207(vmulosw, 4, 6), -- 1.7.1