Commit 21d215831e66c01bafd92a7020c0c1f6a7d49c26
1 parent
cd633b10
Add GEN_VXFORM_SIMM 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@6172 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
18 additions
and
0 deletions
target-ppc/translate.c
... | ... | @@ -370,6 +370,8 @@ EXTRACT_HELPER(IMM, 12, 8); |
370 | 370 | EXTRACT_SHELPER(SIMM, 0, 16); |
371 | 371 | /* 16 bits unsigned immediate value */ |
372 | 372 | EXTRACT_HELPER(UIMM, 0, 16); |
373 | +/* 5 bits signed immediate value */ | |
374 | +EXTRACT_HELPER(SIMM5, 16, 5); | |
373 | 375 | /* Bit count */ |
374 | 376 | EXTRACT_HELPER(NB, 11, 5); |
375 | 377 | /* Shift count */ |
... | ... | @@ -6270,6 +6272,22 @@ GEN_VXFORM(vrlb, 2, 0); |
6270 | 6272 | GEN_VXFORM(vrlh, 2, 1); |
6271 | 6273 | GEN_VXFORM(vrlw, 2, 2); |
6272 | 6274 | |
6275 | +#define GEN_VXFORM_SIMM(name, opc2, opc3) \ | |
6276 | + GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC) \ | |
6277 | + { \ | |
6278 | + TCGv_ptr rd; \ | |
6279 | + TCGv_i32 simm; \ | |
6280 | + if (unlikely(!ctx->altivec_enabled)) { \ | |
6281 | + gen_exception(ctx, POWERPC_EXCP_VPU); \ | |
6282 | + return; \ | |
6283 | + } \ | |
6284 | + simm = tcg_const_i32(SIMM5(ctx->opcode)); \ | |
6285 | + rd = gen_avr_ptr(rD(ctx->opcode)); \ | |
6286 | + gen_helper_##name (rd, simm); \ | |
6287 | + tcg_temp_free_i32(simm); \ | |
6288 | + tcg_temp_free_ptr(rd); \ | |
6289 | + } | |
6290 | + | |
6273 | 6291 | GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC) |
6274 | 6292 | { |
6275 | 6293 | TCGv_ptr ra, rb, rd; | ... | ... |