353 |
353 |
354 //------------------------------LoadVectorNode--------------------------------- |
354 //------------------------------LoadVectorNode--------------------------------- |
355 // Load Vector from memory |
355 // Load Vector from memory |
356 class LoadVectorNode : public LoadNode { |
356 class LoadVectorNode : public LoadNode { |
357 public: |
357 public: |
358 LoadVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeVect* vt) |
358 LoadVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeVect* vt, ControlDependency control_dependency = LoadNode::DependsOnlyOnTest) |
359 : LoadNode(c, mem, adr, at, vt, MemNode::unordered) { |
359 : LoadNode(c, mem, adr, at, vt, MemNode::unordered, control_dependency) { |
360 init_class_id(Class_LoadVector); |
360 init_class_id(Class_LoadVector); |
361 } |
361 } |
362 |
362 |
363 const TypeVect* vect_type() const { return type()->is_vect(); } |
363 const TypeVect* vect_type() const { return type()->is_vect(); } |
364 uint length() const { return vect_type()->length(); } // Vector length |
364 uint length() const { return vect_type()->length(); } // Vector length |
370 virtual int memory_size() const { return vect_type()->length_in_bytes(); } |
370 virtual int memory_size() const { return vect_type()->length_in_bytes(); } |
371 |
371 |
372 virtual int store_Opcode() const { return Op_StoreVector; } |
372 virtual int store_Opcode() const { return Op_StoreVector; } |
373 |
373 |
374 static LoadVectorNode* make(Compile* C, int opc, Node* ctl, Node* mem, |
374 static LoadVectorNode* make(Compile* C, int opc, Node* ctl, Node* mem, |
375 Node* adr, const TypePtr* atyp, uint vlen, BasicType bt); |
375 Node* adr, const TypePtr* atyp, uint vlen, BasicType bt, |
|
376 ControlDependency control_dependency = LoadNode::DependsOnlyOnTest); |
376 }; |
377 }; |
377 |
378 |
378 //------------------------------StoreVectorNode-------------------------------- |
379 //------------------------------StoreVectorNode-------------------------------- |
379 // Store Vector to memory |
380 // Store Vector to memory |
380 class StoreVectorNode : public StoreNode { |
381 class StoreVectorNode : public StoreNode { |