668 assert(bt == T_LONG, "must be");
669 vopc = Op_AndReductionV;
670 break;
671 case Op_OrI:
672 assert(bt == T_INT, "must be");
673 vopc = Op_OrReductionV;
674 break;
675 case Op_OrL:
676 assert(bt == T_LONG, "must be");
677 vopc = Op_OrReductionV;
678 break;
679 case Op_XorI:
680 assert(bt == T_INT, "must be");
681 vopc = Op_XorReductionV;
682 break;
683 case Op_XorL:
684 assert(bt == T_LONG, "must be");
685 vopc = Op_XorReductionV;
686 break;
687 case Op_SubI:
688 assert(bt == T_INT, "must be");
689 vopc = Op_SubReductionV;
690 break;
691 case Op_SubL:
692 assert(bt == T_LONG, "must be");
693 vopc = Op_SubReductionV;
694 break;
695 case Op_SubF:
696 assert(bt == T_FLOAT, "must be");
697 vopc = Op_SubReductionVF;
698 break;
699 case Op_SubD:
700 assert(bt == T_DOUBLE, "must be");
701 vopc = Op_SubReductionVF;
702 break;
703 // TODO: add MulL for targets that support it
704 default:
705 break;
706 }
707 return vopc;
708 }
709
|
668 assert(bt == T_LONG, "must be");
669 vopc = Op_AndReductionV;
670 break;
671 case Op_OrI:
672 assert(bt == T_INT, "must be");
673 vopc = Op_OrReductionV;
674 break;
675 case Op_OrL:
676 assert(bt == T_LONG, "must be");
677 vopc = Op_OrReductionV;
678 break;
679 case Op_XorI:
680 assert(bt == T_INT, "must be");
681 vopc = Op_XorReductionV;
682 break;
683 case Op_XorL:
684 assert(bt == T_LONG, "must be");
685 vopc = Op_XorReductionV;
686 break;
687 case Op_SubI:
688 switch(bt) {
689 case T_BYTE:
690 case T_SHORT:
691 case T_INT:
692 vopc = Op_SubReductionV;
693 break;
694 default: ShouldNotReachHere(); return 0;
695 }
696 break;
697 case Op_SubL:
698 assert(bt == T_LONG, "must be");
699 vopc = Op_SubReductionV;
700 break;
701 case Op_SubF:
702 assert(bt == T_FLOAT, "must be");
703 vopc = Op_SubReductionVF;
704 break;
705 case Op_SubD:
706 assert(bt == T_DOUBLE, "must be");
707 vopc = Op_SubReductionVF;
708 break;
709 // TODO: add MulL for targets that support it
710 default:
711 break;
712 }
713 return vopc;
714 }
715
|