[Beignet] [PATCH 1/8] GBE: refine Phi copy interfering check.
Zhigang Gong
zhigang.gong at intel.com
Tue Sep 22 21:44:47 PDT 2015
If the PHI source register's definition instruction uses the
phi register, it is not a interfere. For an example:
MOV %phi, %phicopy
...
ADD %phiSrcDef, %phi, tmp
...
MOV %phicopy, %phiSrcDef
...
The %phi and the %phiSrcDef is not interering each other.
Simply advancing the start of the check to next instruction is
enough to get better result. For some special case, this patch
could get significant performance boost.
Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
---
backend/src/llvm/llvm_gen_backend.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp
index 4905415..38c63ce 100644
--- a/backend/src/llvm/llvm_gen_backend.cpp
+++ b/backend/src/llvm/llvm_gen_backend.cpp
@@ -2220,6 +2220,8 @@ namespace gbe
ir::BasicBlock::const_iterator iter = ir::BasicBlock::const_iterator(phiCopySrcDefInsn);
ir::BasicBlock::const_iterator iterE = bb->end();
+
+ iter++;
// check no use of phi in this basicblock between [phiCopySrc def, bb end]
bool phiPhiCopySrcInterfere = false;
while (iter != iterE) {
--
1.9.1
More information about the Beignet
mailing list