382 // Construct reverse postorder list of block members
383 bool construct_bb();
384 // Initialize per node info
385 void initialize_bb();
386 // Insert n into block after pos
387 void bb_insert_after(Node* n, int pos);
388 // Compute max depth for expressions from beginning of block
389 void compute_max_depth();
390 // Compute necessary vector element type for expressions
391 void compute_vector_element_type();
392 // Are s1 and s2 in a pack pair and ordered as s1,s2?
393 bool in_packset(Node* s1, Node* s2);
394 // Is s in pack p?
395 Node_List* in_pack(Node* s, Node_List* p);
396 // Remove the pack at position pos in the packset
397 void remove_pack_at(int pos);
398 // Return the node executed first in pack p.
399 Node* executed_first(Node_List* p);
400 // Return the node executed last in pack p.
401 Node* executed_last(Node_List* p);
402 // Alignment within a vector memory reference
403 int memory_alignment(MemNode* s, int iv_adjust);
404 // (Start, end] half-open range defining which operands are vector
405 void vector_opd_range(Node* n, uint* start, uint* end);
406 // Smallest type containing range of values
407 const Type* container_type(Node* n);
408 // Adjust pre-loop limit so that in main loop, a load/store reference
409 // to align_to_ref will be a position zero in the vector.
410 void align_initial_loop_index(MemNode* align_to_ref);
411 // Find pre loop end from main loop. Returns null if none.
412 CountedLoopEndNode* get_pre_loop_end(CountedLoopNode *cl);
413 // Is the use of d1 in u1 at the same operand position as d2 in u2?
414 bool opnd_positions_match(Node* d1, Node* u1, Node* d2, Node* u2);
415 void init();
416
417 // print methods
418 void print_packset();
419 void print_pack(Node_List* p);
420 void print_bb();
421 void print_stmt(Node* s);
|
382 // Construct reverse postorder list of block members
383 bool construct_bb();
384 // Initialize per node info
385 void initialize_bb();
386 // Insert n into block after pos
387 void bb_insert_after(Node* n, int pos);
388 // Compute max depth for expressions from beginning of block
389 void compute_max_depth();
390 // Compute necessary vector element type for expressions
391 void compute_vector_element_type();
392 // Are s1 and s2 in a pack pair and ordered as s1,s2?
393 bool in_packset(Node* s1, Node* s2);
394 // Is s in pack p?
395 Node_List* in_pack(Node* s, Node_List* p);
396 // Remove the pack at position pos in the packset
397 void remove_pack_at(int pos);
398 // Return the node executed first in pack p.
399 Node* executed_first(Node_List* p);
400 // Return the node executed last in pack p.
401 Node* executed_last(Node_List* p);
402 static LoadNode::ControlDependency control_dependency(Node_List* p);
403 // Alignment within a vector memory reference
404 int memory_alignment(MemNode* s, int iv_adjust);
405 // (Start, end] half-open range defining which operands are vector
406 void vector_opd_range(Node* n, uint* start, uint* end);
407 // Smallest type containing range of values
408 const Type* container_type(Node* n);
409 // Adjust pre-loop limit so that in main loop, a load/store reference
410 // to align_to_ref will be a position zero in the vector.
411 void align_initial_loop_index(MemNode* align_to_ref);
412 // Find pre loop end from main loop. Returns null if none.
413 CountedLoopEndNode* get_pre_loop_end(CountedLoopNode *cl);
414 // Is the use of d1 in u1 at the same operand position as d2 in u2?
415 bool opnd_positions_match(Node* d1, Node* u1, Node* d2, Node* u2);
416 void init();
417
418 // print methods
419 void print_packset();
420 void print_pack(Node_List* p);
421 void print_bb();
422 void print_stmt(Node* s);
|