org.jikesrvm.compilers.opt.lir2mir.ia32
Class ComplexLIR2MIRExpansion

java.lang.Object
  extended by org.jikesrvm.compilers.opt.ir.IRTools
      extended by org.jikesrvm.compilers.opt.lir2mir.ia32.ComplexLIR2MIRExpansion
Direct Known Subclasses:
ArchitectureSpecificOpt.ComplexLIR2MIRExpansion

public abstract class ComplexLIR2MIRExpansion
extends IRTools

Handles the conversion from LIR to MIR of operators whose expansion requires the introduction of new control flow (new basic blocks).


Constructor Summary
ComplexLIR2MIRExpansion()
           
 
Method Summary
private static void basic_long_ifcmp(Instruction s, IR ir, ConditionOperand cond, Register xh, Register xl, Operand yh, Operand yl)
           
static void convert(IR ir)
          Converts the given IR to low level IA32 IR.
private static Instruction double_2int(Instruction s, IR ir)
           
private static Instruction double_2long(Instruction s, IR ir)
           
private static Instruction float_2int(Instruction s, IR ir)
           
private static Instruction float_2long(Instruction s, IR ir)
           
private static Instruction fp_ifcmp(Instruction s)
           
private static Instruction long_ifcmp_imm(Instruction s, IR ir)
           
private static Instruction long_ifcmp(Instruction s, IR ir)
           
private static Instruction long_mul(Instruction s, IR ir)
           
private static Instruction long_shl(Instruction s, IR ir)
           
private static Instruction long_shr(Instruction s, IR ir)
           
private static Instruction long_ushr(Instruction s, IR ir)
           
 
Methods inherited from class org.jikesrvm.compilers.opt.ir.IRTools
A, AC, AC, CPOS, CR, D, DC, defDoublesAsUse, definedIn, F, FC, getCondMoveOp, getDefaultOperand, getLoadOp, getLoadOp, getMoveOp, getStoreOp, getStoreOp, I, IC, insertInstructionsAfter, L, LC, makeBlockOnEdge, mayBeVolatileFieldLoad, moveInstruction, moveIntoRegister, moveIntoRegister, nonPEIGC, TG, usedIn, useDoublesAsDef
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ComplexLIR2MIRExpansion

public ComplexLIR2MIRExpansion()
Method Detail

convert

public static void convert(IR ir)
Converts the given IR to low level IA32 IR.

Parameters:
ir - IR to convert

float_2int

private static Instruction float_2int(Instruction s,
                                      IR ir)

float_2long

private static Instruction float_2long(Instruction s,
                                       IR ir)

double_2int

private static Instruction double_2int(Instruction s,
                                       IR ir)

double_2long

private static Instruction double_2long(Instruction s,
                                        IR ir)

long_shl

private static Instruction long_shl(Instruction s,
                                    IR ir)

long_shr

private static Instruction long_shr(Instruction s,
                                    IR ir)

long_ushr

private static Instruction long_ushr(Instruction s,
                                     IR ir)

long_mul

private static Instruction long_mul(Instruction s,
                                    IR ir)

long_ifcmp

private static Instruction long_ifcmp(Instruction s,
                                      IR ir)

long_ifcmp_imm

private static Instruction long_ifcmp_imm(Instruction s,
                                          IR ir)

basic_long_ifcmp

private static void basic_long_ifcmp(Instruction s,
                                     IR ir,
                                     ConditionOperand cond,
                                     Register xh,
                                     Register xl,
                                     Operand yh,
                                     Operand yl)

fp_ifcmp

private static Instruction fp_ifcmp(Instruction s)