534 int dst_bit = condition_register_bit(crdst, cdst),
535 src_bit = condition_register_bit(crsrc, csrc);
536 crnor(dst_bit, src_bit, dst_bit);
537 }
538 inline void Assembler::creqv( ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
539 int dst_bit = condition_register_bit(crdst, cdst),
540 src_bit = condition_register_bit(crsrc, csrc);
541 creqv(dst_bit, src_bit, dst_bit);
542 }
543 inline void Assembler::crandc(ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
544 int dst_bit = condition_register_bit(crdst, cdst),
545 src_bit = condition_register_bit(crsrc, csrc);
546 crandc(dst_bit, src_bit, dst_bit);
547 }
548 inline void Assembler::crorc( ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
549 int dst_bit = condition_register_bit(crdst, cdst),
550 src_bit = condition_register_bit(crsrc, csrc);
551 crorc(dst_bit, src_bit, dst_bit);
552 }
553
554 // Conditional move (>= Power7)
555 inline void Assembler::isel(Register d, ConditionRegister cr, Condition cc, bool inv, Register a, Register b) {
556 if (b == noreg) {
557 b = d; // Can be omitted if old value should be kept in "else" case.
558 }
559 Register first = a;
560 Register second = b;
561 if (inv) {
562 first = b;
563 second = a; // exchange
564 }
565 assert(first != R0, "r0 not allowed");
566 isel(d, first, second, bi0(cr, cc));
567 }
568 inline void Assembler::isel_0(Register d, ConditionRegister cr, Condition cc, Register b) {
569 if (b == noreg) {
570 b = d; // Can be omitted if old value should be kept in "else" case.
571 }
572 isel(d, R0, b, bi0(cr, cc));
573 }
|
534 int dst_bit = condition_register_bit(crdst, cdst),
535 src_bit = condition_register_bit(crsrc, csrc);
536 crnor(dst_bit, src_bit, dst_bit);
537 }
538 inline void Assembler::creqv( ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
539 int dst_bit = condition_register_bit(crdst, cdst),
540 src_bit = condition_register_bit(crsrc, csrc);
541 creqv(dst_bit, src_bit, dst_bit);
542 }
543 inline void Assembler::crandc(ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
544 int dst_bit = condition_register_bit(crdst, cdst),
545 src_bit = condition_register_bit(crsrc, csrc);
546 crandc(dst_bit, src_bit, dst_bit);
547 }
548 inline void Assembler::crorc( ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
549 int dst_bit = condition_register_bit(crdst, cdst),
550 src_bit = condition_register_bit(crsrc, csrc);
551 crorc(dst_bit, src_bit, dst_bit);
552 }
553
554 inline void Assembler::crnot( ConditionRegister crdst, Condition cdst, ConditionRegister crsrc, Condition csrc) {
555 int dst_bit = condition_register_bit(crdst, cdst),
556 src_bit = condition_register_bit(crsrc, csrc);
557 crnor(dst_bit, src_bit, src_bit);
558 }
559
560 // Conditional move (>= Power7)
561 inline void Assembler::isel(Register d, ConditionRegister cr, Condition cc, bool inv, Register a, Register b) {
562 if (b == noreg) {
563 b = d; // Can be omitted if old value should be kept in "else" case.
564 }
565 Register first = a;
566 Register second = b;
567 if (inv) {
568 first = b;
569 second = a; // exchange
570 }
571 assert(first != R0, "r0 not allowed");
572 isel(d, first, second, bi0(cr, cc));
573 }
574 inline void Assembler::isel_0(Register d, ConditionRegister cr, Condition cc, Register b) {
575 if (b == noreg) {
576 b = d; // Can be omitted if old value should be kept in "else" case.
577 }
578 isel(d, R0, b, bi0(cr, cc));
579 }
|