RFR: 8273454: C2: Transform (-a)*(-b) into a*b

Zhengyu Gu zgu at openjdk.java.net
Tue Sep 7 22:48:29 UTC 2021


The transformation reduce instructions in generated code.

### x86_64:

Before:
```  
  0x00007fb92c78b3ac:   neg    %esi
  0x00007fb92c78b3ae:   neg    %edx
  0x00007fb92c78b3b0:   mov    %esi,%eax
  0x00007fb92c78b3b2:   imul   %edx,%eax                    ;*imul {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestSub::runSub at 4 (line 9)

After:

                                                           ; - TestSub::runSub at -1 (line 9)
  0x00007fc8c05b74ac:   mov    %esi,%eax
  0x00007fc8c05b74ae:   imul   %edx,%eax                    ;*imul {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestSub::runSub at 4 (line 9)



### AArch64:
Before:

 0x0000ffff814b4a70:   neg     w11, w1
 0x0000ffff814b4a74:   mneg    w0, w2, w11                 ;*imul {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestSub::runSub at 4 (line 9)


After:

 0x0000ffff794a67f0:   mul     w0, w1, w2                  ;*imul {reexecute=0 rethrow=0 return_oop=0}
                                                            ; - TestSub::runSub at 4 (line 9)

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

Commit messages:
 - Merge branch 'master' into JDK-8273454-neg-mul
 - v1
 - v0

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

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


More information about the hotspot-compiler-dev mailing list