RFR: 8333890: Fatal error in auto-vectorizer with float16 kernel. [v2]

Emanuel Peter epeter at openjdk.org
Mon Jul 8 10:50:38 UTC 2024


On Mon, 8 Jul 2024 06:41:22 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> Good.
>
> Thanks @vnkozlov for review and approval.

@jatin-bhateja It seems we are using `TypeInt::SHORT`. But this is just a `INT_T` in the end. Hmm.


//------------------------------ConvF2HFNode------------------------------------
// Convert Float to Halffloat
class ConvF2HFNode : public ConvertNode {
  public:
  ConvF2HFNode(Node* in1) : ConvertNode(TypeInt::SHORT, in1) {}
  virtual int Opcode() const;
  virtual const Type* in_type() const { return TypeInt::FLOAT; }
  virtual const Type* Value(PhaseGVN* phase) const;
};


This seems to somewhat clash with an earlier comment here:

class ConvertNode : public TypeNode {
protected:
  ConvertNode(const Type* t, Node* input) : TypeNode(t, 2) {
    init_class_id(Class_Convert);
    init_req(1, input);
  }
public:
  virtual const Type* in_type() const = 0;
  virtual uint ideal_reg() const;

  // Create a convert node for a given input and output type.
  // Conversions to and from half float are specified via T_SHORT.
  static Node* create_convert(BasicType source, BasicType target, Node* input);
};

-------------

PR Comment: https://git.openjdk.org/jdk/pull/20062#issuecomment-2213669098


More information about the hotspot-compiler-dev mailing list