diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-06-02 16:11:14 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-06-02 16:11:14 +0000 |
commit | 4dc85eb75a7d7a6f0e467fa92f48bed1effdb528 (patch) | |
tree | 896ae82feb745537249088d05897bda63d9ce16b /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 5746e7356ac01803a8576effd587dffd308a279e (diff) | |
download | llvm-4dc85eb75a7d7a6f0e467fa92f48bed1effdb528.zip llvm-4dc85eb75a7d7a6f0e467fa92f48bed1effdb528.tar.gz llvm-4dc85eb75a7d7a6f0e467fa92f48bed1effdb528.tar.bz2 |
[InstCombine] improve perf by not creating a known non-canonical instruction
Op1 (RHS) is a constant, so putting it on the LHS makes us churn through visitICmp
an extra time to canonicalize it:
INSTCOMBINE ITERATION #1 on cmpnot
IC: ADDING: 3 instrs to worklist
IC: Visiting: %notx = xor i8 %x, -1
IC: Visiting: %cmp = icmp sgt i8 %notx, 42
IC: Old = %cmp = icmp sgt i8 %notx, 42
New = <badref> = icmp sgt i8 -43, %x
IC: ADD: %cmp = icmp sgt i8 -43, %x
IC: ERASE %1 = icmp sgt i8 %notx, 42
IC: ADD: %notx = xor i8 %x, -1
IC: DCE: %notx = xor i8 %x, -1
IC: ERASE %notx = xor i8 %x, -1
IC: Visiting: %cmp = icmp sgt i8 -43, %x
IC: Mod = %cmp = icmp sgt i8 -43, %x
New = %cmp = icmp slt i8 %x, -43
IC: ADD: %cmp = icmp slt i8 %x, -43
IC: Visiting: %cmp = icmp slt i8 %x, -43
IC: Visiting: ret i1 %cmp
If we create the swapped ICmp directly, we go faster:
INSTCOMBINE ITERATION #1 on cmpnot
IC: ADDING: 3 instrs to worklist
IC: Visiting: %notx = xor i8 %x, -1
IC: Visiting: %cmp = icmp sgt i8 %notx, 42
IC: Old = %cmp = icmp sgt i8 %notx, 42
New = <badref> = icmp slt i8 %x, -43
IC: ADD: %cmp = icmp slt i8 %x, -43
IC: ERASE %1 = icmp sgt i8 %notx, 42
IC: ADD: %notx = xor i8 %x, -1
IC: DCE: %notx = xor i8 %x, -1
IC: ERASE %notx = xor i8 %x, -1
IC: Visiting: %cmp = icmp slt i8 %x, -43
IC: Visiting: ret i1 %cmp
llvm-svn: 304558
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions