Commit 6cf1c6e5470aa68afdc1185fe289072cb06e8cf7
1 parent
79f85c3a
Add vupk{h,l}s{b,h} instructions.
Signed-off-by: Nathan Froyd <froydnj@codesourcery.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6177 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
29 additions
and
0 deletions
target-ppc/helper.h
... | ... | @@ -161,6 +161,10 @@ DEF_HELPER_3(vsplth, void, avr, avr, i32) |
161 | 161 | DEF_HELPER_3(vspltw, void, avr, avr, i32) |
162 | 162 | DEF_HELPER_2(vupkhpx, void, avr, avr) |
163 | 163 | DEF_HELPER_2(vupklpx, void, avr, avr) |
164 | +DEF_HELPER_2(vupkhsb, void, avr, avr) | |
165 | +DEF_HELPER_2(vupkhsh, void, avr, avr) | |
166 | +DEF_HELPER_2(vupklsb, void, avr, avr) | |
167 | +DEF_HELPER_2(vupklsh, void, avr, avr) | |
164 | 168 | |
165 | 169 | DEF_HELPER_1(efscfsi, i32, i32) |
166 | 170 | DEF_HELPER_1(efscfui, i32, i32) | ... | ... |
target-ppc/op_helper.c
... | ... | @@ -2274,6 +2274,27 @@ VUPKPX(lpx, UPKLO) |
2274 | 2274 | VUPKPX(hpx, UPKHI) |
2275 | 2275 | #undef VUPKPX |
2276 | 2276 | |
2277 | +#define VUPK(suffix, unpacked, packee, hi) \ | |
2278 | + void helper_vupk##suffix (ppc_avr_t *r, ppc_avr_t *b) \ | |
2279 | + { \ | |
2280 | + int i; \ | |
2281 | + ppc_avr_t result; \ | |
2282 | + if (hi) { \ | |
2283 | + for (i = 0; i < ARRAY_SIZE(r->unpacked); i++) { \ | |
2284 | + result.unpacked[i] = b->packee[i]; \ | |
2285 | + } \ | |
2286 | + } else { \ | |
2287 | + for (i = ARRAY_SIZE(r->unpacked); i < ARRAY_SIZE(r->packee); i++) { \ | |
2288 | + result.unpacked[i-ARRAY_SIZE(r->unpacked)] = b->packee[i]; \ | |
2289 | + } \ | |
2290 | + } \ | |
2291 | + *r = result; \ | |
2292 | + } | |
2293 | +VUPK(hsb, s16, s8, UPKHI) | |
2294 | +VUPK(hsh, s32, s16, UPKHI) | |
2295 | +VUPK(lsb, s16, s8, UPKLO) | |
2296 | +VUPK(lsh, s32, s16, UPKLO) | |
2297 | +#undef VUPK | |
2277 | 2298 | #undef UPKHI |
2278 | 2299 | #undef UPKLO |
2279 | 2300 | ... | ... |
target-ppc/translate.c
... | ... | @@ -6289,6 +6289,10 @@ GEN_VXFORM(vrlw, 2, 2); |
6289 | 6289 | tcg_temp_free_ptr(rd); \ |
6290 | 6290 | } |
6291 | 6291 | |
6292 | +GEN_VXFORM_NOA(vupkhsb, 7, 8); | |
6293 | +GEN_VXFORM_NOA(vupkhsh, 7, 9); | |
6294 | +GEN_VXFORM_NOA(vupklsb, 7, 10); | |
6295 | +GEN_VXFORM_NOA(vupklsh, 7, 11); | |
6292 | 6296 | GEN_VXFORM_NOA(vupkhpx, 7, 13); |
6293 | 6297 | GEN_VXFORM_NOA(vupklpx, 7, 15); |
6294 | 6298 | ... | ... |