RFR: 8270366: C2: Add associative rule to add/sub node

Zhengyu Gu zgu at openjdk.java.net
Tue Jul 13 12:31:14 UTC 2021


Please review this small patch that add associative rule to add/sub node, that eliminates a multiply instruction.

e.g.

private static int assocInt(int a, int b, int c) {
  return a * c + b * c;
}


x86_64:
Before:

  0x00007fda1506152c:   imul   %ecx,%esi
  0x00007fda1506152f:   imul   %ecx,%edx
  0x00007fda15061532:   mov    %esi,%eax
  0x00007fda15061534:   add    %edx,%eax                    ;*iadd {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestAssoc::assocInt at 6 (line 9)


After:

  0x00007fc1c078d52c:   add    %edx,%esi
  0x00007fc1c078d52e:   mov    %ecx,%eax
  0x00007fc1c078d530:   imul   %esi,%eax                    ;*iadd {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestAssoc::assocInt at 6 (line 9)

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

Commit messages:
 - sub
 - add

Changes: https://git.openjdk.java.net/jdk/pull/4765/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4765&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8270366
  Stats: 68 lines in 2 files changed: 68 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4765.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4765/head:pull/4765

PR: https://git.openjdk.java.net/jdk/pull/4765


More information about the hotspot-compiler-dev mailing list