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,6 +372,8 @@ EXTRACT_SHELPER(SIMM, 0, 16); | ||
| 372 | EXTRACT_HELPER(UIMM, 0, 16); | 372 | EXTRACT_HELPER(UIMM, 0, 16); |
| 373 | /* 5 bits signed immediate value */ | 373 | /* 5 bits signed immediate value */ |
| 374 | EXTRACT_HELPER(SIMM5, 16, 5); | 374 | EXTRACT_HELPER(SIMM5, 16, 5); |
| 375 | +/* 5 bits signed immediate value */ | ||
| 376 | +EXTRACT_HELPER(UIMM5, 16, 5); | ||
| 375 | /* Bit count */ | 377 | /* Bit count */ |
| 376 | EXTRACT_HELPER(NB, 11, 5); | 378 | EXTRACT_HELPER(NB, 11, 5); |
| 377 | /* Shift count */ | 379 | /* Shift count */ |
| @@ -6288,6 +6290,24 @@ GEN_VXFORM(vrlw, 2, 2); | @@ -6288,6 +6290,24 @@ GEN_VXFORM(vrlw, 2, 2); | ||
| 6288 | tcg_temp_free_ptr(rd); \ | 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 | GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC) | 6311 | GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC) |
| 6292 | { | 6312 | { |
| 6293 | TCGv_ptr ra, rb, rd; | 6313 | TCGv_ptr ra, rb, rd; |