Revision 79f85c3a

b/target-ppc/helper.h
159 159
DEF_HELPER_3(vspltb, void, avr, avr, i32)
160 160
DEF_HELPER_3(vsplth, void, avr, avr, i32)
161 161
DEF_HELPER_3(vspltw, void, avr, avr, i32)
162
DEF_HELPER_2(vupkhpx, void, avr, avr)
163
DEF_HELPER_2(vupklpx, void, avr, avr)
162 164

  
163 165
DEF_HELPER_1(efscfsi, i32, i32)
164 166
DEF_HELPER_1(efscfui, i32, i32)
b/target-ppc/op_helper.c
2248 2248
    }
2249 2249
}
2250 2250

  
2251
#if defined(WORDS_BIGENDIAN)
2252
#define UPKHI 1
2253
#define UPKLO 0
2254
#else
2255
#define UPKHI 0
2256
#define UPKLO 1
2257
#endif
2258
#define VUPKPX(suffix, hi)                                      \
2259
    void helper_vupk##suffix (ppc_avr_t *r, ppc_avr_t *b)       \
2260
    {                                                           \
2261
        int i;                                                  \
2262
        ppc_avr_t result;                                       \
2263
        for (i = 0; i < ARRAY_SIZE(r->u32); i++) {              \
2264
            uint16_t e = b->u16[hi ? i : i+4];                  \
2265
            uint8_t a = (e >> 15) ? 0xff : 0;                   \
2266
            uint8_t r = (e >> 10) & 0x1f;                       \
2267
            uint8_t g = (e >> 5) & 0x1f;                        \
2268
            uint8_t b = e & 0x1f;                               \
2269
            result.u32[i] = (a << 24) | (r << 16) | (g << 8) | b;       \
2270
        }                                                               \
2271
        *r = result;                                                    \
2272
    }
2273
VUPKPX(lpx, UPKLO)
2274
VUPKPX(hpx, UPKHI)
2275
#undef VUPKPX
2276

  
2277
#undef UPKHI
2278
#undef UPKLO
2279

  
2251 2280
#undef VECTOR_FOR_INORDER_I
2252 2281
#undef HI_IDX
2253 2282
#undef LO_IDX
b/target-ppc/translate.c
6289 6289
        tcg_temp_free_ptr(rd);                                         \
6290 6290
    }
6291 6291

  
6292
GEN_VXFORM_NOA(vupkhpx, 7, 13);
6293
GEN_VXFORM_NOA(vupklpx, 7, 15);
6294

  
6292 6295
#define GEN_VXFORM_SIMM(name, opc2, opc3)                               \
6293 6296
    GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC)        \
6294 6297
    {                                                                   \

Also available in: Unified diff