< prev index next >

src/share/vm/opto/superword.hpp

Print this page




 187 
 188 
 189 // ========================= SuperWord =====================
 190 
 191 // -----------------------------SWNodeInfo---------------------------------
 192 // Per node info needed by SuperWord
 193 class SWNodeInfo VALUE_OBJ_CLASS_SPEC {
 194  public:
 195   int         _alignment; // memory alignment for a node
 196   int         _depth;     // Max expression (DAG) depth from block start
 197   const Type* _velt_type; // vector element type
 198   Node_List*  _my_pack;   // pack containing this node
 199 
 200   SWNodeInfo() : _alignment(-1), _depth(0), _velt_type(NULL), _my_pack(NULL) {}
 201   static const SWNodeInfo initial;
 202 };
 203 
 204 // -----------------------------SuperWord---------------------------------
 205 // Transforms scalar operations into packed (superword) operations.
 206 class SuperWord : public ResourceObj {

 207  private:
 208   PhaseIdealLoop* _phase;
 209   Arena*          _arena;
 210   PhaseIterGVN   &_igvn;
 211 
 212   enum consts { top_align = -1, bottom_align = -666 };
 213 
 214   GrowableArray<Node_List*> _packset;    // Packs for the current block
 215 
 216   GrowableArray<int> _bb_idx;            // Map from Node _idx to index within block
 217 
 218   GrowableArray<Node*> _block;           // Nodes in current block
 219   GrowableArray<Node*> _data_entry;      // Nodes with all inputs from outside
 220   GrowableArray<Node*> _mem_slice_head;  // Memory slice head nodes
 221   GrowableArray<Node*> _mem_slice_tail;  // Memory slice tail nodes
 222 
 223   GrowableArray<SWNodeInfo> _node_info;  // Info needed per node
 224 
 225   MemNode* _align_to_ref;                // Memory reference that pre-loop will align to
 226 




 187 
 188 
 189 // ========================= SuperWord =====================
 190 
 191 // -----------------------------SWNodeInfo---------------------------------
 192 // Per node info needed by SuperWord
 193 class SWNodeInfo VALUE_OBJ_CLASS_SPEC {
 194  public:
 195   int         _alignment; // memory alignment for a node
 196   int         _depth;     // Max expression (DAG) depth from block start
 197   const Type* _velt_type; // vector element type
 198   Node_List*  _my_pack;   // pack containing this node
 199 
 200   SWNodeInfo() : _alignment(-1), _depth(0), _velt_type(NULL), _my_pack(NULL) {}
 201   static const SWNodeInfo initial;
 202 };
 203 
 204 // -----------------------------SuperWord---------------------------------
 205 // Transforms scalar operations into packed (superword) operations.
 206 class SuperWord : public ResourceObj {
 207  friend class SWPointer;
 208  private:
 209   PhaseIdealLoop* _phase;
 210   Arena*          _arena;
 211   PhaseIterGVN   &_igvn;
 212 
 213   enum consts { top_align = -1, bottom_align = -666 };
 214 
 215   GrowableArray<Node_List*> _packset;    // Packs for the current block
 216 
 217   GrowableArray<int> _bb_idx;            // Map from Node _idx to index within block
 218 
 219   GrowableArray<Node*> _block;           // Nodes in current block
 220   GrowableArray<Node*> _data_entry;      // Nodes with all inputs from outside
 221   GrowableArray<Node*> _mem_slice_head;  // Memory slice head nodes
 222   GrowableArray<Node*> _mem_slice_tail;  // Memory slice tail nodes
 223 
 224   GrowableArray<SWNodeInfo> _node_info;  // Info needed per node
 225 
 226   MemNode* _align_to_ref;                // Memory reference that pre-loop will align to
 227 


< prev index next >