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.

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

              Created:
              Updated:
              Resolved: