aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/IntermediateRepresentation/BasicBlock.cs
diff options
context:
space:
mode:
authorLDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>2019-10-31 19:09:03 +0100
committerAc_K <Acoustik666@gmail.com>2019-10-31 19:09:03 +0100
commiteee639d6ba544fa5dd9352426d55e91bc54e157d (patch)
tree1df440ca57d8c1725e84f403fbeecddb8e508a3a /ChocolArm64/IntermediateRepresentation/BasicBlock.cs
parent35443bac5a16ced668d84e0a22c21ca9076b3924 (diff)
.NET Core 3.0 is here! (#784)
* .NET Core 3.0 is here! * Remove IMemoryManager.cs and its references. * Add T Math/F.FusedMultiplyAdd(T, T, T). Nits. * Nit. * Update appveyor.yml * Revert "Resolve Visual Studio build issues" This reverts commit 1772128ce0fc058e6280001aace3a77a7a96897b. * Update SvcTable.cs
Diffstat (limited to 'ChocolArm64/IntermediateRepresentation/BasicBlock.cs')
-rw-r--r--ChocolArm64/IntermediateRepresentation/BasicBlock.cs122
1 files changed, 0 insertions, 122 deletions
diff --git a/ChocolArm64/IntermediateRepresentation/BasicBlock.cs b/ChocolArm64/IntermediateRepresentation/BasicBlock.cs
deleted file mode 100644
index ce39fddb..00000000
--- a/ChocolArm64/IntermediateRepresentation/BasicBlock.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using ChocolArm64.State;
-using System;
-using System.Collections.Generic;
-
-using static ChocolArm64.State.RegisterConsts;
-
-namespace ChocolArm64.IntermediateRepresentation
-{
- class BasicBlock
- {
- public int Index { get; set; }
-
- public RegisterMask RegInputs { get; private set; }
- public RegisterMask RegOutputs { get; private set; }
-
- public bool HasStateLoad { get; private set; }
-
- private List<Operation> _operations;
-
- public int Count => _operations.Count;
-
- private BasicBlock _next;
- private BasicBlock _branch;
-
- public BasicBlock Next
- {
- get => _next;
- set => _next = AddSuccessor(_next, value);
- }
-
- public BasicBlock Branch
- {
- get => _branch;
- set => _branch = AddSuccessor(_branch, value);
- }
-
- public List<BasicBlock> Predecessors { get; }
-
- public BasicBlock(int index = 0)
- {
- Index = index;
-
- _operations = new List<Operation>();
-
- Predecessors = new List<BasicBlock>();
- }
-
- private BasicBlock AddSuccessor(BasicBlock oldBlock, BasicBlock newBlock)
- {
- oldBlock?.Predecessors.Remove(this);
- newBlock?.Predecessors.Add(this);
-
- return newBlock;
- }
-
- public void Add(Operation operation)
- {
- if (operation.Type == OperationType.LoadLocal ||
- operation.Type == OperationType.StoreLocal)
- {
- int index = operation.GetArg<int>(0);
-
- if (IsRegIndex(index))
- {
- long intMask = 0;
- long vecMask = 0;
-
- switch (operation.GetArg<RegisterType>(1))
- {
- case RegisterType.Flag: intMask = (1L << RegsCount) << index; break;
- case RegisterType.Int: intMask = 1L << index; break;
- case RegisterType.Vector: vecMask = 1L << index; break;
- }
-
- RegisterMask mask = new RegisterMask(intMask, vecMask);
-
- if (operation.Type == OperationType.LoadLocal)
- {
- RegInputs |= mask & ~RegOutputs;
- }
- else
- {
- RegOutputs |= mask;
- }
- }
- }
- else if (operation.Type == OperationType.LoadContext)
- {
- HasStateLoad = true;
- }
-
- operation.Parent = this;
-
- _operations.Add(operation);
- }
-
- public static bool IsRegIndex(int index)
- {
- return (uint)index < RegsCount;
- }
-
- public Operation GetOperation(int index)
- {
- if ((uint)index >= _operations.Count)
- {
- throw new ArgumentOutOfRangeException(nameof(index));
- }
-
- return _operations[index];
- }
-
- public Operation GetLastOp()
- {
- if (Count == 0)
- {
- return null;
- }
-
- return _operations[Count - 1];
- }
- }
-} \ No newline at end of file