coins.simd
Class SimdOpt

java.lang.Object
  extended bycoins.simd.SimdOpt

public class SimdOpt
extends java.lang.Object

Class for SIMD level optimization


Field Summary
static int MAX_SIMD_PARALLEL
          Maximum size of elements in SIMD Parallel instructions
 boolean messageFlag
          Flag of printing out trace informations
 
Constructor Summary
SimdOpt(Function f)
          Constructs a SimdOpt object and initialize bopList,boneList and simdReg.
 
Method Summary
 java.util.Vector allocateSimdReg(java.util.Vector in)
          Allocate SIMD registers.
 java.util.Vector combineSimd(java.util.Vector in)
          Combines SIMD instructions.
 java.util.Vector decompose(java.util.Vector in)
          Decomposes DAG into basic operations(bop).
 boolean defined(Symbol var, LirNode inst)
          Tests if a symbol is defined in an instruction.
 java.util.Vector invoke(BiList live, java.util.Vector in, ReplaceRegNames rrn)
          Invokes methods for SIMD optimization.
 java.util.Vector liveReg(java.util.Vector in)
          Calculate live registers.
 java.util.Vector liveReg(java.util.Vector in, java.util.Vector live)
           
 java.util.Vector restrictInst(java.util.Vector in)
          Applies constraints for instructions and registers.
 boolean used(Symbol var, LirNode inst)
          Tests if a symbol is used in an instruction (LirNode).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_SIMD_PARALLEL

public static final int MAX_SIMD_PARALLEL
Maximum size of elements in SIMD Parallel instructions

See Also:
Constant Field Values

messageFlag

public boolean messageFlag
Flag of printing out trace informations

Constructor Detail

SimdOpt

public SimdOpt(Function f)
Constructs a SimdOpt object and initialize bopList,boneList and simdReg.

Parameters:
f - Function
Method Detail

invoke

public java.util.Vector invoke(BiList live,
                               java.util.Vector in,
                               ReplaceRegNames rrn)
                        throws SimdOptException
Invokes methods for SIMD optimization.

Parameters:
live - ImList,which has liveness information.
in - Vector,which contains LIR instructions as elements.
rrn - ReplaceRegNames, which replaces and has info. of replaced regs
Returns:
Vector, which contains SIMD optiimized LIR instructions.
Throws:
SimdOptException

decompose

public java.util.Vector decompose(java.util.Vector in)
                           throws SimdOptException
Decomposes DAG into basic operations(bop).

Parameters:
in - Vector,which contains DAGs as its elements.
Returns:
Vector, which contains basic operations as its elements.
Throws:
SimdOptException

combineSimd

public java.util.Vector combineSimd(java.util.Vector in)
                             throws SimdOptException
Combines SIMD instructions.

Parameters:
in - Vector, which contains LirNodes as its elements.
Returns:
Vector, which contains combined instructions.
Throws:
SimdOptException

restrictInst

public java.util.Vector restrictInst(java.util.Vector in)
                              throws SimdOptException
Applies constraints for instructions and registers.

Parameters:
in - Vector, which contains combined instructions(LirNodes).
Returns:
Vector, which contains constraints satisfied instructions (LirNodes).
Throws:
SimdOptException

allocateSimdReg

public java.util.Vector allocateSimdReg(java.util.Vector in)
                                 throws SimdOptException
Allocate SIMD registers.

Parameters:
in - Vector, which contains SIMD instructions (LirNodes).
Returns:
Vector, which contains SIMD register-allocated instructions.
Throws:
SimdOptException

liveReg

public java.util.Vector liveReg(java.util.Vector in)
Calculate live registers.

Parameters:
in - Vector, which contains instruction (LirNodes).
Returns:
Vector, which contains vectors of live registers (symbols).

liveReg

public java.util.Vector liveReg(java.util.Vector in,
                                java.util.Vector live)

defined

public boolean defined(Symbol var,
                       LirNode inst)
Tests if a symbol is defined in an instruction.

Parameters:
var - Symbol
inst - LirNode
Returns:
boolean which is true if var is defined in inst and false o.w.

used

public boolean used(Symbol var,
                    LirNode inst)
Tests if a symbol is used in an instruction (LirNode).

Parameters:
var - Symbol which is checked.
inst - LirNode which represents an instruction.
Returns:
boolean which is true if var is used in inst and false otherwise.