Commit 27a4edb310f1fb5cdcdbb8426efcf468d062d9b8
1 parent
21d21583
Add GEN_VXFORM_UIMM macro for subsequent 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@6173 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
20 additions
and
0 deletions
target-ppc/translate.c
| ... | ... | @@ -372,6 +372,8 @@ EXTRACT_SHELPER(SIMM, 0, 16); |
| 372 | 372 | EXTRACT_HELPER(UIMM, 0, 16); |
| 373 | 373 | /* 5 bits signed immediate value */ |
| 374 | 374 | EXTRACT_HELPER(SIMM5, 16, 5); |
| 375 | +/* 5 bits signed immediate value */ | |
| 376 | +EXTRACT_HELPER(UIMM5, 16, 5); | |
| 375 | 377 | /* Bit count */ |
| 376 | 378 | EXTRACT_HELPER(NB, 11, 5); |
| 377 | 379 | /* Shift count */ |
| ... | ... | @@ -6288,6 +6290,24 @@ GEN_VXFORM(vrlw, 2, 2); |
| 6288 | 6290 | tcg_temp_free_ptr(rd); \ |
| 6289 | 6291 | } |
| 6290 | 6292 | |
| 6293 | +#define GEN_VXFORM_UIMM(name, opc2, opc3) \ | |
| 6294 | + GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC) \ | |
| 6295 | + { \ | |
| 6296 | + TCGv_ptr rb, rd; \ | |
| 6297 | + TCGv_i32 uimm; \ | |
| 6298 | + if (unlikely(!ctx->altivec_enabled)) { \ | |
| 6299 | + gen_exception(ctx, POWERPC_EXCP_VPU); \ | |
| 6300 | + return; \ | |
| 6301 | + } \ | |
| 6302 | + uimm = tcg_const_i32(UIMM5(ctx->opcode)); \ | |
| 6303 | + rb = gen_avr_ptr(rB(ctx->opcode)); \ | |
| 6304 | + rd = gen_avr_ptr(rD(ctx->opcode)); \ | |
| 6305 | + gen_helper_##name (rd, rb, uimm); \ | |
| 6306 | + tcg_temp_free_i32(uimm); \ | |
| 6307 | + tcg_temp_free_ptr(rb); \ | |
| 6308 | + tcg_temp_free_ptr(rd); \ | |
| 6309 | + } | |
| 6310 | + | |
| 6291 | 6311 | GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC) |
| 6292 | 6312 | { |
| 6293 | 6313 | TCGv_ptr ra, rb, rd; | ... | ... |