< prev index next >

src/hotspot/share/opto/memnode.hpp

Print this page
@@ -871,34 +871,46 @@
  // load-locked.  Sets flags for success or failure of the store.
  class StorePConditionalNode : public LoadStoreConditionalNode {
  public:
    StorePConditionalNode( Node *c, Node *mem, Node *adr, Node *val, Node *ll ) : LoadStoreConditionalNode(c, mem, adr, val, ll) { }
    virtual int Opcode() const;
+ #ifdef RISCV
+   virtual uint ideal_reg() const { return Op_RegI; }
+ #else
    // Produces flags
    virtual uint ideal_reg() const { return Op_RegFlags; }
+ #endif
  };
  
  //------------------------------StoreIConditionalNode---------------------------
  // Conditionally store int to memory, if no change since prior
  // load-locked.  Sets flags for success or failure of the store.
  class StoreIConditionalNode : public LoadStoreConditionalNode {
  public:
    StoreIConditionalNode( Node *c, Node *mem, Node *adr, Node *val, Node *ii ) : LoadStoreConditionalNode(c, mem, adr, val, ii) { }
    virtual int Opcode() const;
+ #ifdef RISCV
+   virtual uint ideal_reg() const { return Op_RegI; }
+ #else
    // Produces flags
    virtual uint ideal_reg() const { return Op_RegFlags; }
+ #endif
  };
  
  //------------------------------StoreLConditionalNode---------------------------
  // Conditionally store long to memory, if no change since prior
  // load-locked.  Sets flags for success or failure of the store.
  class StoreLConditionalNode : public LoadStoreConditionalNode {
  public:
    StoreLConditionalNode( Node *c, Node *mem, Node *adr, Node *val, Node *ll ) : LoadStoreConditionalNode(c, mem, adr, val, ll) { }
    virtual int Opcode() const;
+ #ifdef RISCV
+   virtual uint ideal_reg() const { return Op_RegI; }
+ #else
    // Produces flags
    virtual uint ideal_reg() const { return Op_RegFlags; }
+ #endif
  };
  
  class CompareAndSwapNode : public LoadStoreConditionalNode {
  private:
    const MemNode::MemOrd _mem_ord;
< prev index next >