public IEnumerable <IXILMapping> TryMap(ITransactionSite taSite, XILInstr instr, TypeDescriptor[] operandTypes, TypeDescriptor[] resultTypes) { var fu = taSite.Host; Slicer slicer = fu as Slicer; if (slicer == null) { yield break; } bool isSigned; int inputWidth, hiOffset, loOffset; if (!GetSliceParams(instr, operandTypes, resultTypes, out isSigned, out inputWidth, out hiOffset, out loOffset)) { yield break; } if (slicer.IsSigned != isSigned) { yield break; } if (slicer.InputWidth != inputWidth) { yield break; } if (hiOffset != slicer.HiOffset || loOffset != slicer.LoOffset) { yield break; } yield return(new SlicerXILMapping(slicer)); }
public IXILMapping TryAllocate(Component host, XILInstr instr, TypeDescriptor[] operandTypes, TypeDescriptor[] resultTypes, IProject proj) { bool isSigned; int inputWidth, hiOffset, loOffset; if (!GetSliceParams(instr, operandTypes, resultTypes, out isSigned, out inputWidth, out hiOffset, out loOffset)) { return(null); } if (inputWidth == 0 || (hiOffset - loOffset + 1) <= 0) { return(null); } var slicer = new Slicer(inputWidth, hiOffset, loOffset, isSigned); return(new SlicerXILMapping(slicer)); }
public SlicerTransactionSite(Slicer host) : base(host) { _host = host; }
public IXILMapping TryAllocate(Component host, XILInstr instr, TypeDescriptor[] operandTypes, TypeDescriptor[] resultTypes, IProject proj) { bool isSigned; int inputWidth, hiOffset, loOffset; if (!GetSliceParams(instr, operandTypes, resultTypes, out isSigned, out inputWidth, out hiOffset, out loOffset)) return null; if (inputWidth == 0 || (hiOffset - loOffset + 1) <= 0) return null; var slicer = new Slicer(inputWidth, hiOffset, loOffset, isSigned); return new SlicerXILMapping(slicer); }
public SlicerXILMapping(Slicer host) { _host = host; }