You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by Apache Wiki <wi...@apache.org> on 2008/05/08 12:44:08 UTC

[Harmony Wiki] Update of "Jitrino OPT/rce" by Mikhail Fursov

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Harmony Wiki" for change notification.

The following page has been changed by Mikhail Fursov:
http://wiki.apache.org/harmony/Jitrino_OPT/rce

New page:
''' 'rce' ''' transformation performs removing comparisons following instructions which affected flags in the same way as CMP. In some cases instructions can be reordered for resolving comparison as available for removing
[[BR]]
The algorithm takes one-pass over CFG.
[[BR]]
[[BR]]
This transformer ensures that
[[BR]]
    {{{1)}}} All conditional instructions get the same EFLAGS value as before transformation
[[BR]]
    {{{2)}}} All reordered instructions do the same effects as before transformation
[[BR]]
    For example:
[[BR]]
    Original code piece:
{{{
       I29: t50.:int32 (ID:v15(EFLGS):uint32) =AND .t28:int32,t49(1):int32 
       I30: (AD:v1:int32)  = CopyPseudoInst (AU:t48:int32) 
       I31: (AD:v2:int32)  = CopyPseudoInst (AU:t25:int32) 
       I32: (AD:v3:int8[]) = CopyPseudoInst (AU:t38:int8[]) 
       I33: (ID:v15(EFLGS):uint32) = CMP .t50:int32,t51(0):int32 
       I34: JNZ BB_12 t52(0):intptr (IU:v15(EFLGS):uint32) 
 }}}


   After optimization:
{{{
       I29: t50:int32 (ID:v15(EFLGS):uint32) =AND .t28:int32,t49(1):int32 
       I30: (AD:v1:int32)  = CopyPseudoInst (AU:t48:int32) 
       I31: (AD:v2:int32)  = CopyPseudoInst (AU:t25:int32) 
       I32: (AD:v3:int8[]) = CopyPseudoInst (AU:t38:int8[]) 
       I34: JNZ BB_12 t52(0):intptr (IU:v15(EFLGS):uint32) 
}}}
 
   The implementation of this transformer is located in Ia32RCE.cpp