mirror of
https://github.com/Ryubing/Ryujinx.git
synced 2025-03-10 09:04:23 +00:00
misc: chore: Use collection expressions in Cpu
This commit is contained in:
parent
ed2590a8ac
commit
3e12865f51
@ -164,7 +164,7 @@ namespace ARMeilleure.Common
|
||||
_fillBottomLevel = new SparseMemoryBlock(bottomLevelSize, null, _sparseFill);
|
||||
_fillBottomLevelPtr = (TEntry*)_fillBottomLevel.Block.Pointer;
|
||||
|
||||
_sparseReserved = new List<TableSparseBlock>();
|
||||
_sparseReserved = [];
|
||||
_sparseLock = new ReaderWriterLockSlim();
|
||||
|
||||
_sparseBlockSize = bottomLevelSize;
|
||||
|
@ -21,7 +21,7 @@ namespace Ryujinx.Cpu.Jit.HostTracked
|
||||
public AddressSpacePartitioned(MemoryTracking tracking, MemoryBlock backingMemory, NativePageTable nativePageTable, bool useProtectionMirrors)
|
||||
{
|
||||
_backingMemory = backingMemory;
|
||||
_partitions = new();
|
||||
_partitions = [];
|
||||
_asAllocator = new(tracking, nativePageTable.Read, _partitions);
|
||||
_updatePtCallback = nativePageTable.Update;
|
||||
_useProtectionMirrors = useProtectionMirrors;
|
||||
|
@ -340,7 +340,7 @@ namespace Ryujinx.Cpu.Jit
|
||||
{
|
||||
int pages = GetPagesCount(va, (uint)size, out va);
|
||||
|
||||
List<MemoryRange> regions = new();
|
||||
List<MemoryRange> regions = [];
|
||||
|
||||
ulong regionStart = GetPhysicalAddressChecked(va);
|
||||
ulong regionSize = PageSize;
|
||||
|
@ -443,7 +443,7 @@ namespace Ryujinx.Cpu.Jit
|
||||
return null;
|
||||
}
|
||||
|
||||
List<HostMemoryRange> regions = new();
|
||||
List<HostMemoryRange> regions = [];
|
||||
ulong endVa = va + size;
|
||||
|
||||
try
|
||||
|
@ -36,7 +36,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
RegisterAllocator = registerAllocator;
|
||||
MemoryManagerType = mmType;
|
||||
_itConditions = new ArmCondition[4];
|
||||
_pendingBranches = new();
|
||||
_pendingBranches = [];
|
||||
IsThumb = isThumb;
|
||||
}
|
||||
|
||||
|
@ -10,8 +10,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
{
|
||||
public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address, bool isThumb)
|
||||
{
|
||||
List<Block> blocks = new();
|
||||
List<ulong> branchTargets = new();
|
||||
List<Block> blocks = [];
|
||||
List<ulong> branchTargets = [];
|
||||
|
||||
while (true)
|
||||
{
|
||||
@ -202,7 +202,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
{
|
||||
ulong startAddress = address;
|
||||
|
||||
List<InstInfo> insts = new();
|
||||
List<InstInfo> insts = [];
|
||||
|
||||
uint encoding;
|
||||
InstMeta meta;
|
||||
|
@ -9,494 +9,494 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
|
||||
static InstTableA32()
|
||||
{
|
||||
InstEncoding[] condConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0xF0000000, 0xF0000000),
|
||||
};
|
||||
InstEncoding[] condConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnsRnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnsRnConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x000F0000, 0x001F0000),
|
||||
new(0x000D0000, 0x000F0000),
|
||||
};
|
||||
new(0x000D0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x000D0000, 0x000F0000),
|
||||
};
|
||||
new(0x000D0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVmConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnConstraints2 =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x0000000F, 0x0000000F),
|
||||
};
|
||||
new(0x0000000F, 0x0000000F)
|
||||
];
|
||||
|
||||
InstEncoding[] optionConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x0000000F),
|
||||
};
|
||||
InstEncoding[] optionConstraints =
|
||||
[
|
||||
new(0x00000000, 0x0000000F)
|
||||
];
|
||||
|
||||
InstEncoding[] condPuwPwPuwPuwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condPuwPwPuwPuwConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00000000, 0x01A00000),
|
||||
new(0x01000000, 0x01200000),
|
||||
new(0x00200000, 0x01A00000),
|
||||
new(0x01A00000, 0x01A00000),
|
||||
};
|
||||
new(0x01A00000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnPuwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnPuwConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x00000000, 0x01A00000),
|
||||
};
|
||||
new(0x00000000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] condPuwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condPuwConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00000000, 0x01A00000),
|
||||
};
|
||||
new(0x00000000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnPwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnPwConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x00200000, 0x01200000),
|
||||
};
|
||||
new(0x00200000, 0x01200000)
|
||||
];
|
||||
|
||||
InstEncoding[] condPwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condPwConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00200000, 0x01200000),
|
||||
};
|
||||
new(0x00200000, 0x01200000)
|
||||
];
|
||||
|
||||
InstEncoding[] condRnConstraints3 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRnConstraints3 =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x000F0000, 0x000F0000),
|
||||
};
|
||||
new(0x000F0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] condMaskrConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condMaskrConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00000000, 0x004F0000),
|
||||
};
|
||||
new(0x00000000, 0x004F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000F0000, 0x000F0000),
|
||||
};
|
||||
InstEncoding[] rnConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVnVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVnVmConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010000, 0x00010000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] condRaConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condRaConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x0000F000, 0x0000F000),
|
||||
};
|
||||
new(0x0000F000, 0x0000F000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVnVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVnVmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00010000, 0x00010000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdOpvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdOpvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010100, 0x00010100),
|
||||
};
|
||||
new(0x00010100, 0x00010100)
|
||||
];
|
||||
|
||||
InstEncoding[] cmodeCmodeQvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] cmodeCmodeQvdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00000100),
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmOpConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmOpConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x00300000),
|
||||
};
|
||||
new(0x00000000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
};
|
||||
new(0x00010040, 0x00010040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00000300),
|
||||
};
|
||||
InstEncoding[] sizeConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00000300)
|
||||
];
|
||||
|
||||
InstEncoding[] vmConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
InstEncoding[] vmConstraints =
|
||||
[
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] opvdOpvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opvdOpvmConstraints =
|
||||
[
|
||||
new(0x00001100, 0x00001100),
|
||||
new(0x00000001, 0x00000101),
|
||||
};
|
||||
new(0x00000001, 0x00000101)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00200000, 0x00300200),
|
||||
new(0x00000000, 0x00200000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] condQvdEbConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condQvdEbConstraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00210000, 0x00210000),
|
||||
new(0x00400020, 0x00400020),
|
||||
};
|
||||
new(0x00400020, 0x00400020)
|
||||
];
|
||||
|
||||
InstEncoding[] imm4QvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm4QvdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00070000),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmQimm4Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmQimm4Constraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000800, 0x00000840),
|
||||
};
|
||||
new(0x00000800, 0x00000840)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
InstEncoding[] qvdConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVnConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010000, 0x00010000),
|
||||
};
|
||||
new(0x00010000, 0x00010000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x00000C00, 0x00000C00),
|
||||
};
|
||||
InstEncoding[] sizeConstraints2 =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeIndexAlignIndexAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeIndexAlignIndexAlignConstraints =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00000010, 0x00000030),
|
||||
new(0x00000020, 0x00000030),
|
||||
};
|
||||
new(0x00000020, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeaConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeaConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000010, 0x000000D0),
|
||||
};
|
||||
new(0x00000010, 0x000000D0)
|
||||
];
|
||||
|
||||
InstEncoding[] alignConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000020, 0x00000020),
|
||||
};
|
||||
InstEncoding[] alignConstraints =
|
||||
[
|
||||
new(0x00000020, 0x00000020)
|
||||
];
|
||||
|
||||
InstEncoding[] alignConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] alignConstraints2 =
|
||||
[
|
||||
new(0x00000030, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints3 =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0)
|
||||
];
|
||||
|
||||
InstEncoding[] alignSizeConstraints =
|
||||
[
|
||||
new(0x00000030, 0x00000030),
|
||||
};
|
||||
new(0x000000C0, 0x000000C0)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints3 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeAConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
};
|
||||
new(0x00000010, 0x00000010)
|
||||
];
|
||||
|
||||
InstEncoding[] alignSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000030, 0x00000030),
|
||||
InstEncoding[] sizeAlignConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
};
|
||||
new(0x00000020, 0x00000020)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeAConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000010, 0x00000010),
|
||||
};
|
||||
|
||||
InstEncoding[] sizeAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000020, 0x00000020),
|
||||
};
|
||||
|
||||
InstEncoding[] sizeIndexAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeIndexAlignConstraints =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00000030, 0x00000030),
|
||||
};
|
||||
new(0x00000030, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeaConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000D0),
|
||||
};
|
||||
InstEncoding[] sizeaConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000D0)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x01001000, 0x01001000),
|
||||
new(0x01010000, 0x01010000),
|
||||
};
|
||||
new(0x01010000, 0x01010000)
|
||||
];
|
||||
|
||||
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00180000, 0x00380000),
|
||||
new(0x00280000, 0x00380000),
|
||||
new(0x00300000, 0x00380000),
|
||||
new(0x00380000, 0x00380000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] condOpc1opc2Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condOpc1opc2Constraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00000040, 0x00400060),
|
||||
};
|
||||
new(0x00000040, 0x00400060)
|
||||
];
|
||||
|
||||
InstEncoding[] condUopc1opc2Uopc1opc2Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condUopc1opc2Uopc1opc2Constraints =
|
||||
[
|
||||
new(0xF0000000, 0xF0000000),
|
||||
new(0x00800000, 0x00C00060),
|
||||
new(0x00000040, 0x00400060),
|
||||
};
|
||||
new(0x00000040, 0x00400060)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeOpuOpsizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeOpuOpsizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x01000200, 0x01000200),
|
||||
new(0x00100200, 0x00300200),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x01100000, 0x01300000),
|
||||
new(0x01200000, 0x01300000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] cmodeQvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] cmodeQvdConstraints =
|
||||
[
|
||||
new(0x00000E00, 0x00000E00),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000040, 0x00000040),
|
||||
};
|
||||
InstEncoding[] qConstraints =
|
||||
[
|
||||
new(0x00000040, 0x00000040)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000040, 0x00000040),
|
||||
};
|
||||
new(0x00000040, 0x00000040)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints4 = new InstEncoding[]
|
||||
{
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
InstEncoding[] sizeConstraints4 =
|
||||
[
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmSizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmSizeSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeQvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeQvdQvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x01001000, 0x01001000),
|
||||
new(0x01010000, 0x01010000),
|
||||
};
|
||||
new(0x01010000, 0x01010000)
|
||||
];
|
||||
|
||||
InstEncoding[] opSizeVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opSizeVmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x000000C0),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmQvnConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00010040, 0x00010040),
|
||||
};
|
||||
new(0x00010040, 0x00010040)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6UopVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6UopVmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00000000, 0x01000100),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6lUopQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6lUopQvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380080),
|
||||
new(0x00000000, 0x01000100),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmSizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmSizeSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
};
|
||||
new(0x000C0000, 0x000C0000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeSizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeSizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x00040000, 0x000C0000),
|
||||
new(0x00080000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x00080000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6lQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6lQvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380080),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6VmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6VmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6VdImm6Imm6Imm6Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6VdImm6Imm6Imm6Constraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00080000, 0x003F0000),
|
||||
new(0x00100000, 0x003F0000),
|
||||
new(0x00200000, 0x003F0000),
|
||||
};
|
||||
new(0x00200000, 0x003F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdConstraints2 =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQsizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQsizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00080000, 0x000C0040),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
List<InstInfoForTable> insts = new()
|
||||
{
|
||||
List<InstInfoForTable> insts =
|
||||
[
|
||||
new(0x02A00000, 0x0FE00000, condConstraints, InstName.AdcI, T.AdcIA1, IsaVersion.v80, InstFlags.CondRd),
|
||||
new(0x00A00000, 0x0FE00010, condConstraints, InstName.AdcR, T.AdcRA1, IsaVersion.v80, InstFlags.CondRd),
|
||||
new(0x00A00010, 0x0FE00090, condConstraints, InstName.AdcRr, T.AdcRrA1, IsaVersion.v80, InstFlags.CondRd),
|
||||
@ -1176,7 +1176,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
new(0x0320F002, 0x0FFFFFFF, condConstraints, InstName.Wfe, T.WfeA1, IsaVersion.v80, InstFlags.Cond),
|
||||
new(0x0320F003, 0x0FFFFFFF, condConstraints, InstName.Wfi, T.WfiA1, IsaVersion.v80, InstFlags.Cond),
|
||||
new(0x0320F001, 0x0FFFFFFF, condConstraints, InstName.Yield, T.YieldA1, IsaVersion.v80, InstFlags.Cond),
|
||||
};
|
||||
];
|
||||
|
||||
_table = new(insts);
|
||||
}
|
||||
|
@ -9,48 +9,49 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
|
||||
static InstTableT16()
|
||||
{
|
||||
InstEncoding[] rmRdndnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rmRdndnConstraints =
|
||||
[
|
||||
new(0x00680000, 0x00780000),
|
||||
new(0x00850000, 0x00870000),
|
||||
};
|
||||
new(0x00850000, 0x00870000)
|
||||
];
|
||||
|
||||
InstEncoding[] rmConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00680000, 0x00780000),
|
||||
};
|
||||
InstEncoding[] rmConstraints =
|
||||
[
|
||||
new(0x00680000, 0x00780000)
|
||||
];
|
||||
|
||||
InstEncoding[] condCondConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condCondConstraints =
|
||||
[
|
||||
new(0x0E000000, 0x0F000000),
|
||||
new(0x0F000000, 0x0F000000),
|
||||
};
|
||||
new(0x0F000000, 0x0F000000)
|
||||
];
|
||||
|
||||
InstEncoding[] maskConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x000F0000),
|
||||
};
|
||||
InstEncoding[] maskConstraints =
|
||||
[
|
||||
new(0x00000000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] opConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x18000000, 0x18000000),
|
||||
};
|
||||
InstEncoding[] opConstraints =
|
||||
[
|
||||
new(0x18000000, 0x18000000)
|
||||
];
|
||||
|
||||
InstEncoding[] opOpOpOpConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opOpOpOpConstraints =
|
||||
[
|
||||
new(0x00000000, 0x03C00000),
|
||||
new(0x00400000, 0x03C00000),
|
||||
new(0x01400000, 0x03C00000),
|
||||
new(0x01800000, 0x03C00000),
|
||||
};
|
||||
new(0x01800000, 0x03C00000)
|
||||
];
|
||||
|
||||
List<InstInfoForTable> insts = new()
|
||||
{
|
||||
List<InstInfoForTable> insts =
|
||||
[
|
||||
new(0x41400000, 0xFFC00000, InstName.AdcR, T.AdcRT1, IsaVersion.v80, InstFlags.Rdn),
|
||||
new(0x1C000000, 0xFE000000, InstName.AddI, T.AddIT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0x30000000, 0xF8000000, InstName.AddI, T.AddIT2, IsaVersion.v80, InstFlags.Rdn),
|
||||
new(0x18000000, 0xFE000000, InstName.AddR, T.AddRT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0x44000000, 0xFF000000, rmRdndnConstraints, InstName.AddR, T.AddRT2, IsaVersion.v80, InstFlags.RdnDn),
|
||||
new(0x44000000, 0xFF000000, rmRdndnConstraints, InstName.AddR, T.AddRT2, IsaVersion.v80,
|
||||
InstFlags.RdnDn),
|
||||
new(0xA8000000, 0xF8000000, InstName.AddSpI, T.AddSpIT1, IsaVersion.v80, InstFlags.RdRd16),
|
||||
new(0xB0000000, 0xFF800000, InstName.AddSpI, T.AddSpIT2, IsaVersion.v80, InstFlags.None),
|
||||
new(0x44680000, 0xFF780000, InstName.AddSpR, T.AddSpRT1, IsaVersion.v80, InstFlags.None),
|
||||
@ -86,7 +87,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
new(0x20000000, 0xF8000000, InstName.MovI, T.MovIT1, IsaVersion.v80, InstFlags.RdRd16),
|
||||
new(0x46000000, 0xFF000000, InstName.MovR, T.MovRT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0x00000000, 0xE0000000, opConstraints, InstName.MovR, T.MovRT2, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0x40000000, 0xFE000000, opOpOpOpConstraints, InstName.MovRr, T.MovRrT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0x40000000, 0xFE000000, opOpOpOpConstraints, InstName.MovRr, T.MovRrT1, IsaVersion.v80,
|
||||
InstFlags.None),
|
||||
new(0x43400000, 0xFFC00000, InstName.Mul, T.MulT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0x43C00000, 0xFFC00000, InstName.MvnR, T.MvnRT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0xBF000000, 0xFFFF0000, InstName.Nop, T.NopT1, IsaVersion.v80, InstFlags.None),
|
||||
@ -99,7 +101,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
new(0x42400000, 0xFFC00000, InstName.RsbI, T.RsbIT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0x41800000, 0xFFC00000, InstName.SbcR, T.SbcRT1, IsaVersion.v80, InstFlags.Rdn),
|
||||
new(0xB6500000, 0xFFF70000, InstName.Setend, T.SetendT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0xB6100000, 0xFFF70000, InstName.Setpan, T.SetpanT1, IsaVersion.v81, IsaFeature.FeatPan, InstFlags.None),
|
||||
new(0xB6100000, 0xFFF70000, InstName.Setpan, T.SetpanT1, IsaVersion.v81, IsaFeature.FeatPan,
|
||||
InstFlags.None),
|
||||
new(0xBF400000, 0xFFFF0000, InstName.Sev, T.SevT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0xBF500000, 0xFFFF0000, InstName.Sevl, T.SevlT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0xC0000000, 0xF8000000, InstName.Stm, T.StmT1, IsaVersion.v80, InstFlags.RlistRead),
|
||||
@ -123,8 +126,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
new(0xB2800000, 0xFFC00000, InstName.Uxth, T.UxthT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0xBF200000, 0xFFFF0000, InstName.Wfe, T.WfeT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0xBF300000, 0xFFFF0000, InstName.Wfi, T.WfiT1, IsaVersion.v80, InstFlags.None),
|
||||
new(0xBF100000, 0xFFFF0000, InstName.Yield, T.YieldT1, IsaVersion.v80, InstFlags.None),
|
||||
};
|
||||
new(0xBF100000, 0xFFFF0000, InstName.Yield, T.YieldT1, IsaVersion.v80, InstFlags.None)
|
||||
];
|
||||
|
||||
_table = new(insts);
|
||||
}
|
||||
|
@ -9,525 +9,525 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
|
||||
static InstTableT32()
|
||||
{
|
||||
InstEncoding[] rnRdsConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnRdsConstraints =
|
||||
[
|
||||
new(0x000D0000, 0x000F0000),
|
||||
new(0x00100F00, 0x00100F00),
|
||||
};
|
||||
new(0x00100F00, 0x00100F00)
|
||||
];
|
||||
|
||||
InstEncoding[] rnRnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnRnConstraints =
|
||||
[
|
||||
new(0x000D0000, 0x000F0000),
|
||||
new(0x000F0000, 0x000F0000),
|
||||
};
|
||||
new(0x000F0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] rdsConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00100F00, 0x00100F00),
|
||||
};
|
||||
InstEncoding[] rdsConstraints =
|
||||
[
|
||||
new(0x00100F00, 0x00100F00)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVmConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] condCondCondConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] condCondCondConstraints =
|
||||
[
|
||||
new(0x03800000, 0x03C00000),
|
||||
new(0x03C00000, 0x03C00000),
|
||||
new(0x03800000, 0x03800000),
|
||||
};
|
||||
new(0x03800000, 0x03800000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000F0000, 0x000F0000),
|
||||
};
|
||||
InstEncoding[] rnConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] hConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
InstEncoding[] hConstraints =
|
||||
[
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] imodmConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00000700),
|
||||
};
|
||||
InstEncoding[] imodmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00000700)
|
||||
];
|
||||
|
||||
InstEncoding[] optionConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x0000000F),
|
||||
};
|
||||
InstEncoding[] optionConstraints =
|
||||
[
|
||||
new(0x00000000, 0x0000000F)
|
||||
];
|
||||
|
||||
InstEncoding[] puwPwPuwPuwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] puwPwPuwPuwConstraints =
|
||||
[
|
||||
new(0x00000000, 0x01A00000),
|
||||
new(0x01000000, 0x01200000),
|
||||
new(0x00200000, 0x01A00000),
|
||||
new(0x01A00000, 0x01A00000),
|
||||
};
|
||||
new(0x01A00000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnPuwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnPuwConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x00000000, 0x01A00000),
|
||||
};
|
||||
new(0x00000000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] puwConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x01A00000),
|
||||
};
|
||||
InstEncoding[] puwConstraints =
|
||||
[
|
||||
new(0x00000000, 0x01A00000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnRtConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnRtConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x0000F000, 0x0000F000),
|
||||
};
|
||||
new(0x0000F000, 0x0000F000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnRtpuwPuwPwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnRtpuwPuwPwConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x0000F400, 0x0000F700),
|
||||
new(0x00000600, 0x00000700),
|
||||
new(0x00000000, 0x00000500),
|
||||
};
|
||||
new(0x00000000, 0x00000500)
|
||||
];
|
||||
|
||||
InstEncoding[] rtConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x0000F000, 0x0000F000),
|
||||
};
|
||||
InstEncoding[] rtConstraints =
|
||||
[
|
||||
new(0x0000F000, 0x0000F000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnPwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnPwConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x00000000, 0x01200000),
|
||||
};
|
||||
new(0x00000000, 0x01200000)
|
||||
];
|
||||
|
||||
InstEncoding[] pwConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x01200000),
|
||||
};
|
||||
InstEncoding[] pwConstraints =
|
||||
[
|
||||
new(0x00000000, 0x01200000)
|
||||
];
|
||||
|
||||
InstEncoding[] rnPuwPwConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rnPuwPwConstraints =
|
||||
[
|
||||
new(0x000F0000, 0x000F0000),
|
||||
new(0x00000600, 0x00000700),
|
||||
new(0x00000000, 0x00000500),
|
||||
};
|
||||
new(0x00000000, 0x00000500)
|
||||
];
|
||||
|
||||
InstEncoding[] raConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x0000F000, 0x0000F000),
|
||||
};
|
||||
InstEncoding[] raConstraints =
|
||||
[
|
||||
new(0x0000F000, 0x0000F000)
|
||||
];
|
||||
|
||||
InstEncoding[] sTConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sTConstraints =
|
||||
[
|
||||
new(0x00100000, 0x00100000),
|
||||
new(0x00000010, 0x00000010),
|
||||
};
|
||||
new(0x00000010, 0x00000010)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVnVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVnVmConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010000, 0x00010000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] shimm2imm3Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00200000, 0x002070C0),
|
||||
};
|
||||
InstEncoding[] shimm2imm3Constraints =
|
||||
[
|
||||
new(0x00200000, 0x002070C0)
|
||||
];
|
||||
|
||||
InstEncoding[] rnimm8Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000E0000, 0x000F00FF),
|
||||
};
|
||||
InstEncoding[] rnimm8Constraints =
|
||||
[
|
||||
new(0x000E0000, 0x000F00FF)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVnVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVnVmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00010000, 0x00010000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdOpvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdOpvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010100, 0x00010100),
|
||||
};
|
||||
new(0x00010100, 0x00010100)
|
||||
];
|
||||
|
||||
InstEncoding[] cmodeCmodeQvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] cmodeCmodeQvdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00000100),
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmOpConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmOpConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x00300000),
|
||||
};
|
||||
new(0x00000000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
};
|
||||
new(0x00010040, 0x00010040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00000300),
|
||||
};
|
||||
InstEncoding[] sizeConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00000300)
|
||||
];
|
||||
|
||||
InstEncoding[] vmConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
InstEncoding[] vmConstraints =
|
||||
[
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] opvdOpvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opvdOpvmConstraints =
|
||||
[
|
||||
new(0x00001100, 0x00001100),
|
||||
new(0x00000001, 0x00000101),
|
||||
};
|
||||
new(0x00000001, 0x00000101)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00200000, 0x00300200),
|
||||
new(0x00000000, 0x00200000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdEbConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdEbConstraints =
|
||||
[
|
||||
new(0x00210000, 0x00210000),
|
||||
new(0x00400020, 0x00400020),
|
||||
};
|
||||
new(0x00400020, 0x00400020)
|
||||
];
|
||||
|
||||
InstEncoding[] imm4QvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm4QvdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00070000),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmQimm4Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmQimm4Constraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000800, 0x00000840),
|
||||
};
|
||||
new(0x00000800, 0x00000840)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
InstEncoding[] qvdConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] vdVnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] vdVnConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00010000, 0x00010000),
|
||||
};
|
||||
new(0x00010000, 0x00010000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x00000C00, 0x00000C00),
|
||||
};
|
||||
InstEncoding[] sizeConstraints2 =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeIndexAlignIndexAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeIndexAlignIndexAlignConstraints =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00000010, 0x00000030),
|
||||
new(0x00000020, 0x00000030),
|
||||
};
|
||||
new(0x00000020, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeaConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeaConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000010, 0x000000D0),
|
||||
};
|
||||
new(0x00000010, 0x000000D0)
|
||||
];
|
||||
|
||||
InstEncoding[] alignConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000020, 0x00000020),
|
||||
};
|
||||
InstEncoding[] alignConstraints =
|
||||
[
|
||||
new(0x00000020, 0x00000020)
|
||||
];
|
||||
|
||||
InstEncoding[] alignConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] alignConstraints2 =
|
||||
[
|
||||
new(0x00000030, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints3 =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0)
|
||||
];
|
||||
|
||||
InstEncoding[] alignSizeConstraints =
|
||||
[
|
||||
new(0x00000030, 0x00000030),
|
||||
};
|
||||
new(0x000000C0, 0x000000C0)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints3 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeAConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
};
|
||||
new(0x00000010, 0x00000010)
|
||||
];
|
||||
|
||||
InstEncoding[] alignSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000030, 0x00000030),
|
||||
InstEncoding[] sizeAlignConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000C0),
|
||||
};
|
||||
new(0x00000020, 0x00000020)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeAConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000010, 0x00000010),
|
||||
};
|
||||
|
||||
InstEncoding[] sizeAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000C0),
|
||||
new(0x00000020, 0x00000020),
|
||||
};
|
||||
|
||||
InstEncoding[] sizeIndexAlignConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeIndexAlignConstraints =
|
||||
[
|
||||
new(0x00000C00, 0x00000C00),
|
||||
new(0x00000030, 0x00000030),
|
||||
};
|
||||
new(0x00000030, 0x00000030)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeaConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x000000C0, 0x000000D0),
|
||||
};
|
||||
InstEncoding[] sizeaConstraints =
|
||||
[
|
||||
new(0x000000C0, 0x000000D0)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQvdQvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x10001000, 0x10001000),
|
||||
new(0x10010000, 0x10010000),
|
||||
};
|
||||
new(0x10010000, 0x10010000)
|
||||
];
|
||||
|
||||
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00180000, 0x00380000),
|
||||
new(0x00280000, 0x00380000),
|
||||
new(0x00300000, 0x00380000),
|
||||
new(0x00380000, 0x00380000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] opc1opc2Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000040, 0x00400060),
|
||||
};
|
||||
InstEncoding[] opc1opc2Constraints =
|
||||
[
|
||||
new(0x00000040, 0x00400060)
|
||||
];
|
||||
|
||||
InstEncoding[] uopc1opc2Uopc1opc2Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] uopc1opc2Uopc1opc2Constraints =
|
||||
[
|
||||
new(0x00800000, 0x00C00060),
|
||||
new(0x00000040, 0x00400060),
|
||||
};
|
||||
new(0x00000040, 0x00400060)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeOpuOpsizeVdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeOpuOpsizeVdConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x10000200, 0x10000200),
|
||||
new(0x00100200, 0x00300200),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x10100000, 0x10300000),
|
||||
new(0x10200000, 0x10300000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] cmodeQvdConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] cmodeQvdConstraints =
|
||||
[
|
||||
new(0x00000E00, 0x00000E00),
|
||||
new(0x00001040, 0x00001040),
|
||||
};
|
||||
new(0x00001040, 0x00001040)
|
||||
];
|
||||
|
||||
InstEncoding[] qConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000040, 0x00000040),
|
||||
};
|
||||
InstEncoding[] qConstraints =
|
||||
[
|
||||
new(0x00000040, 0x00000040)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000040, 0x00000040),
|
||||
};
|
||||
new(0x00000040, 0x00000040)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints4 = new InstEncoding[]
|
||||
{
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
InstEncoding[] sizeConstraints4 =
|
||||
[
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvnQvmSizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvnQvmSizeSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00010040, 0x00010040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x00300000, 0x00300000),
|
||||
};
|
||||
new(0x00300000, 0x00300000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeQvdQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeQvdQvnConstraints =
|
||||
[
|
||||
new(0x00300000, 0x00300000),
|
||||
new(0x00000000, 0x00300000),
|
||||
new(0x10001000, 0x10001000),
|
||||
new(0x10010000, 0x10010000),
|
||||
};
|
||||
new(0x10010000, 0x10010000)
|
||||
];
|
||||
|
||||
InstEncoding[] opSizeVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opSizeVmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x000000C0),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmQvnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmQvnConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00010040, 0x00010040),
|
||||
};
|
||||
new(0x00010040, 0x00010040)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6UopVmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6UopVmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00000000, 0x10000100),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6lUopQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6lUopQvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380080),
|
||||
new(0x00000000, 0x10000100),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] qvdQvmSizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qvdQvmSizeSizeConstraints =
|
||||
[
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
new(0x00000000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
};
|
||||
new(0x000C0000, 0x000C0000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeSizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeSizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x00040000, 0x000C0000),
|
||||
new(0x00080000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x00080000, 0x000C0000),
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6lQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6lQvdQvmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380080),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6VmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6VmConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] imm6VdImm6Imm6Imm6Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm6VdImm6Imm6Imm6Constraints =
|
||||
[
|
||||
new(0x00000000, 0x00380000),
|
||||
new(0x00001000, 0x00001000),
|
||||
new(0x00080000, 0x003F0000),
|
||||
new(0x00100000, 0x003F0000),
|
||||
new(0x00200000, 0x003F0000),
|
||||
};
|
||||
new(0x00200000, 0x003F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeVdConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeVdConstraints2 =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQsizeQvdQvmConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQsizeQvdQvmConstraints =
|
||||
[
|
||||
new(0x000C0000, 0x000C0000),
|
||||
new(0x00080000, 0x000C0040),
|
||||
new(0x00001040, 0x00001040),
|
||||
new(0x00000041, 0x00000041),
|
||||
};
|
||||
new(0x00000041, 0x00000041)
|
||||
];
|
||||
|
||||
List<InstInfoForTable> insts = new()
|
||||
{
|
||||
List<InstInfoForTable> insts =
|
||||
[
|
||||
new(0xF1400000, 0xFBE08000, InstName.AdcI, T.AdcIT1, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0xEB400000, 0xFFE08000, InstName.AdcR, T.AdcRT2, IsaVersion.v80, InstFlags.Rd),
|
||||
new(0xF1000000, 0xFBE08000, rnRdsConstraints, InstName.AddI, T.AddIT3, IsaVersion.v80, InstFlags.Rd),
|
||||
@ -1190,7 +1190,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
|
||||
new(0xF3AF8002, 0xFFFFFFFF, InstName.Wfe, T.WfeT2, IsaVersion.v80, InstFlags.None),
|
||||
new(0xF3AF8003, 0xFFFFFFFF, InstName.Wfi, T.WfiT2, IsaVersion.v80, InstFlags.None),
|
||||
new(0xF3AF8001, 0xFFFFFFFF, InstName.Yield, T.YieldT2, IsaVersion.v80, InstFlags.None),
|
||||
};
|
||||
];
|
||||
|
||||
_table = new(insts);
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64
|
||||
{
|
||||
Debug.Assert((int)((endAddress - address) / 4) == instructions.Count);
|
||||
|
||||
_predecessors = new();
|
||||
_successors = new();
|
||||
_predecessors = [];
|
||||
_successors = [];
|
||||
Address = address;
|
||||
EndAddress = endAddress;
|
||||
Instructions = instructions;
|
||||
|
@ -36,8 +36,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64
|
||||
{
|
||||
Console.WriteLine($"bb {block.Index}");
|
||||
|
||||
List<int> predList = new();
|
||||
List<int> succList = new();
|
||||
List<int> predList = [];
|
||||
List<int> succList = [];
|
||||
|
||||
for (int index = 0; index < block.PredecessorsCount; index++)
|
||||
{
|
||||
|
@ -309,7 +309,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
MultiBlock multiBlock = Decoder.DecodeMulti(cpuPreset, memoryManager, address);
|
||||
|
||||
Dictionary<ulong, int> targets = new();
|
||||
List<PendingBranch> pendingBranches = new();
|
||||
List<PendingBranch> pendingBranches = [];
|
||||
|
||||
uint gprUseMask = multiBlock.GlobalUseMask.GprMask;
|
||||
uint fpSimdUseMask = multiBlock.GlobalUseMask.FpSimdMask;
|
||||
|
@ -15,8 +15,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
|
||||
public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address)
|
||||
{
|
||||
List<Block> blocks = new();
|
||||
List<ulong> branchTargets = new();
|
||||
List<Block> blocks = [];
|
||||
List<ulong> branchTargets = [];
|
||||
|
||||
RegisterMask useMask = RegisterMask.Zero;
|
||||
|
||||
@ -238,7 +238,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
{
|
||||
ulong startAddress = address;
|
||||
|
||||
List<InstInfo> insts = new();
|
||||
List<InstInfo> insts = [];
|
||||
|
||||
uint gprUseMask = useMask.GprMask;
|
||||
uint fpSimdUseMask = useMask.FpSimdMask;
|
||||
|
@ -94,37 +94,37 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
|
||||
static InstTable()
|
||||
{
|
||||
InstEncoding[] qsizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00C00000, 0x40C00000),
|
||||
};
|
||||
InstEncoding[] qsizeConstraints =
|
||||
[
|
||||
new(0x00C00000, 0x40C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
InstEncoding[] sizeConstraints =
|
||||
[
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] opuOpuOpuConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opuOpuOpuConstraints =
|
||||
[
|
||||
new(0x00001400, 0x00001C00),
|
||||
new(0x00001800, 0x00001C00),
|
||||
new(0x00001C00, 0x00001C00),
|
||||
};
|
||||
new(0x00001C00, 0x00001C00)
|
||||
];
|
||||
|
||||
InstEncoding[] shiftSfimm6Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] shiftSfimm6Constraints =
|
||||
[
|
||||
new(0x00C00000, 0x00C00000),
|
||||
new(0x00008000, 0x80008000),
|
||||
};
|
||||
new(0x00008000, 0x80008000)
|
||||
];
|
||||
|
||||
InstEncoding[] qsizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qsizeSizeConstraints =
|
||||
[
|
||||
new(0x00800000, 0x40C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] nimmsNimmsNimmsNimmsNimmsNimmsNimmsNimmsSfnConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] nimmsNimmsNimmsNimmsNimmsNimmsNimmsNimmsSfnConstraints =
|
||||
[
|
||||
new(0x0040FC00, 0x0040FC00),
|
||||
new(0x00007C00, 0x0040FC00),
|
||||
new(0x0000BC00, 0x0040FC00),
|
||||
@ -133,326 +133,326 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
new(0x0000F400, 0x0040FC00),
|
||||
new(0x0000F800, 0x0040FC00),
|
||||
new(0x0000FC00, 0x0040FC00),
|
||||
new(0x00400000, 0x80400000),
|
||||
};
|
||||
new(0x00400000, 0x80400000)
|
||||
];
|
||||
|
||||
InstEncoding[] sfimm6Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00008000, 0x80008000),
|
||||
};
|
||||
InstEncoding[] sfimm6Constraints =
|
||||
[
|
||||
new(0x00008000, 0x80008000)
|
||||
];
|
||||
|
||||
InstEncoding[] sfnSfnSfimmr5Sfimms5Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sfnSfnSfimmr5Sfimms5Constraints =
|
||||
[
|
||||
new(0x80000000, 0x80400000),
|
||||
new(0x00400000, 0x80400000),
|
||||
new(0x00200000, 0x80200000),
|
||||
new(0x00008000, 0x80008000),
|
||||
};
|
||||
new(0x00008000, 0x80008000)
|
||||
];
|
||||
|
||||
InstEncoding[] cmodeopqConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x2000F000, 0x6000F000),
|
||||
};
|
||||
InstEncoding[] cmodeopqConstraints =
|
||||
[
|
||||
new(0x2000F000, 0x6000F000)
|
||||
];
|
||||
|
||||
InstEncoding[] rsRtConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rsRtConstraints =
|
||||
[
|
||||
new(0x00010000, 0x00010000),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] sfszSfszSfszSfszConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sfszSfszSfszSfszConstraints =
|
||||
[
|
||||
new(0x80000000, 0x80000C00),
|
||||
new(0x80000400, 0x80000C00),
|
||||
new(0x80000800, 0x80000C00),
|
||||
new(0x00000C00, 0x80000C00),
|
||||
};
|
||||
new(0x00000C00, 0x80000C00)
|
||||
];
|
||||
|
||||
InstEncoding[] imm5Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] imm5Constraints =
|
||||
[
|
||||
new(0x00000000, 0x000F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] imm5Imm5qConstraints =
|
||||
[
|
||||
new(0x00000000, 0x000F0000),
|
||||
};
|
||||
new(0x00080000, 0x400F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] imm5Imm5qConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x000F0000),
|
||||
new(0x00080000, 0x400F0000),
|
||||
};
|
||||
|
||||
InstEncoding[] nsfNsfSfimmsConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] nsfNsfSfimmsConstraints =
|
||||
[
|
||||
new(0x00400000, 0x80400000),
|
||||
new(0x80000000, 0x80400000),
|
||||
new(0x00008000, 0x80008000),
|
||||
};
|
||||
new(0x00008000, 0x80008000)
|
||||
];
|
||||
|
||||
InstEncoding[] qimm4Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00004000, 0x40004000),
|
||||
};
|
||||
InstEncoding[] qimm4Constraints =
|
||||
[
|
||||
new(0x00004000, 0x40004000)
|
||||
];
|
||||
|
||||
InstEncoding[] qszConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00400000, 0x40400000),
|
||||
};
|
||||
InstEncoding[] qszConstraints =
|
||||
[
|
||||
new(0x00400000, 0x40400000)
|
||||
];
|
||||
|
||||
InstEncoding[] euacEuacEuacConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] euacEuacEuacConstraints =
|
||||
[
|
||||
new(0x00000800, 0x20800800),
|
||||
new(0x00800000, 0x20800800),
|
||||
new(0x00800800, 0x20800800),
|
||||
};
|
||||
new(0x00800800, 0x20800800)
|
||||
];
|
||||
|
||||
InstEncoding[] qszEuacEuacEuacConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qszEuacEuacEuacConstraints =
|
||||
[
|
||||
new(0x00400000, 0x40400000),
|
||||
new(0x00000800, 0x20800800),
|
||||
new(0x00800000, 0x20800800),
|
||||
new(0x00800800, 0x20800800),
|
||||
};
|
||||
new(0x00800800, 0x20800800)
|
||||
];
|
||||
|
||||
InstEncoding[] szConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00400000, 0x00400000),
|
||||
};
|
||||
InstEncoding[] szConstraints =
|
||||
[
|
||||
new(0x00400000, 0x00400000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeQsizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeQsizeConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00C00000),
|
||||
new(0x00C00000, 0x40C00000),
|
||||
};
|
||||
new(0x00C00000, 0x40C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeSizelSizeqSizehqConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeSizelSizeqSizehqConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
new(0x00A00000, 0x00E00000),
|
||||
new(0x00800000, 0x40C00000),
|
||||
new(0x00400800, 0x40C00800),
|
||||
};
|
||||
new(0x00400800, 0x40C00800)
|
||||
];
|
||||
|
||||
InstEncoding[] szConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00400000),
|
||||
};
|
||||
InstEncoding[] szConstraints2 =
|
||||
[
|
||||
new(0x00000000, 0x00400000)
|
||||
];
|
||||
|
||||
InstEncoding[] immhConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] immhConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00780000)
|
||||
];
|
||||
|
||||
InstEncoding[] immhQimmhConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00780000),
|
||||
};
|
||||
new(0x00400000, 0x40400000)
|
||||
];
|
||||
|
||||
InstEncoding[] immhQimmhConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00780000),
|
||||
new(0x00400000, 0x40400000),
|
||||
};
|
||||
InstEncoding[] sfscaleConstraints =
|
||||
[
|
||||
new(0x00000000, 0x80008000)
|
||||
];
|
||||
|
||||
InstEncoding[] sfscaleConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x80008000),
|
||||
};
|
||||
|
||||
InstEncoding[] ftypeopcFtypeopcFtypeopcFtypeopcFtypeOpcConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] ftypeopcFtypeopcFtypeopcFtypeopcFtypeOpcConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00C18000),
|
||||
new(0x00408000, 0x00C18000),
|
||||
new(0x00810000, 0x00C18000),
|
||||
new(0x00C18000, 0x00C18000),
|
||||
new(0x00800000, 0x00C00000),
|
||||
new(0x00010000, 0x00018000),
|
||||
};
|
||||
new(0x00010000, 0x00018000)
|
||||
];
|
||||
|
||||
InstEncoding[] szlConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] szlConstraints =
|
||||
[
|
||||
new(0x00600000, 0x00600000)
|
||||
];
|
||||
|
||||
InstEncoding[] szlQszConstraints =
|
||||
[
|
||||
new(0x00600000, 0x00600000),
|
||||
};
|
||||
new(0x00400000, 0x40400000)
|
||||
];
|
||||
|
||||
InstEncoding[] szlQszConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00600000, 0x00600000),
|
||||
new(0x00400000, 0x40400000),
|
||||
};
|
||||
InstEncoding[] qConstraints =
|
||||
[
|
||||
new(0x00000000, 0x40000000)
|
||||
];
|
||||
|
||||
InstEncoding[] qConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x40000000),
|
||||
};
|
||||
|
||||
InstEncoding[] sfftypermodeSfftypermodeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sfftypermodeSfftypermodeConstraints =
|
||||
[
|
||||
new(0x00400000, 0x80C80000),
|
||||
new(0x80000000, 0x80C80000),
|
||||
};
|
||||
new(0x80000000, 0x80C80000)
|
||||
];
|
||||
|
||||
InstEncoding[] uo1o2Constraints = new InstEncoding[]
|
||||
{
|
||||
new(0x20800000, 0x20801000),
|
||||
};
|
||||
InstEncoding[] uo1o2Constraints =
|
||||
[
|
||||
new(0x20800000, 0x20801000)
|
||||
];
|
||||
|
||||
InstEncoding[] qszUo1o2Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] qszUo1o2Constraints =
|
||||
[
|
||||
new(0x00400000, 0x40400000),
|
||||
new(0x20800000, 0x20801000),
|
||||
};
|
||||
new(0x20800000, 0x20801000)
|
||||
];
|
||||
|
||||
InstEncoding[] sConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00001000, 0x00001000),
|
||||
};
|
||||
InstEncoding[] sConstraints =
|
||||
[
|
||||
new(0x00001000, 0x00001000)
|
||||
];
|
||||
|
||||
InstEncoding[] opcodesizeOpcodesizeOpcodesizesOpcodesizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opcodesizeOpcodesizeOpcodesizesOpcodesizeConstraints =
|
||||
[
|
||||
new(0x00004400, 0x0000C400),
|
||||
new(0x00008800, 0x0000C800),
|
||||
new(0x00009400, 0x0000D400),
|
||||
new(0x0000C000, 0x0000C000),
|
||||
};
|
||||
new(0x0000C000, 0x0000C000)
|
||||
];
|
||||
|
||||
InstEncoding[] qsizeConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x00000C00, 0x40000C00),
|
||||
};
|
||||
InstEncoding[] qsizeConstraints2 =
|
||||
[
|
||||
new(0x00000C00, 0x40000C00)
|
||||
];
|
||||
|
||||
InstEncoding[] rtRtConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rtRtConstraints =
|
||||
[
|
||||
new(0x00000018, 0x00000018),
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] opc1sizeOpc1sizeOpc1sizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opc1sizeOpc1sizeOpc1sizeConstraints =
|
||||
[
|
||||
new(0x40800000, 0xC0800000),
|
||||
new(0x80800000, 0xC0800000),
|
||||
new(0xC0800000, 0xC0800000),
|
||||
};
|
||||
new(0xC0800000, 0xC0800000)
|
||||
];
|
||||
|
||||
InstEncoding[] rtRt2Constraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] rtRt2Constraints =
|
||||
[
|
||||
new(0x0000001F, 0x0000001F),
|
||||
new(0x001F0000, 0x001F0000),
|
||||
};
|
||||
new(0x001F0000, 0x001F0000)
|
||||
];
|
||||
|
||||
InstEncoding[] opcConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0xC0000000, 0xC0000000),
|
||||
};
|
||||
InstEncoding[] opcConstraints =
|
||||
[
|
||||
new(0xC0000000, 0xC0000000)
|
||||
];
|
||||
|
||||
InstEncoding[] opcConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x40000000, 0x40000000),
|
||||
};
|
||||
InstEncoding[] opcConstraints2 =
|
||||
[
|
||||
new(0x40000000, 0x40000000)
|
||||
];
|
||||
|
||||
InstEncoding[] opclOpcConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opclOpcConstraints =
|
||||
[
|
||||
new(0x40000000, 0x40400000),
|
||||
new(0xC0000000, 0xC0000000),
|
||||
};
|
||||
new(0xC0000000, 0xC0000000)
|
||||
];
|
||||
|
||||
InstEncoding[] optionConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x00004000),
|
||||
};
|
||||
InstEncoding[] optionConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00004000)
|
||||
];
|
||||
|
||||
InstEncoding[] opc1sizeOpc1sizeOpc1sizeOptionConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] opc1sizeOpc1sizeOpc1sizeOptionConstraints =
|
||||
[
|
||||
new(0x40800000, 0xC0800000),
|
||||
new(0x80800000, 0xC0800000),
|
||||
new(0xC0800000, 0xC0800000),
|
||||
new(0x00000000, 0x00004000),
|
||||
};
|
||||
new(0x00000000, 0x00004000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] sfhwConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00400000, 0x80400000),
|
||||
};
|
||||
InstEncoding[] sfhwConstraints =
|
||||
[
|
||||
new(0x00400000, 0x80400000)
|
||||
];
|
||||
|
||||
InstEncoding[] rtConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000001, 0x00000001),
|
||||
};
|
||||
InstEncoding[] rtConstraints =
|
||||
[
|
||||
new(0x00000001, 0x00000001)
|
||||
];
|
||||
|
||||
InstEncoding[] usizeUsizeUsizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] usizeUsizeUsizeSizeConstraints =
|
||||
[
|
||||
new(0x20400000, 0x20C00000),
|
||||
new(0x20800000, 0x20C00000),
|
||||
new(0x20C00000, 0x20C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeConstraints2 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeConstraints2 =
|
||||
[
|
||||
new(0x00400000, 0x00C00000),
|
||||
new(0x00800000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] rtConstraints2 =
|
||||
[
|
||||
new(0x00000018, 0x00000018)
|
||||
];
|
||||
|
||||
InstEncoding[] sfopcConstraints =
|
||||
[
|
||||
new(0x00000400, 0x80000400)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeSizeConstraints =
|
||||
[
|
||||
new(0x00400000, 0x00C00000),
|
||||
new(0x00800000, 0x00C00000),
|
||||
};
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] rtConstraints2 = new InstEncoding[]
|
||||
{
|
||||
new(0x00000018, 0x00000018),
|
||||
};
|
||||
|
||||
InstEncoding[] sfopcConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000400, 0x80000400),
|
||||
};
|
||||
|
||||
InstEncoding[] sizeSizeSizeConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00400000, 0x00C00000),
|
||||
InstEncoding[] sizeSizeConstraints3 =
|
||||
[
|
||||
new(0x00800000, 0x00C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
new(0x00C00000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeConstraints3 = new InstEncoding[]
|
||||
{
|
||||
new(0x00800000, 0x00C00000),
|
||||
new(0x00C00000, 0x00C00000),
|
||||
};
|
||||
InstEncoding[] sfConstraints =
|
||||
[
|
||||
new(0x00000000, 0x80000000)
|
||||
];
|
||||
|
||||
InstEncoding[] sfConstraints = new InstEncoding[]
|
||||
{
|
||||
new(0x00000000, 0x80000000),
|
||||
};
|
||||
|
||||
InstEncoding[] immhImmhConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] immhImmhConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00780000),
|
||||
new(0x00400000, 0x00400000),
|
||||
};
|
||||
new(0x00400000, 0x00400000)
|
||||
];
|
||||
|
||||
InstEncoding[] sizeSizeConstraints4 = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] sizeSizeConstraints4 =
|
||||
[
|
||||
new(0x00C00000, 0x00C00000),
|
||||
new(0x00000000, 0x00C00000),
|
||||
};
|
||||
new(0x00000000, 0x00C00000)
|
||||
];
|
||||
|
||||
InstEncoding[] ssizeSsizeSsizeConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] ssizeSsizeSsizeConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00C00800),
|
||||
new(0x00400000, 0x00C00800),
|
||||
new(0x00800000, 0x00C00800),
|
||||
};
|
||||
new(0x00800000, 0x00C00800)
|
||||
];
|
||||
|
||||
InstEncoding[] immhOpuConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] immhOpuConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00780000),
|
||||
new(0x00000000, 0x20001000),
|
||||
};
|
||||
new(0x00000000, 0x20001000)
|
||||
];
|
||||
|
||||
InstEncoding[] immhQimmhOpuConstraints = new InstEncoding[]
|
||||
{
|
||||
InstEncoding[] immhQimmhOpuConstraints =
|
||||
[
|
||||
new(0x00000000, 0x00780000),
|
||||
new(0x00400000, 0x40400000),
|
||||
new(0x00000000, 0x20001000),
|
||||
};
|
||||
new(0x00000000, 0x20001000)
|
||||
];
|
||||
|
||||
List<InstInfo> insts = new()
|
||||
{
|
||||
List<InstInfo> insts =
|
||||
[
|
||||
new(0x5AC02000, 0x7FFFFC00, InstName.Abs, IsaVersion.v89, InstFlags.RdRn),
|
||||
new(0x5EE0B800, 0xFFFFFC00, InstName.AbsAdvsimdS, IsaVersion.v80, InstFlags.RdRnFpSimd),
|
||||
new(0x0E20B800, 0xBF3FFC00, qsizeConstraints, InstName.AbsAdvsimdV, IsaVersion.v80, InstFlags.RdRnFpSimd),
|
||||
@ -1587,7 +1587,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
|
||||
new(0xD503203F, 0xFFFFFFFF, InstName.Yield, IsaVersion.v80, InstFlags.None),
|
||||
new(0x0E003800, 0xBF20FC00, qsizeConstraints, InstName.Zip1Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd),
|
||||
new(0x0E007800, 0xBF20FC00, qsizeConstraints, InstName.Zip2Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd),
|
||||
};
|
||||
];
|
||||
|
||||
_table = new(insts);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
}
|
||||
}
|
||||
|
||||
private readonly List<MemoryBlock> _blocks = new();
|
||||
private readonly List<MemoryBlock> _blocks = [];
|
||||
|
||||
public CacheMemoryAllocator(int capacity)
|
||||
{
|
||||
|
@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
|
||||
private static CacheMemoryAllocator _cacheAllocator;
|
||||
|
||||
private static readonly List<CacheEntry> _cacheEntries = new();
|
||||
private static readonly List<CacheEntry> _cacheEntries = [];
|
||||
|
||||
private static readonly Lock _lock = new();
|
||||
private static bool _initialized;
|
||||
|
@ -6,8 +6,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
{
|
||||
class JitCacheInvalidation
|
||||
{
|
||||
private static readonly int[] _invalidationCode = new int[]
|
||||
{
|
||||
private static readonly int[] _invalidationCode =
|
||||
[
|
||||
unchecked((int)0xd53b0022), // mrs x2, ctr_el0
|
||||
unchecked((int)0xd3504c44), // ubfx x4, x2, #16, #4
|
||||
unchecked((int)0x52800083), // mov w3, #0x4
|
||||
@ -35,8 +35,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
unchecked((int)0x54ffffa8), // b.hi 54 <ic_clear_loop>
|
||||
unchecked((int)0xd5033b9f), // dsb ish
|
||||
unchecked((int)0xd5033fdf), // isb
|
||||
unchecked((int)0xd65f03c0), // ret
|
||||
};
|
||||
unchecked((int)0xd65f03c0) // ret
|
||||
];
|
||||
|
||||
private delegate void InvalidateCache(ulong start, ulong end);
|
||||
|
||||
|
@ -231,7 +231,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
_sharedCache.Pointer,
|
||||
SharedCacheSize);
|
||||
|
||||
List<(ulong, ThreadLocalCacheEntry)> toDelete = new();
|
||||
List<(ulong, ThreadLocalCacheEntry)> toDelete = [];
|
||||
|
||||
foreach ((ulong address, ThreadLocalCacheEntry entry) in _threadLocalCache)
|
||||
{
|
||||
|
@ -35,8 +35,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
||||
{
|
||||
_alignedRangeAction = alignedRangeAction;
|
||||
_alignedFunctionAction = alignedFunctionAction;
|
||||
_pendingFunctions = new();
|
||||
_ranges = new();
|
||||
_pendingFunctions = [];
|
||||
_ranges = [];
|
||||
}
|
||||
|
||||
public bool Has(ulong address)
|
||||
|
@ -26,7 +26,7 @@ namespace Ryujinx.Cpu.LightningJit.CodeGen.Arm64
|
||||
public Assembler(CodeWriter writer)
|
||||
{
|
||||
_code = writer.GetList();
|
||||
_labels = new List<LabelState>();
|
||||
_labels = [];
|
||||
}
|
||||
|
||||
public readonly Operand CreateLabel()
|
||||
|
@ -16,7 +16,7 @@ namespace Ryujinx.Cpu.LightningJit.CodeGen.Arm64
|
||||
|
||||
public TailMerger()
|
||||
{
|
||||
_branchPointers = new();
|
||||
_branchPointers = [];
|
||||
}
|
||||
|
||||
public void AddConditionalReturn(CodeWriter writer, in Assembler asm, ArmCondition returnCondition)
|
||||
|
@ -12,7 +12,7 @@ namespace Ryujinx.Cpu.LightningJit
|
||||
|
||||
public CodeWriter()
|
||||
{
|
||||
_instructions = new();
|
||||
_instructions = [];
|
||||
}
|
||||
|
||||
public void WriteInstruction(uint instruction)
|
||||
|
@ -34,7 +34,7 @@ namespace Ryujinx.Cpu.LightningJit.Table
|
||||
{
|
||||
int splitIndex = (int)((insts[index].Encoding >> _shift) & _mask);
|
||||
|
||||
(splitList[splitIndex] ??= new()).Add(insts[index]);
|
||||
(splitList[splitIndex] ??= []).Add(insts[index]);
|
||||
}
|
||||
|
||||
for (int index = 0; index < count; index++)
|
||||
|
@ -134,7 +134,7 @@ namespace Ryujinx.Cpu.LightningJit
|
||||
|
||||
public void InvalidateJitCacheRegion(ulong address, ulong size)
|
||||
{
|
||||
ulong[] overlapAddresses = Array.Empty<ulong>();
|
||||
ulong[] overlapAddresses = [];
|
||||
|
||||
int overlapsCount = Functions.GetOverlaps(address, size, ref overlapAddresses);
|
||||
|
||||
|
@ -140,7 +140,7 @@ namespace Ryujinx.Cpu.LightningJit
|
||||
/// <returns>Generated <see cref="DispatchStub"/></returns>
|
||||
private nint GenerateDispatchStub()
|
||||
{
|
||||
List<int> branchToFallbackOffsets = new();
|
||||
List<int> branchToFallbackOffsets = [];
|
||||
|
||||
CodeWriter writer = new();
|
||||
|
||||
|
@ -38,10 +38,10 @@ namespace Ryujinx.Cpu
|
||||
{
|
||||
Memory = memory;
|
||||
Size = size;
|
||||
_freeRanges = new List<Range>
|
||||
{
|
||||
new(0, size),
|
||||
};
|
||||
_freeRanges =
|
||||
[
|
||||
new(0, size)
|
||||
];
|
||||
}
|
||||
|
||||
public ulong Allocate(ulong size, ulong alignment)
|
||||
@ -185,7 +185,7 @@ namespace Ryujinx.Cpu
|
||||
|
||||
public PrivateMemoryAllocatorImpl(ulong blockAlignment, MemoryAllocationFlags allocationFlags)
|
||||
{
|
||||
_blocks = new List<T>();
|
||||
_blocks = [];
|
||||
_blockAlignment = blockAlignment;
|
||||
_allocationFlags = allocationFlags;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user