4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #include "incls/_precompiled.incl" 25 #include "incls/_superword.cpp.incl" 26 27 // 28 // S U P E R W O R D T R A N S F O R M 29 //============================================================================= 30 31 //------------------------------SuperWord--------------------------- 32 SuperWord::SuperWord(PhaseIdealLoop* phase) : 33 _phase(phase), 34 _igvn(phase->_igvn), 35 _arena(phase->C->comp_arena()), 36 _packset(arena(), 8, 0, NULL), // packs for the current block 37 _bb_idx(arena(), (int)(1.10 * phase->C->unique()), 0, 0), // node idx to index in bb 38 _block(arena(), 8, 0, NULL), // nodes in current block 39 _data_entry(arena(), 8, 0, NULL), // nodes with all inputs from outside 40 _mem_slice_head(arena(), 8, 0, NULL), // memory slice heads 41 _mem_slice_tail(arena(), 8, 0, NULL), // memory slice tails 42 _node_info(arena(), 8, 0, SWNodeInfo::initial), // info needed per node 43 _align_to_ref(NULL), // memory reference to align vectors to 44 _disjoint_ptrs(arena(), 8, 0, OrderedPair::initial), // runtime disambiguated pointer pairs 45 _dg(_arena), // dependence graph | 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #include "precompiled.hpp" 25 #include "compiler/compileLog.hpp" 26 #include "libadt/vectset.hpp" 27 #include "memory/allocation.inline.hpp" 28 #include "opto/addnode.hpp" 29 #include "opto/callnode.hpp" 30 #include "opto/divnode.hpp" 31 #include "opto/matcher.hpp" 32 #include "opto/memnode.hpp" 33 #include "opto/mulnode.hpp" 34 #include "opto/opcodes.hpp" 35 #include "opto/superword.hpp" 36 #include "opto/vectornode.hpp" 37 38 // 39 // S U P E R W O R D T R A N S F O R M 40 //============================================================================= 41 42 //------------------------------SuperWord--------------------------- 43 SuperWord::SuperWord(PhaseIdealLoop* phase) : 44 _phase(phase), 45 _igvn(phase->_igvn), 46 _arena(phase->C->comp_arena()), 47 _packset(arena(), 8, 0, NULL), // packs for the current block 48 _bb_idx(arena(), (int)(1.10 * phase->C->unique()), 0, 0), // node idx to index in bb 49 _block(arena(), 8, 0, NULL), // nodes in current block 50 _data_entry(arena(), 8, 0, NULL), // nodes with all inputs from outside 51 _mem_slice_head(arena(), 8, 0, NULL), // memory slice heads 52 _mem_slice_tail(arena(), 8, 0, NULL), // memory slice tails 53 _node_info(arena(), 8, 0, SWNodeInfo::initial), // info needed per node 54 _align_to_ref(NULL), // memory reference to align vectors to 55 _disjoint_ptrs(arena(), 8, 0, OrderedPair::initial), // runtime disambiguated pointer pairs 56 _dg(_arena), // dependence graph |