Revision eaabeef2 target-ppc/op_helper.c

b/target-ppc/op_helper.c
499 499
}
500 500
#endif
501 501

  
502
#if defined(TARGET_PPC64)
503
target_ulong helper_popcntb (target_ulong val)
504
{
505
    val = (val & 0x5555555555555555ULL) + ((val >>  1) &
506
                                           0x5555555555555555ULL);
507
    val = (val & 0x3333333333333333ULL) + ((val >>  2) &
508
                                           0x3333333333333333ULL);
509
    val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >>  4) &
510
                                           0x0f0f0f0f0f0f0f0fULL);
511
    return val;
512
}
513

  
514
target_ulong helper_popcntw (target_ulong val)
515
{
516
    val = (val & 0x5555555555555555ULL) + ((val >>  1) &
517
                                           0x5555555555555555ULL);
518
    val = (val & 0x3333333333333333ULL) + ((val >>  2) &
519
                                           0x3333333333333333ULL);
520
    val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >>  4) &
521
                                           0x0f0f0f0f0f0f0f0fULL);
522
    val = (val & 0x00ff00ff00ff00ffULL) + ((val >>  8) &
523
                                           0x00ff00ff00ff00ffULL);
524
    val = (val & 0x0000ffff0000ffffULL) + ((val >> 16) &
525
                                           0x0000ffff0000ffffULL);
526
    return val;
527
}
528

  
529
target_ulong helper_popcntd (target_ulong val)
530
{
531
    val = (val & 0x5555555555555555ULL) + ((val >>  1) &
532
                                           0x5555555555555555ULL);
533
    val = (val & 0x3333333333333333ULL) + ((val >>  2) &
534
                                           0x3333333333333333ULL);
535
    val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >>  4) &
536
                                           0x0f0f0f0f0f0f0f0fULL);
537
    val = (val & 0x00ff00ff00ff00ffULL) + ((val >>  8) &
538
                                           0x00ff00ff00ff00ffULL);
539
    val = (val & 0x0000ffff0000ffffULL) + ((val >> 16) &
540
                                           0x0000ffff0000ffffULL);
541
    val = (val & 0x00000000ffffffffULL) + ((val >> 32) &
542
                                           0x00000000ffffffffULL);
543
    return val;
544
}
545
#else
502 546
target_ulong helper_popcntb (target_ulong val)
503 547
{
504 548
    val = (val & 0x55555555) + ((val >>  1) & 0x55555555);
......
507 551
    return val;
508 552
}
509 553

  
510
#if defined(TARGET_PPC64)
511
target_ulong helper_popcntb_64 (target_ulong val)
554
target_ulong helper_popcntw (target_ulong val)
512 555
{
513
    val = (val & 0x5555555555555555ULL) + ((val >>  1) & 0x5555555555555555ULL);
514
    val = (val & 0x3333333333333333ULL) + ((val >>  2) & 0x3333333333333333ULL);
515
    val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >>  4) & 0x0f0f0f0f0f0f0f0fULL);
556
    val = (val & 0x55555555) + ((val >>  1) & 0x55555555);
557
    val = (val & 0x33333333) + ((val >>  2) & 0x33333333);
558
    val = (val & 0x0f0f0f0f) + ((val >>  4) & 0x0f0f0f0f);
559
    val = (val & 0x00ff00ff) + ((val >>  8) & 0x00ff00ff);
560
    val = (val & 0x0000ffff) + ((val >> 16) & 0x0000ffff);
516 561
    return val;
517 562
}
518 563
#endif

Also available in: Unified diff