Revision 87b0b705 target-s390x/translate.c
b/target-s390x/translate.c | ||
---|---|---|
2334 | 2334 |
case 0x0: /* IIHH R1,I2 [RI] */ |
2335 | 2335 |
tmp = tcg_const_i64(i2); |
2336 | 2336 |
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 48, 16); |
2337 |
tcg_temp_free_i64(tmp); |
|
2337 | 2338 |
break; |
2338 | 2339 |
case 0x1: /* IIHL R1,I2 [RI] */ |
2339 | 2340 |
tmp = tcg_const_i64(i2); |
2340 | 2341 |
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 32, 16); |
2342 |
tcg_temp_free_i64(tmp); |
|
2341 | 2343 |
break; |
2342 | 2344 |
case 0x2: /* IILH R1,I2 [RI] */ |
2343 | 2345 |
tmp = tcg_const_i64(i2); |
2344 | 2346 |
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 16, 16); |
2347 |
tcg_temp_free_i64(tmp); |
|
2345 | 2348 |
break; |
2346 | 2349 |
case 0x3: /* IILL R1,I2 [RI] */ |
2347 | 2350 |
tmp = tcg_const_i64(i2); |
2348 | 2351 |
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 0, 16); |
2352 |
tcg_temp_free_i64(tmp); |
|
2349 | 2353 |
break; |
2350 | 2354 |
case 0x4: /* NIHH R1,I2 [RI] */ |
2351 | 2355 |
case 0x8: /* OIHH R1,I2 [RI] */ |
... | ... | |
2370 | 2374 |
set_cc_nz_u32(s, tmp32); |
2371 | 2375 |
tcg_temp_free_i64(tmp2); |
2372 | 2376 |
tcg_temp_free_i32(tmp32); |
2377 |
tcg_temp_free_i64(tmp); |
|
2373 | 2378 |
break; |
2374 | 2379 |
case 0x5: /* NIHL R1,I2 [RI] */ |
2375 | 2380 |
case 0x9: /* OIHL R1,I2 [RI] */ |
... | ... | |
2395 | 2400 |
set_cc_nz_u32(s, tmp32); |
2396 | 2401 |
tcg_temp_free_i64(tmp2); |
2397 | 2402 |
tcg_temp_free_i32(tmp32); |
2403 |
tcg_temp_free_i64(tmp); |
|
2398 | 2404 |
break; |
2399 | 2405 |
case 0x6: /* NILH R1,I2 [RI] */ |
2400 | 2406 |
case 0xa: /* OILH R1,I2 [RI] */ |
... | ... | |
2420 | 2426 |
set_cc_nz_u32(s, tmp32); |
2421 | 2427 |
tcg_temp_free_i64(tmp2); |
2422 | 2428 |
tcg_temp_free_i32(tmp32); |
2429 |
tcg_temp_free_i64(tmp); |
|
2423 | 2430 |
break; |
2424 | 2431 |
case 0x7: /* NILL R1,I2 [RI] */ |
2425 | 2432 |
case 0xb: /* OILL R1,I2 [RI] */ |
... | ... | |
2443 | 2450 |
set_cc_nz_u32(s, tmp32); /* signedness should not matter here */ |
2444 | 2451 |
tcg_temp_free_i64(tmp2); |
2445 | 2452 |
tcg_temp_free_i32(tmp32); |
2453 |
tcg_temp_free_i64(tmp); |
|
2446 | 2454 |
break; |
2447 | 2455 |
case 0xc: /* LLIHH R1,I2 [RI] */ |
2448 | 2456 |
tmp = tcg_const_i64( ((uint64_t)i2) << 48 ); |
2449 | 2457 |
store_reg(r1, tmp); |
2458 |
tcg_temp_free_i64(tmp); |
|
2450 | 2459 |
break; |
2451 | 2460 |
case 0xd: /* LLIHL R1,I2 [RI] */ |
2452 | 2461 |
tmp = tcg_const_i64( ((uint64_t)i2) << 32 ); |
2453 | 2462 |
store_reg(r1, tmp); |
2463 |
tcg_temp_free_i64(tmp); |
|
2454 | 2464 |
break; |
2455 | 2465 |
case 0xe: /* LLILH R1,I2 [RI] */ |
2456 | 2466 |
tmp = tcg_const_i64( ((uint64_t)i2) << 16 ); |
2457 | 2467 |
store_reg(r1, tmp); |
2468 |
tcg_temp_free_i64(tmp); |
|
2458 | 2469 |
break; |
2459 | 2470 |
case 0xf: /* LLILL R1,I2 [RI] */ |
2460 | 2471 |
tmp = tcg_const_i64(i2); |
2461 | 2472 |
store_reg(r1, tmp); |
2473 |
tcg_temp_free_i64(tmp); |
|
2462 | 2474 |
break; |
2463 | 2475 |
default: |
2464 | 2476 |
LOG_DISAS("illegal a5 operation 0x%x\n", op); |
2465 | 2477 |
gen_illegal_opcode(s, 2); |
2466 | 2478 |
return; |
2467 | 2479 |
} |
2468 |
tcg_temp_free_i64(tmp); |
|
2469 | 2480 |
} |
2470 | 2481 |
|
2471 | 2482 |
static void disas_a7(DisasContext *s, int op, int r1, int i2) |
Also available in: Unified diff