|
Subzero: Implementation of "advanced Phi lowering".
Delays Phi lowering until after register allocation. This lets the Phi assignment order take register allocation into account and avoid creating false dependencies.
All edges that lead to Phi instructions are split, and the new node gets mov instructions in the correct topological order, using available physical registers as needed.
This lowering style is controllable under -O2 using -phi-edge-split (enabled by default).
The result is faster translation time (due to fewer temporaries leading to faster liveness analysis and register allocation) as well as better code quality (due to better register allocation and fewer phi-based assignments).
BUG= none
R=jvoung@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=336f6c4a90e7f5ee156bc9a339d80c7def5ddeff
Total comments: 35
Total comments: 14
Total comments: 4
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+830 lines, -109 lines) |
Patch |
 |
M |
pydir/szbuild_spec2k.py
|
View
|
|
1 chunk |
+5 lines, -4 lines |
0 comments
|
Download
|
 |
M |
src/IceCfg.h
|
View
|
|
2 chunks |
+3 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceCfg.cpp
|
View
|
1
2
3
4
5
|
2 chunks |
+87 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceCfgNode.h
|
View
|
|
3 chunks |
+7 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceCfgNode.cpp
|
View
|
1
2
3
4
5
|
9 chunks |
+321 lines, -8 lines |
0 comments
|
Download
|
 |
M |
src/IceDefs.h
|
View
|
|
2 chunks |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceInst.h
|
View
|
1
2
3
4
|
4 chunks |
+22 lines, -3 lines |
0 comments
|
Download
|
 |
M |
src/IceInst.cpp
|
View
|
1
2
3
4
|
5 chunks |
+29 lines, -3 lines |
0 comments
|
Download
|
 |
M |
src/IceInstX8632.h
|
View
|
1
2
3
4
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceInstX8632.cpp
|
View
|
1
2
3
4
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceLiveness.h
|
View
|
|
2 chunks |
+26 lines, -5 lines |
0 comments
|
Download
|
 |
M |
src/IceLiveness.cpp
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceOperand.h
|
View
|
1
2
3
|
4 chunks |
+11 lines, -3 lines |
0 comments
|
Download
|
 |
M |
src/IceOperand.cpp
|
View
|
|
1 chunk |
+55 lines, -30 lines |
0 comments
|
Download
|
 |
M |
src/IceRegAlloc.cpp
|
View
|
|
1 chunk |
+4 lines, -1 line |
0 comments
|
Download
|
 |
M |
src/IceTargetLowering.h
|
View
|
|
2 chunks |
+12 lines, -1 line |
0 comments
|
Download
|
 |
M |
src/IceTargetLowering.cpp
|
View
|
1
2
3
4
|
1 chunk |
+6 lines, -2 lines |
0 comments
|
Download
|
 |
M |
src/IceTargetLoweringX8632.h
|
View
|
|
2 chunks |
+4 lines, -1 line |
0 comments
|
Download
|
 |
M |
src/IceTargetLoweringX8632.cpp
|
View
|
1
2
3
4
5
6
7
|
11 chunks |
+196 lines, -20 lines |
0 comments
|
Download
|
 |
M |
src/IceTimerTree.def
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
src/IceTypes.h
|
View
|
1
2
3
4
5
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
src/IceTypes.cpp
|
View
|
1
2
3
4
5
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
src/llvm2ice.cpp
|
View
|
1
2
3
4
5
6
|
2 chunks |
+10 lines, -10 lines |
0 comments
|
Download
|
 |
M |
tests_lit/llvm2ice_tests/nacl-atomic-cmpxchg-optimization.ll
|
View
|
1
|
3 chunks |
+2 lines, -8 lines |
0 comments
|
Download
|
 |
M |
tests_lit/llvm2ice_tests/simple-loop.ll
|
View
|
1
|
1 chunk |
+9 lines, -8 lines |
0 comments
|
Download
|
Total messages: 14 (1 generated)
|