Mercurial > hg > graal-compiler
comparison src/share/vm/opto/vectornode.hpp @ 14429:2113136690bc
8024921: PPC64 (part 113): Extend Load and Store nodes to know about memory ordering
Summary: Add a field to C2 LoadNode and StoreNode classes which indicates whether the load/store should do an acquire/release on platforms which support it.
Reviewed-by: kvn
author | goetz |
---|---|
date | Fri, 15 Nov 2013 11:05:32 -0800 |
parents | 859c45fb8cea |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14427:eb178e97560c | 14429:2113136690bc |
---|---|
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) |
359 : LoadNode(c, mem, adr, at, vt) { | 359 : LoadNode(c, mem, adr, at, vt, MemNode::unordered) { |
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 |
378 //------------------------------StoreVectorNode-------------------------------- | 378 //------------------------------StoreVectorNode-------------------------------- |
379 // Store Vector to memory | 379 // Store Vector to memory |
380 class StoreVectorNode : public StoreNode { | 380 class StoreVectorNode : public StoreNode { |
381 public: | 381 public: |
382 StoreVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val) | 382 StoreVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val) |
383 : StoreNode(c, mem, adr, at, val) { | 383 : StoreNode(c, mem, adr, at, val, MemNode::unordered) { |
384 assert(val->is_Vector() || val->is_LoadVector(), "sanity"); | 384 assert(val->is_Vector() || val->is_LoadVector(), "sanity"); |
385 init_class_id(Class_StoreVector); | 385 init_class_id(Class_StoreVector); |
386 } | 386 } |
387 | 387 |
388 const TypeVect* vect_type() const { return in(MemNode::ValueIn)->bottom_type()->is_vect(); } | 388 const TypeVect* vect_type() const { return in(MemNode::ValueIn)->bottom_type()->is_vect(); } |