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

x86-32: Incorrect predicates for cmov instruct transforms with UseSSE

XMLWordPrintable

    • b05
    • x86

      In x86_32.ad there are a set of instruct transforms for cmov, whose predicates are of the form

      `test(UseSSE) && expr1 || expr2`

      Since `&&` has higher precedence than `||`, the implicit precedence is equivalent to

      `(test(UseSSE) && expr1) || expr2`

      But the intented grouping is

      `test(UseSSE) && (expr1 || expr2)`

      The affected transforms are for cmovXXX_reg_LEGT, cmovXXX_reg_EQNE, and cmovXXX_reg_LTGE.

      There are other transforms nearby that have similar predicates involving UseSSE, but properly grouped as suggested above by having the necessary parens.

            kbarrett Kim Barrett
            kbarrett Kim Barrett
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: