コード例 #1
0
ファイル: Slicer.cs プロジェクト: cephdon/systemsharp
        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));
        }
コード例 #2
0
ファイル: Slicer.cs プロジェクト: cephdon/systemsharp
        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));
        }
コード例 #3
0
ファイル: Slicer.cs プロジェクト: venusdharan/systemsharp
 public SlicerTransactionSite(Slicer host) :
     base(host)
 {
     _host = host;
 }
コード例 #4
0
ファイル: Slicer.cs プロジェクト: venusdharan/systemsharp
        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);
        }
コード例 #5
0
ファイル: Slicer.cs プロジェクト: venusdharan/systemsharp
 public SlicerXILMapping(Slicer host)
 {
     _host = host;
 }
コード例 #6
0
ファイル: Slicer.cs プロジェクト: cephdon/systemsharp
 public SlicerTransactionSite(Slicer host) :
     base(host)
 {
     _host = host;
 }
コード例 #7
0
ファイル: Slicer.cs プロジェクト: cephdon/systemsharp
 public SlicerXILMapping(Slicer host)
 {
     _host = host;
 }