Lines Matching refs:s2

265           Node* s2 = memops.at(j);
266 if (alignment(s2) == top_align) continue;
267 if (s1 != s2 && are_adjacent_refs(s1, s2)) {
268 if (stmts_can_pack(s1, s2, align)) {
271 pair->push(s2);
351 MemNode* s2 = memops.at(j)->as_Mem();
352 if (isomorphic(s1, s2)) {
353 SWPointer p2(s2, this);
542 Node* s2 = _nlist.at(k);
543 if (s1->is_Load() && s2->is_Load())
545 SWPointer p2(s2->as_Mem(), this);
555 _dg.make_edge(s1, s2);
625 // Can s1 and s2 be in a pack with s1 immediately preceding s2 and
627 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) {
631 BasicType bt2 = velt_basic_type(s2);
638 if (isomorphic(s1, s2)) {
639 if (independent(s1, s2)) {
640 if (!exists_at(s1, 0) && !exists_at(s2, 1)) {
641 if (!s1->is_Mem() || are_adjacent_refs(s1, s2)) {
643 int s2_align = alignment(s2);
669 // Is s1 immediately before s2 in memory?
670 bool SuperWord::are_adjacent_refs(Node* s1, Node* s2) {
671 if (!s1->is_Mem() || !s2->is_Mem()) return false;
672 if (!in_bb(s1) || !in_bb(s2)) return false;
676 !is_java_primitive(s2->as_Mem()->memory_type())) {
683 _phase->C->get_alias_index(s2->as_Mem()->adr_type()))
686 SWPointer p2(s2->as_Mem(), this);
693 // Are s1 and s2 similar?
694 bool SuperWord::isomorphic(Node* s1, Node* s2) {
695 if (s1->Opcode() != s2->Opcode()) return false;
696 if (s1->req() != s2->req()) return false;
697 if (s1->in(0) != s2->in(0)) return false;
698 if (!same_velt_type(s1, s2)) return false;
703 // Is there no data path from s1 to s2 or s2 to s1?
704 bool SuperWord::independent(Node* s1, Node* s2) {
705 // assert(s1->Opcode() == s2->Opcode(), "check isomorphic first");
707 int d2 = depth(s2);
708 if (d1 == d2) return s1 != s2;
709 Node* deep = d1 > d2 ? s1 : s2;
710 Node* shallow = d1 > d2 ? s2 : s1;
739 void SuperWord::set_alignment(Node* s1, Node* s2, int align) {
742 set_alignment(s2, align);
744 set_alignment(s2, align + data_size(s1));
781 Node* s2 = p->at(1);
782 assert(s1->req() == s2->req(), "just checking");
783 assert(alignment(s1) + data_size(s1) == alignment(s2), "just checking");
793 Node* t2 = s2->in(j);
815 Node* s2 = p->at(1);
817 assert(s1->req() == s2->req(), "just checking");
818 assert(alignment(s1) + data_size(s1) == alignment(s2), "just checking");
829 for (DUIterator_Fast jmax, j = s2->fast_outs(jmax); j < jmax; j++) {
830 Node* t2 = s2->fast_out(j);
832 if (!opnd_positions_match(s1, t1, s2, t2))
878 // Estimate the savings from executing s1 and s2 as a pack
879 int SuperWord::est_savings(Node* s1, Node* s2) {
885 Node* x2 = s2->in(i);
905 for (DUIterator_Fast kmax, k = s2->fast_outs(kmax); k < kmax; k++) {
906 Node* s2_use = s2->fast_out(k);
919 if (ct < s2->outcnt()) save_use += unpack_cost(1);
925 int SuperWord::adjacent_profit(Node* s1, Node* s2) { return 2; }
1240 Node *s2 = memops.at(j);
1241 if (!independent(s1, s2)) {
1242 if (in_pack(s2, pk) || schedule_before_pack.member(s2)) {
1909 // Are s1 and s2 in a pack pair and ordered as s1,s2?
1910 bool SuperWord::in_packset(Node* s1, Node* s2) {
1914 if (p->at(0) == s1 && p->at(p->size()-1) == s2) {