< prev index next >

src/share/vm/opto/superword.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 323,332 **** --- 323,335 ---- // TODO: Remove when support completed for mask context with LONG. // Support needs to be augmented for logical qword operations, currently we map to dword // buckets for vectors on logicals as these were legacy. small_basic_type = true; break; + + default: + break; } } } if (is_java_primitive(bt) == false) continue;
*** 750,766 **** MemNode* s = memops.at(j)->as_Mem(); if (s->is_Store()) { int vw = vector_width_in_bytes(s); assert(vw > 1, "sanity"); SWPointer p(s, this, NULL, false); ! if (cmp_ct.at(j) > max_ct || ! cmp_ct.at(j) == max_ct && ! (vw > max_vw || ! vw == max_vw && ! (data_size(s) < min_size || ! data_size(s) == min_size && ! (p.offset_in_bytes() < min_iv_offset)))) { max_ct = cmp_ct.at(j); max_vw = vw; max_idx = j; min_size = data_size(s); min_iv_offset = p.offset_in_bytes(); --- 753,769 ---- MemNode* s = memops.at(j)->as_Mem(); if (s->is_Store()) { int vw = vector_width_in_bytes(s); assert(vw > 1, "sanity"); SWPointer p(s, this, NULL, false); ! if ( cmp_ct.at(j) > max_ct || ! (cmp_ct.at(j) == max_ct && ! ( vw > max_vw || ! (vw == max_vw && ! ( data_size(s) < min_size || ! (data_size(s) == min_size && ! p.offset_in_bytes() < min_iv_offset)))))) { max_ct = cmp_ct.at(j); max_vw = vw; max_idx = j; min_size = data_size(s); min_iv_offset = p.offset_in_bytes();
*** 773,789 **** MemNode* s = memops.at(j)->as_Mem(); if (s->is_Load()) { int vw = vector_width_in_bytes(s); assert(vw > 1, "sanity"); SWPointer p(s, this, NULL, false); ! if (cmp_ct.at(j) > max_ct || ! cmp_ct.at(j) == max_ct && ! (vw > max_vw || ! vw == max_vw && ! (data_size(s) < min_size || ! data_size(s) == min_size && ! (p.offset_in_bytes() < min_iv_offset)))) { max_ct = cmp_ct.at(j); max_vw = vw; max_idx = j; min_size = data_size(s); min_iv_offset = p.offset_in_bytes(); --- 776,792 ---- MemNode* s = memops.at(j)->as_Mem(); if (s->is_Load()) { int vw = vector_width_in_bytes(s); assert(vw > 1, "sanity"); SWPointer p(s, this, NULL, false); ! if ( cmp_ct.at(j) > max_ct || ! (cmp_ct.at(j) == max_ct && ! ( vw > max_vw || ! (vw == max_vw && ! ( data_size(s) < min_size || ! (data_size(s) == min_size && ! p.offset_in_bytes() < min_iv_offset)))))) { max_ct = cmp_ct.at(j); max_vw = vw; max_idx = j; min_size = data_size(s); min_iv_offset = p.offset_in_bytes();
*** 923,933 **** void SuperWord::dependence_graph() { CountedLoopNode *cl = lpt()->_head->as_CountedLoop(); // First, assign a dependence node to each memory node for (int i = 0; i < _block.length(); i++ ) { Node *n = _block.at(i); ! if (n->is_Mem() || n->is_Phi() && n->bottom_type() == Type::MEMORY) { _dg.make_node(n); } } // For each memory slice, create the dependences --- 926,936 ---- void SuperWord::dependence_graph() { CountedLoopNode *cl = lpt()->_head->as_CountedLoop(); // First, assign a dependence node to each memory node for (int i = 0; i < _block.length(); i++ ) { Node *n = _block.at(i); ! if (n->is_Mem() || (n->is_Phi() && n->bottom_type() == Type::MEMORY)) { _dg.make_node(n); } } // For each memory slice, create the dependences
*** 1743,1754 **** Node* in1 = cmpd0->in(1); Node* in2 = cmpd0->in(2); Node_List* in1_pk = _sw->my_pack(in1); Node_List* in2_pk = _sw->my_pack(in2); ! if (in1_pk != NULL && in1_pk->size() != cmpd_pk->size() ! || in2_pk != NULL && in2_pk->size() != cmpd_pk->size() ) { return false; } // test if "all" in1 are in the same pack or the same node if (in1_pk == NULL) { --- 1746,1757 ---- Node* in1 = cmpd0->in(1); Node* in2 = cmpd0->in(2); Node_List* in1_pk = _sw->my_pack(in1); Node_List* in2_pk = _sw->my_pack(in2); ! if ( (in1_pk != NULL && in1_pk->size() != cmpd_pk->size()) ! || (in2_pk != NULL && in2_pk->size() != cmpd_pk->size()) ) { return false; } // test if "all" in1 are in the same pack or the same node if (in1_pk == NULL) {
*** 4036,4046 **** _done = false; if (_n->is_Load()) { _next_idx = 0; _end_idx = _n->outcnt(); _dep_next = dg.dep(_n)->out_head(); ! } else if (_n->is_Mem() || _n->is_Phi() && _n->bottom_type() == Type::MEMORY) { _next_idx = 0; _end_idx = 0; _dep_next = dg.dep(_n)->out_head(); } else { _next_idx = 0; --- 4039,4049 ---- _done = false; if (_n->is_Load()) { _next_idx = 0; _end_idx = _n->outcnt(); _dep_next = dg.dep(_n)->out_head(); ! } else if (_n->is_Mem() || (_n->is_Phi() && _n->bottom_type() == Type::MEMORY)) { _next_idx = 0; _end_idx = 0; _dep_next = dg.dep(_n)->out_head(); } else { _next_idx = 0;
< prev index next >