private int? constantValue(MilocInstruction s, Register r) { var d = defs.GetDef(s, r.IntVal); if (d.Count != 1) return null; var load = d[0] as LoadiInstruction; if (load == null) return null; if (!powersOfTwoToExponent.ContainsKey(load.Immed0)) return null; return powersOfTwoToExponent[load.Immed0]; }
public SubInstruction( Register regDest0,Register regSource0,Register regSource1 ) : base("sub") { this.RegDest0 = regDest0;this.RegSource0 = regSource0;this.RegSource1 = regSource1; }
public XoriInstruction( Register regDest0,Register regSource0,int immed0 ) : base("xor") { this.RegDest0 = regDest0;this.RegSource0 = regSource0;this.Immed0 = immed0; }
public AddInstruction( Register regDest0,Register regSource0,Register regSource1 ) : base("add") { this.RegDest0 = regDest0;this.RegSource0 = regSource0;this.RegSource1 = regSource1; }
public StoreInstruction( Register regSource0,Register regSource1 ) : base("store") { this.RegSource0 = regSource0;this.RegSource1 = regSource1; }
public OrInstruction( Register regDest0,Register regSource0,Register regSource1 ) : base("or") { this.RegDest0 = regDest0;this.RegSource0 = regSource0;this.RegSource1 = regSource1; }
public RetvalueInstruction( Register regSource0 ) : base("retvalue") { this.RegSource0 = regSource0; }
public MulInstruction( Register regDest0,Register regSource0,Register regSource1 ) : base("mul") { this.RegDest0 = regDest0;this.RegSource0 = regSource0;this.RegSource1 = regSource1; }
public LoadInstruction( Register regDest0,Register regSource0 ) : base("load") { this.RegDest0 = regDest0;this.RegSource0 = regSource0; }
public LoadiInstruction( Register regDest0,int immed0 ) : base("loadi") { this.RegDest0 = regDest0;this.Immed0 = immed0; }
public BrcondInstruction( Register regSource0,Label label0,Label label1 ) : base("br") { this.RegSource0 = regSource0;this.Label0 = label0;this.Label1 = label1; }
public AllocaInstruction( Register regDest0 ) : base("alloca") { this.RegDest0 = regDest0; }