Revision 79f85c3a target-ppc/op_helper.c
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 |
Also available in: Unified diff