Revision 40d0591e target-ppc/translate.c

b/target-ppc/translate.c
1339 1339
    gen_##name(ctx, 1, 1);                                                    \
1340 1340
}
1341 1341

  
1342
static inline void gen_andi_T0_64 (DisasContext *ctx, uint64_t mask)
1343
{
1344
    if (mask >> 32)
1345
        gen_op_andi_T0_64(mask >> 32, mask & 0xFFFFFFFF);
1346
    else
1347
        gen_op_andi_T0(mask);
1348
}
1349

  
1350
static inline void gen_andi_T1_64 (DisasContext *ctx, uint64_t mask)
1351
{
1352
    if (mask >> 32)
1353
        gen_op_andi_T1_64(mask >> 32, mask & 0xFFFFFFFF);
1354
    else
1355
        gen_op_andi_T1(mask);
1356
}
1357

  
1342 1358
static inline void gen_rldinm (DisasContext *ctx, uint32_t mb, uint32_t me,
1343 1359
                               uint32_t sh)
1344 1360
{
......
1348 1364
    }
1349 1365
    if (likely(mb == 0)) {
1350 1366
        if (likely(me == 63)) {
1351
            gen_op_rotli32_T0(sh);
1367
            gen_op_rotli64_T0(sh);
1352 1368
            goto do_store;
1353 1369
        } else if (likely(me == (63 - sh))) {
1354 1370
            gen_op_sli_T0(sh);
......
1356 1372
        }
1357 1373
    } else if (likely(me == 63)) {
1358 1374
        if (likely(sh == (64 - mb))) {
1359
            gen_op_srli_T0(mb);
1375
            gen_op_srli_T0_64(mb);
1360 1376
            goto do_store;
1361 1377
        }
1362 1378
    }
1363 1379
    gen_op_rotli64_T0(sh);
1364 1380
 do_mask:
1365
    gen_op_andi_T0(MASK(mb, me));
1381
    gen_andi_T0_64(ctx, MASK(mb, me));
1366 1382
 do_store:
1367 1383
    gen_op_store_T0_gpr(rA(ctx->opcode));
1368 1384
    if (unlikely(Rc(ctx->opcode) != 0))
......
1405 1421
    gen_op_load_gpr_T1(rB(ctx->opcode));
1406 1422
    gen_op_rotl64_T0_T1();
1407 1423
    if (unlikely(mb != 0 || me != 63)) {
1408
        gen_op_andi_T0(MASK(mb, me));
1424
        gen_andi_T0_64(ctx, MASK(mb, me));
1409 1425
    }
1410 1426
    gen_op_store_T0_gpr(rA(ctx->opcode));
1411 1427
    if (unlikely(Rc(ctx->opcode) != 0))
......
1452 1468
    }
1453 1469
    gen_op_load_gpr_T0(rS(ctx->opcode));
1454 1470
    gen_op_load_gpr_T1(rA(ctx->opcode));
1455
    gen_op_rotli64_T0(SH(ctx->opcode));
1471
    gen_op_rotli64_T0(sh);
1456 1472
 do_mask:
1457 1473
    mask = MASK(mb, 63 - sh);
1458
    gen_op_andi_T0(mask);
1459
    gen_op_andi_T1(~mask);
1474
    gen_andi_T0_64(ctx, mask);
1475
    gen_andi_T1_64(ctx, ~mask);
1460 1476
    gen_op_or();
1461 1477
 do_store:
1462 1478
    gen_op_store_T0_gpr(rA(ctx->opcode));

Also available in: Unified diff