Revision 2c277908

b/target-ppc/helper.h
129 129
DEF_HELPER_3(vmrghb, void, avr, avr, avr)
130 130
DEF_HELPER_3(vmrghh, void, avr, avr, avr)
131 131
DEF_HELPER_3(vmrghw, void, avr, avr, avr)
132
DEF_HELPER_3(vmulesb, void, avr, avr, avr)
133
DEF_HELPER_3(vmulesh, void, avr, avr, avr)
134
DEF_HELPER_3(vmuleub, void, avr, avr, avr)
135
DEF_HELPER_3(vmuleuh, void, avr, avr, avr)
136
DEF_HELPER_3(vmulosb, void, avr, avr, avr)
137
DEF_HELPER_3(vmulosh, void, avr, avr, avr)
138
DEF_HELPER_3(vmuloub, void, avr, avr, avr)
139
DEF_HELPER_3(vmulouh, void, avr, avr, avr)
132 140

  
133 141
DEF_HELPER_1(efscfsi, i32, i32)
134 142
DEF_HELPER_1(efscfui, i32, i32)
b/target-ppc/op_helper.c
2066 2066
#undef MRGHI
2067 2067
#undef MRGLO
2068 2068

  
2069
#define VMUL_DO(name, mul_element, prod_element, evenp)                 \
2070
    void helper_v##name (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)      \
2071
    {                                                                   \
2072
        int i;                                                          \
2073
        VECTOR_FOR_INORDER_I(i, prod_element) {                         \
2074
            if (evenp) {                                                \
2075
                r->prod_element[i] = a->mul_element[i*2+HI_IDX] * b->mul_element[i*2+HI_IDX]; \
2076
            } else {                                                    \
2077
                r->prod_element[i] = a->mul_element[i*2+LO_IDX] * b->mul_element[i*2+LO_IDX]; \
2078
            }                                                           \
2079
        }                                                               \
2080
    }
2081
#define VMUL(suffix, mul_element, prod_element) \
2082
  VMUL_DO(mule##suffix, mul_element, prod_element, 1) \
2083
  VMUL_DO(mulo##suffix, mul_element, prod_element, 0)
2084
VMUL(sb, s8, s16)
2085
VMUL(sh, s16, s32)
2086
VMUL(ub, u8, u16)
2087
VMUL(uh, u16, u32)
2088
#undef VMUL_DO
2089
#undef VMUL
2090

  
2069 2091
#undef VECTOR_FOR_INORDER_I
2070 2092
#undef HI_IDX
2071 2093
#undef LO_IDX
b/target-ppc/translate.c
6211 6211
GEN_VXFORM(vmrglb, 6, 4);
6212 6212
GEN_VXFORM(vmrglh, 6, 5);
6213 6213
GEN_VXFORM(vmrglw, 6, 6);
6214
GEN_VXFORM(vmuloub, 4, 0);
6215
GEN_VXFORM(vmulouh, 4, 1);
6216
GEN_VXFORM(vmulosb, 4, 4);
6217
GEN_VXFORM(vmulosh, 4, 5);
6218
GEN_VXFORM(vmuleub, 4, 8);
6219
GEN_VXFORM(vmuleuh, 4, 9);
6220
GEN_VXFORM(vmulesb, 4, 12);
6221
GEN_VXFORM(vmulesh, 4, 13);
6214 6222

  
6215 6223
/***                           SPE extension                               ***/
6216 6224
/* Register moves */

Also available in: Unified diff