Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8171092

C1's Math.fma() intrinsic doesn't correctly process its inputs

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 9
    • 9
    • hotspot
    • None
    • b151

      3rd input of Math.fma() is processed as a temp not as an input:

      diff --git a/src/share/vm/c1/c1_LIR.cpp b/src/share/vm/c1/c1_LIR.cpp
      --- a/src/share/vm/c1/c1_LIR.cpp
      +++ b/src/share/vm/c1/c1_LIR.cpp
      @@ -677,9 +677,7 @@
       
       // LIR_Op3
           case lir_idiv:
      - case lir_irem:
      - case lir_fmad:
      - case lir_fmaf: {
      + case lir_irem: {
             assert(op->as_Op3() != NULL, "must be");
             LIR_Op3* op3= (LIR_Op3*)op;
       
      @@ -697,6 +695,17 @@
             break;
           }
       
      + case lir_fmad:
      + case lir_fmaf: {
      + assert(op->as_Op3() != NULL, "must be");
      + LIR_Op3* op3= (LIR_Op3*)op;
      + assert(op3->_info == NULL, "no info");
      + do_input(op3->_opr1);
      + do_input(op3->_opr2);
      + do_input(op3->_opr3);
      + do_output(op3->_result);
      + break;
      + }
       
       // LIR_OpJavaCall
           case lir_static_call:

            roland Roland Westrelin
            roland Roland Westrelin
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: