use global flag 0.0 to control unstructured simple block.
authorLuo Xionghu <xionghu.luo@intel.com>
Fri, 17 Oct 2014 03:33:23 +0000 (11:33 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Thu, 23 Oct 2014 01:15:09 +0000 (09:15 +0800)
commit2edb7451a8f92295f79e29ef16740b5cd16127f2
treeef19452c3bc4594ecfd38af25d36fca9ec152b4c
parent8fe98a5e87f7f06176b29ddfcd9f62d0fc280d60
use global flag 0.0 to control unstructured simple block.

filter the simple block out and replace the if/endif with global flag
to control.

v2: fix the luxmark sala performance degression due to extern flag in a
BRA instruction.

v3: fix compiler_switch regression, LOAD/STORE instruction could
call replaceSrc/replaceDst to generate 2 extra MOV instruction; exclude
the scalar instructions since they don't have prediction.

this patch is somewhat dangerous to change the instruction structure of block,
will add sanity check after emitInstructionStream to assert if illegally
modified.

Signed-off-by: Luo Xionghu <xionghu.luo@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@intel.com>
backend/src/backend/gen_insn_selection.cpp
backend/src/backend/gen_insn_selection.hpp
backend/src/backend/gen_reg_allocation.cpp