Revision cd633b10 target-ppc/translate.c
b/target-ppc/translate.c | ||
---|---|---|
374 | 374 |
EXTRACT_HELPER(NB, 11, 5); |
375 | 375 |
/* Shift count */ |
376 | 376 |
EXTRACT_HELPER(SH, 11, 5); |
377 |
/* Vector shift count */ |
|
378 |
EXTRACT_HELPER(VSH, 6, 4); |
|
377 | 379 |
/* Mask start */ |
378 | 380 |
EXTRACT_HELPER(MB, 6, 5); |
379 | 381 |
/* Mask end */ |
... | ... | |
6268 | 6270 |
GEN_VXFORM(vrlh, 2, 1); |
6269 | 6271 |
GEN_VXFORM(vrlw, 2, 2); |
6270 | 6272 |
|
6273 |
GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC) |
|
6274 |
{ |
|
6275 |
TCGv_ptr ra, rb, rd; |
|
6276 |
TCGv sh; |
|
6277 |
if (unlikely(!ctx->altivec_enabled)) { |
|
6278 |
gen_exception(ctx, POWERPC_EXCP_VPU); |
|
6279 |
return; |
|
6280 |
} |
|
6281 |
ra = gen_avr_ptr(rA(ctx->opcode)); |
|
6282 |
rb = gen_avr_ptr(rB(ctx->opcode)); |
|
6283 |
rd = gen_avr_ptr(rD(ctx->opcode)); |
|
6284 |
sh = tcg_const_i32(VSH(ctx->opcode)); |
|
6285 |
gen_helper_vsldoi (rd, ra, rb, sh); |
|
6286 |
tcg_temp_free_ptr(ra); |
|
6287 |
tcg_temp_free_ptr(rb); |
|
6288 |
tcg_temp_free_ptr(rd); |
|
6289 |
tcg_temp_free(sh); |
|
6290 |
} |
|
6291 |
|
|
6271 | 6292 |
/*** SPE extension ***/ |
6272 | 6293 |
/* Register moves */ |
6273 | 6294 |
|
Also available in: Unified diff