misc: chore: Use collection expressions in Cpu

This commit is contained in:
Evan Husted 2025-01-26 15:41:05 -06:00
parent ed2590a8ac
commit 3e12865f51
26 changed files with 934 additions and 931 deletions

View File

@ -164,7 +164,7 @@ namespace ARMeilleure.Common
_fillBottomLevel = new SparseMemoryBlock(bottomLevelSize, null, _sparseFill); _fillBottomLevel = new SparseMemoryBlock(bottomLevelSize, null, _sparseFill);
_fillBottomLevelPtr = (TEntry*)_fillBottomLevel.Block.Pointer; _fillBottomLevelPtr = (TEntry*)_fillBottomLevel.Block.Pointer;
_sparseReserved = new List<TableSparseBlock>(); _sparseReserved = [];
_sparseLock = new ReaderWriterLockSlim(); _sparseLock = new ReaderWriterLockSlim();
_sparseBlockSize = bottomLevelSize; _sparseBlockSize = bottomLevelSize;

View File

@ -21,7 +21,7 @@ namespace Ryujinx.Cpu.Jit.HostTracked
public AddressSpacePartitioned(MemoryTracking tracking, MemoryBlock backingMemory, NativePageTable nativePageTable, bool useProtectionMirrors) public AddressSpacePartitioned(MemoryTracking tracking, MemoryBlock backingMemory, NativePageTable nativePageTable, bool useProtectionMirrors)
{ {
_backingMemory = backingMemory; _backingMemory = backingMemory;
_partitions = new(); _partitions = [];
_asAllocator = new(tracking, nativePageTable.Read, _partitions); _asAllocator = new(tracking, nativePageTable.Read, _partitions);
_updatePtCallback = nativePageTable.Update; _updatePtCallback = nativePageTable.Update;
_useProtectionMirrors = useProtectionMirrors; _useProtectionMirrors = useProtectionMirrors;

View File

@ -340,7 +340,7 @@ namespace Ryujinx.Cpu.Jit
{ {
int pages = GetPagesCount(va, (uint)size, out va); int pages = GetPagesCount(va, (uint)size, out va);
List<MemoryRange> regions = new(); List<MemoryRange> regions = [];
ulong regionStart = GetPhysicalAddressChecked(va); ulong regionStart = GetPhysicalAddressChecked(va);
ulong regionSize = PageSize; ulong regionSize = PageSize;

View File

@ -443,7 +443,7 @@ namespace Ryujinx.Cpu.Jit
return null; return null;
} }
List<HostMemoryRange> regions = new(); List<HostMemoryRange> regions = [];
ulong endVa = va + size; ulong endVa = va + size;
try try

View File

@ -36,7 +36,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
RegisterAllocator = registerAllocator; RegisterAllocator = registerAllocator;
MemoryManagerType = mmType; MemoryManagerType = mmType;
_itConditions = new ArmCondition[4]; _itConditions = new ArmCondition[4];
_pendingBranches = new(); _pendingBranches = [];
IsThumb = isThumb; IsThumb = isThumb;
} }

View File

@ -10,8 +10,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
{ {
public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address, bool isThumb) public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address, bool isThumb)
{ {
List<Block> blocks = new(); List<Block> blocks = [];
List<ulong> branchTargets = new(); List<ulong> branchTargets = [];
while (true) while (true)
{ {
@ -202,7 +202,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
{ {
ulong startAddress = address; ulong startAddress = address;
List<InstInfo> insts = new(); List<InstInfo> insts = [];
uint encoding; uint encoding;
InstMeta meta; InstMeta meta;

View File

@ -9,494 +9,494 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
static InstTableA32() static InstTableA32()
{ {
InstEncoding[] condConstraints = new InstEncoding[] InstEncoding[] condConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000)
}; ];
InstEncoding[] condRnsRnConstraints = new InstEncoding[] InstEncoding[] condRnsRnConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x000F0000, 0x001F0000), new(0x000F0000, 0x001F0000),
new(0x000D0000, 0x000F0000), new(0x000D0000, 0x000F0000)
}; ];
InstEncoding[] condRnConstraints = new InstEncoding[] InstEncoding[] condRnConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x000D0000, 0x000F0000), new(0x000D0000, 0x000F0000)
}; ];
InstEncoding[] vdVmConstraints = new InstEncoding[] InstEncoding[] vdVmConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] condRnConstraints2 = new InstEncoding[] InstEncoding[] condRnConstraints2 =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x0000000F, 0x0000000F), new(0x0000000F, 0x0000000F)
}; ];
InstEncoding[] optionConstraints = new InstEncoding[] InstEncoding[] optionConstraints =
{ [
new(0x00000000, 0x0000000F), new(0x00000000, 0x0000000F)
}; ];
InstEncoding[] condPuwPwPuwPuwConstraints = new InstEncoding[] InstEncoding[] condPuwPwPuwPuwConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000),
new(0x01000000, 0x01200000), new(0x01000000, 0x01200000),
new(0x00200000, 0x01A00000), new(0x00200000, 0x01A00000),
new(0x01A00000, 0x01A00000), new(0x01A00000, 0x01A00000)
}; ];
InstEncoding[] condRnPuwConstraints = new InstEncoding[] InstEncoding[] condRnPuwConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000)
}; ];
InstEncoding[] condPuwConstraints = new InstEncoding[] InstEncoding[] condPuwConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000)
}; ];
InstEncoding[] condRnPwConstraints = new InstEncoding[] InstEncoding[] condRnPwConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x00200000, 0x01200000), new(0x00200000, 0x01200000)
}; ];
InstEncoding[] condPwConstraints = new InstEncoding[] InstEncoding[] condPwConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00200000, 0x01200000), new(0x00200000, 0x01200000)
}; ];
InstEncoding[] condRnConstraints3 = new InstEncoding[] InstEncoding[] condRnConstraints3 =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000)
}; ];
InstEncoding[] condMaskrConstraints = new InstEncoding[] InstEncoding[] condMaskrConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00000000, 0x004F0000), new(0x00000000, 0x004F0000)
}; ];
InstEncoding[] rnConstraints = new InstEncoding[] InstEncoding[] rnConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000)
}; ];
InstEncoding[] vdVnVmConstraints = new InstEncoding[] InstEncoding[] vdVnVmConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] condRaConstraints = new InstEncoding[] InstEncoding[] condRaConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x0000F000, 0x0000F000), new(0x0000F000, 0x0000F000)
}; ];
InstEncoding[] sizeQvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvnQvmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeVdConstraints = new InstEncoding[] InstEncoding[] sizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] qvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeVnVmConstraints = new InstEncoding[] InstEncoding[] sizeVnVmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] sizeVdOpvnConstraints = new InstEncoding[] InstEncoding[] sizeVdOpvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010100, 0x00010100), new(0x00010100, 0x00010100)
}; ];
InstEncoding[] cmodeCmodeQvdConstraints = new InstEncoding[] InstEncoding[] cmodeCmodeQvdConstraints =
{ [
new(0x00000000, 0x00000100), new(0x00000000, 0x00000100),
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qvdQvnQvmOpConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmOpConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000)
}; ];
InstEncoding[] qvdQvnQvmSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] qvdQvnConstraints = new InstEncoding[] InstEncoding[] qvdQvnConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040)
}; ];
InstEncoding[] qvdQvmConstraints = new InstEncoding[] InstEncoding[] qvdQvmConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeConstraints = new InstEncoding[] InstEncoding[] sizeConstraints =
{ [
new(0x00000000, 0x00000300), new(0x00000000, 0x00000300)
}; ];
InstEncoding[] vmConstraints = new InstEncoding[] InstEncoding[] vmConstraints =
{ [
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] opvdOpvmConstraints = new InstEncoding[] InstEncoding[] opvdOpvmConstraints =
{ [
new(0x00001100, 0x00001100), new(0x00001100, 0x00001100),
new(0x00000001, 0x00000101), new(0x00000001, 0x00000101)
}; ];
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00200000, 0x00300200), new(0x00200000, 0x00300200),
new(0x00000000, 0x00200000), new(0x00000000, 0x00200000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] condQvdEbConstraints = new InstEncoding[] InstEncoding[] condQvdEbConstraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00210000, 0x00210000), new(0x00210000, 0x00210000),
new(0x00400020, 0x00400020), new(0x00400020, 0x00400020)
}; ];
InstEncoding[] imm4QvdConstraints = new InstEncoding[] InstEncoding[] imm4QvdConstraints =
{ [
new(0x00000000, 0x00070000), new(0x00000000, 0x00070000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qvdQvnQvmQimm4Constraints = new InstEncoding[] InstEncoding[] qvdQvnQvmQimm4Constraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000800, 0x00000840), new(0x00000800, 0x00000840)
}; ];
InstEncoding[] qvdConstraints = new InstEncoding[] InstEncoding[] qvdConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] vdVnConstraints = new InstEncoding[] InstEncoding[] vdVnConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000)
}; ];
InstEncoding[] sizeConstraints2 = new InstEncoding[] InstEncoding[] sizeConstraints2 =
{ [
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00)
}; ];
InstEncoding[] sizeIndexAlignIndexAlignConstraints = new InstEncoding[] InstEncoding[] sizeIndexAlignIndexAlignConstraints =
{ [
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00000010, 0x00000030), new(0x00000010, 0x00000030),
new(0x00000020, 0x00000030), new(0x00000020, 0x00000030)
}; ];
InstEncoding[] sizeSizeaConstraints = new InstEncoding[] InstEncoding[] sizeSizeaConstraints =
{ [
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
new(0x00000010, 0x000000D0), new(0x00000010, 0x000000D0)
}; ];
InstEncoding[] alignConstraints = new InstEncoding[] InstEncoding[] alignConstraints =
{ [
new(0x00000020, 0x00000020), new(0x00000020, 0x00000020)
}; ];
InstEncoding[] alignConstraints2 = new InstEncoding[] InstEncoding[] alignConstraints2 =
{ [
new(0x00000030, 0x00000030)
];
InstEncoding[] sizeConstraints3 =
[
new(0x000000C0, 0x000000C0)
];
InstEncoding[] alignSizeConstraints =
[
new(0x00000030, 0x00000030), new(0x00000030, 0x00000030),
}; new(0x000000C0, 0x000000C0)
];
InstEncoding[] sizeConstraints3 = new InstEncoding[] InstEncoding[] sizeAConstraints =
{ [
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
}; new(0x00000010, 0x00000010)
];
InstEncoding[] alignSizeConstraints = new InstEncoding[] InstEncoding[] sizeAlignConstraints =
{ [
new(0x00000030, 0x00000030),
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
}; new(0x00000020, 0x00000020)
];
InstEncoding[] sizeAConstraints = new InstEncoding[] InstEncoding[] sizeIndexAlignConstraints =
{ [
new(0x000000C0, 0x000000C0),
new(0x00000010, 0x00000010),
};
InstEncoding[] sizeAlignConstraints = new InstEncoding[]
{
new(0x000000C0, 0x000000C0),
new(0x00000020, 0x00000020),
};
InstEncoding[] sizeIndexAlignConstraints = new InstEncoding[]
{
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00000030, 0x00000030), new(0x00000030, 0x00000030)
}; ];
InstEncoding[] sizeaConstraints = new InstEncoding[] InstEncoding[] sizeaConstraints =
{ [
new(0x000000C0, 0x000000D0), new(0x000000C0, 0x000000D0)
}; ];
InstEncoding[] sizeSizeVdConstraints = new InstEncoding[] InstEncoding[] sizeSizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeQvdQvnConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x01001000, 0x01001000), new(0x01001000, 0x01001000),
new(0x01010000, 0x01010000), new(0x01010000, 0x01010000)
}; ];
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints = new InstEncoding[] InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00180000, 0x00380000), new(0x00180000, 0x00380000),
new(0x00280000, 0x00380000), new(0x00280000, 0x00380000),
new(0x00300000, 0x00380000), new(0x00300000, 0x00380000),
new(0x00380000, 0x00380000), new(0x00380000, 0x00380000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeVmConstraints = new InstEncoding[] InstEncoding[] sizeVmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] condOpc1opc2Constraints = new InstEncoding[] InstEncoding[] condOpc1opc2Constraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00000040, 0x00400060), new(0x00000040, 0x00400060)
}; ];
InstEncoding[] condUopc1opc2Uopc1opc2Constraints = new InstEncoding[] InstEncoding[] condUopc1opc2Uopc1opc2Constraints =
{ [
new(0xF0000000, 0xF0000000), new(0xF0000000, 0xF0000000),
new(0x00800000, 0x00C00060), new(0x00800000, 0x00C00060),
new(0x00000040, 0x00400060), new(0x00000040, 0x00400060)
}; ];
InstEncoding[] sizeOpuOpsizeVdConstraints = new InstEncoding[] InstEncoding[] sizeOpuOpsizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x01000200, 0x01000200), new(0x01000200, 0x01000200),
new(0x00100200, 0x00300200), new(0x00100200, 0x00300200),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x01100000, 0x01300000), new(0x01100000, 0x01300000),
new(0x01200000, 0x01300000), new(0x01200000, 0x01300000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] cmodeQvdConstraints = new InstEncoding[] InstEncoding[] cmodeQvdConstraints =
{ [
new(0x00000E00, 0x00000E00), new(0x00000E00, 0x00000E00),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qConstraints = new InstEncoding[] InstEncoding[] qConstraints =
{ [
new(0x00000040, 0x00000040), new(0x00000040, 0x00000040)
}; ];
InstEncoding[] sizeQConstraints = new InstEncoding[] InstEncoding[] sizeQConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000040, 0x00000040), new(0x00000040, 0x00000040)
}; ];
InstEncoding[] sizeConstraints4 = new InstEncoding[] InstEncoding[] sizeConstraints4 =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] qvdQvnQvmSizeSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmSizeSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] sizeSizeQvdQvnConstraints = new InstEncoding[] InstEncoding[] sizeSizeQvdQvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x01001000, 0x01001000), new(0x01001000, 0x01001000),
new(0x01010000, 0x01010000), new(0x01010000, 0x01010000)
}; ];
InstEncoding[] opSizeVmConstraints = new InstEncoding[] InstEncoding[] opSizeVmConstraints =
{ [
new(0x00000000, 0x000000C0), new(0x00000000, 0x000000C0),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] qvdQvmQvnConstraints = new InstEncoding[] InstEncoding[] qvdQvmQvnConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040)
}; ];
InstEncoding[] imm6UopVmConstraints = new InstEncoding[] InstEncoding[] imm6UopVmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00000000, 0x01000100), new(0x00000000, 0x01000100),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] imm6lUopQvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6lUopQvdQvmConstraints =
{ [
new(0x00000000, 0x00380080), new(0x00000000, 0x00380080),
new(0x00000000, 0x01000100), new(0x00000000, 0x01000100),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] qvdQvmSizeSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvmSizeSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x000C0000), new(0x00000000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000)
}; ];
InstEncoding[] sizeSizeSizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeSizeSizeQvdQvmConstraints =
{ [
new(0x00040000, 0x000C0000), new(0x00040000, 0x000C0000),
new(0x00080000, 0x000C0000), new(0x00080000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeSizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeSizeQvdQvmConstraints =
{ [
new(0x00080000, 0x000C0000), new(0x00080000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] imm6lQvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6lQvdQvmConstraints =
{ [
new(0x00000000, 0x00380080), new(0x00000000, 0x00380080),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] imm6VmConstraints = new InstEncoding[] InstEncoding[] imm6VmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] imm6VdImm6Imm6Imm6Constraints = new InstEncoding[] InstEncoding[] imm6VdImm6Imm6Imm6Constraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00080000, 0x003F0000), new(0x00080000, 0x003F0000),
new(0x00100000, 0x003F0000), new(0x00100000, 0x003F0000),
new(0x00200000, 0x003F0000), new(0x00200000, 0x003F0000)
}; ];
InstEncoding[] sizeVdConstraints2 = new InstEncoding[] InstEncoding[] sizeVdConstraints2 =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeQsizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeQsizeQvdQvmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00080000, 0x000C0040), new(0x00080000, 0x000C0040),
new(0x00001040, 0x00001040), 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(0x02A00000, 0x0FE00000, condConstraints, InstName.AdcI, T.AdcIA1, IsaVersion.v80, InstFlags.CondRd),
new(0x00A00000, 0x0FE00010, condConstraints, InstName.AdcR, T.AdcRA1, 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), 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(0x0320F002, 0x0FFFFFFF, condConstraints, InstName.Wfe, T.WfeA1, IsaVersion.v80, InstFlags.Cond),
new(0x0320F003, 0x0FFFFFFF, condConstraints, InstName.Wfi, T.WfiA1, 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), new(0x0320F001, 0x0FFFFFFF, condConstraints, InstName.Yield, T.YieldA1, IsaVersion.v80, InstFlags.Cond),
}; ];
_table = new(insts); _table = new(insts);
} }

View File

@ -9,48 +9,49 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
static InstTableT16() static InstTableT16()
{ {
InstEncoding[] rmRdndnConstraints = new InstEncoding[] InstEncoding[] rmRdndnConstraints =
{ [
new(0x00680000, 0x00780000), new(0x00680000, 0x00780000),
new(0x00850000, 0x00870000), new(0x00850000, 0x00870000)
}; ];
InstEncoding[] rmConstraints = new InstEncoding[] InstEncoding[] rmConstraints =
{ [
new(0x00680000, 0x00780000), new(0x00680000, 0x00780000)
}; ];
InstEncoding[] condCondConstraints = new InstEncoding[] InstEncoding[] condCondConstraints =
{ [
new(0x0E000000, 0x0F000000), new(0x0E000000, 0x0F000000),
new(0x0F000000, 0x0F000000), new(0x0F000000, 0x0F000000)
}; ];
InstEncoding[] maskConstraints = new InstEncoding[] InstEncoding[] maskConstraints =
{ [
new(0x00000000, 0x000F0000), new(0x00000000, 0x000F0000)
}; ];
InstEncoding[] opConstraints = new InstEncoding[] InstEncoding[] opConstraints =
{ [
new(0x18000000, 0x18000000), new(0x18000000, 0x18000000)
}; ];
InstEncoding[] opOpOpOpConstraints = new InstEncoding[] InstEncoding[] opOpOpOpConstraints =
{ [
new(0x00000000, 0x03C00000), new(0x00000000, 0x03C00000),
new(0x00400000, 0x03C00000), new(0x00400000, 0x03C00000),
new(0x01400000, 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(0x41400000, 0xFFC00000, InstName.AdcR, T.AdcRT1, IsaVersion.v80, InstFlags.Rdn),
new(0x1C000000, 0xFE000000, InstName.AddI, T.AddIT1, IsaVersion.v80, InstFlags.Rd), new(0x1C000000, 0xFE000000, InstName.AddI, T.AddIT1, IsaVersion.v80, InstFlags.Rd),
new(0x30000000, 0xF8000000, InstName.AddI, T.AddIT2, IsaVersion.v80, InstFlags.Rdn), new(0x30000000, 0xF8000000, InstName.AddI, T.AddIT2, IsaVersion.v80, InstFlags.Rdn),
new(0x18000000, 0xFE000000, InstName.AddR, T.AddRT1, IsaVersion.v80, InstFlags.Rd), 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(0xA8000000, 0xF8000000, InstName.AddSpI, T.AddSpIT1, IsaVersion.v80, InstFlags.RdRd16),
new(0xB0000000, 0xFF800000, InstName.AddSpI, T.AddSpIT2, IsaVersion.v80, InstFlags.None), new(0xB0000000, 0xFF800000, InstName.AddSpI, T.AddSpIT2, IsaVersion.v80, InstFlags.None),
new(0x44680000, 0xFF780000, InstName.AddSpR, T.AddSpRT1, 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(0x20000000, 0xF8000000, InstName.MovI, T.MovIT1, IsaVersion.v80, InstFlags.RdRd16),
new(0x46000000, 0xFF000000, InstName.MovR, T.MovRT1, IsaVersion.v80, InstFlags.Rd), new(0x46000000, 0xFF000000, InstName.MovR, T.MovRT1, IsaVersion.v80, InstFlags.Rd),
new(0x00000000, 0xE0000000, opConstraints, InstName.MovR, T.MovRT2, 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(0x43400000, 0xFFC00000, InstName.Mul, T.MulT1, IsaVersion.v80, InstFlags.None),
new(0x43C00000, 0xFFC00000, InstName.MvnR, T.MvnRT1, IsaVersion.v80, InstFlags.Rd), new(0x43C00000, 0xFFC00000, InstName.MvnR, T.MvnRT1, IsaVersion.v80, InstFlags.Rd),
new(0xBF000000, 0xFFFF0000, InstName.Nop, T.NopT1, IsaVersion.v80, InstFlags.None), 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(0x42400000, 0xFFC00000, InstName.RsbI, T.RsbIT1, IsaVersion.v80, InstFlags.Rd),
new(0x41800000, 0xFFC00000, InstName.SbcR, T.SbcRT1, IsaVersion.v80, InstFlags.Rdn), new(0x41800000, 0xFFC00000, InstName.SbcR, T.SbcRT1, IsaVersion.v80, InstFlags.Rdn),
new(0xB6500000, 0xFFF70000, InstName.Setend, T.SetendT1, IsaVersion.v80, InstFlags.None), 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(0xBF400000, 0xFFFF0000, InstName.Sev, T.SevT1, IsaVersion.v80, InstFlags.None),
new(0xBF500000, 0xFFFF0000, InstName.Sevl, T.SevlT1, 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), 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(0xB2800000, 0xFFC00000, InstName.Uxth, T.UxthT1, IsaVersion.v80, InstFlags.Rd),
new(0xBF200000, 0xFFFF0000, InstName.Wfe, T.WfeT1, IsaVersion.v80, InstFlags.None), new(0xBF200000, 0xFFFF0000, InstName.Wfe, T.WfeT1, IsaVersion.v80, InstFlags.None),
new(0xBF300000, 0xFFFF0000, InstName.Wfi, T.WfiT1, 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); _table = new(insts);
} }

View File

@ -9,525 +9,525 @@ namespace Ryujinx.Cpu.LightningJit.Arm32
static InstTableT32() static InstTableT32()
{ {
InstEncoding[] rnRdsConstraints = new InstEncoding[] InstEncoding[] rnRdsConstraints =
{ [
new(0x000D0000, 0x000F0000), new(0x000D0000, 0x000F0000),
new(0x00100F00, 0x00100F00), new(0x00100F00, 0x00100F00)
}; ];
InstEncoding[] rnRnConstraints = new InstEncoding[] InstEncoding[] rnRnConstraints =
{ [
new(0x000D0000, 0x000F0000), new(0x000D0000, 0x000F0000),
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000)
}; ];
InstEncoding[] rdsConstraints = new InstEncoding[] InstEncoding[] rdsConstraints =
{ [
new(0x00100F00, 0x00100F00), new(0x00100F00, 0x00100F00)
}; ];
InstEncoding[] vdVmConstraints = new InstEncoding[] InstEncoding[] vdVmConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] condCondCondConstraints = new InstEncoding[] InstEncoding[] condCondCondConstraints =
{ [
new(0x03800000, 0x03C00000), new(0x03800000, 0x03C00000),
new(0x03C00000, 0x03C00000), new(0x03C00000, 0x03C00000),
new(0x03800000, 0x03800000), new(0x03800000, 0x03800000)
}; ];
InstEncoding[] rnConstraints = new InstEncoding[] InstEncoding[] rnConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000)
}; ];
InstEncoding[] hConstraints = new InstEncoding[] InstEncoding[] hConstraints =
{ [
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] imodmConstraints = new InstEncoding[] InstEncoding[] imodmConstraints =
{ [
new(0x00000000, 0x00000700), new(0x00000000, 0x00000700)
}; ];
InstEncoding[] optionConstraints = new InstEncoding[] InstEncoding[] optionConstraints =
{ [
new(0x00000000, 0x0000000F), new(0x00000000, 0x0000000F)
}; ];
InstEncoding[] puwPwPuwPuwConstraints = new InstEncoding[] InstEncoding[] puwPwPuwPuwConstraints =
{ [
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000),
new(0x01000000, 0x01200000), new(0x01000000, 0x01200000),
new(0x00200000, 0x01A00000), new(0x00200000, 0x01A00000),
new(0x01A00000, 0x01A00000), new(0x01A00000, 0x01A00000)
}; ];
InstEncoding[] rnPuwConstraints = new InstEncoding[] InstEncoding[] rnPuwConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000)
}; ];
InstEncoding[] puwConstraints = new InstEncoding[] InstEncoding[] puwConstraints =
{ [
new(0x00000000, 0x01A00000), new(0x00000000, 0x01A00000)
}; ];
InstEncoding[] rnRtConstraints = new InstEncoding[] InstEncoding[] rnRtConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x0000F000, 0x0000F000), new(0x0000F000, 0x0000F000)
}; ];
InstEncoding[] rnRtpuwPuwPwConstraints = new InstEncoding[] InstEncoding[] rnRtpuwPuwPwConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x0000F400, 0x0000F700), new(0x0000F400, 0x0000F700),
new(0x00000600, 0x00000700), new(0x00000600, 0x00000700),
new(0x00000000, 0x00000500), new(0x00000000, 0x00000500)
}; ];
InstEncoding[] rtConstraints = new InstEncoding[] InstEncoding[] rtConstraints =
{ [
new(0x0000F000, 0x0000F000), new(0x0000F000, 0x0000F000)
}; ];
InstEncoding[] rnPwConstraints = new InstEncoding[] InstEncoding[] rnPwConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x00000000, 0x01200000), new(0x00000000, 0x01200000)
}; ];
InstEncoding[] pwConstraints = new InstEncoding[] InstEncoding[] pwConstraints =
{ [
new(0x00000000, 0x01200000), new(0x00000000, 0x01200000)
}; ];
InstEncoding[] rnPuwPwConstraints = new InstEncoding[] InstEncoding[] rnPuwPwConstraints =
{ [
new(0x000F0000, 0x000F0000), new(0x000F0000, 0x000F0000),
new(0x00000600, 0x00000700), new(0x00000600, 0x00000700),
new(0x00000000, 0x00000500), new(0x00000000, 0x00000500)
}; ];
InstEncoding[] raConstraints = new InstEncoding[] InstEncoding[] raConstraints =
{ [
new(0x0000F000, 0x0000F000), new(0x0000F000, 0x0000F000)
}; ];
InstEncoding[] sTConstraints = new InstEncoding[] InstEncoding[] sTConstraints =
{ [
new(0x00100000, 0x00100000), new(0x00100000, 0x00100000),
new(0x00000010, 0x00000010), new(0x00000010, 0x00000010)
}; ];
InstEncoding[] vdVnVmConstraints = new InstEncoding[] InstEncoding[] vdVnVmConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] shimm2imm3Constraints = new InstEncoding[] InstEncoding[] shimm2imm3Constraints =
{ [
new(0x00200000, 0x002070C0), new(0x00200000, 0x002070C0)
}; ];
InstEncoding[] rnimm8Constraints = new InstEncoding[] InstEncoding[] rnimm8Constraints =
{ [
new(0x000E0000, 0x000F00FF), new(0x000E0000, 0x000F00FF)
}; ];
InstEncoding[] sizeQvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvnQvmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeVdConstraints = new InstEncoding[] InstEncoding[] sizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] qvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeVnVmConstraints = new InstEncoding[] InstEncoding[] sizeVnVmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] sizeVdOpvnConstraints = new InstEncoding[] InstEncoding[] sizeVdOpvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010100, 0x00010100), new(0x00010100, 0x00010100)
}; ];
InstEncoding[] cmodeCmodeQvdConstraints = new InstEncoding[] InstEncoding[] cmodeCmodeQvdConstraints =
{ [
new(0x00000000, 0x00000100), new(0x00000000, 0x00000100),
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qvdQvnQvmOpConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmOpConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000)
}; ];
InstEncoding[] qvdQvnQvmSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] qvdQvnConstraints = new InstEncoding[] InstEncoding[] qvdQvnConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040)
}; ];
InstEncoding[] qvdQvmConstraints = new InstEncoding[] InstEncoding[] qvdQvmConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeConstraints = new InstEncoding[] InstEncoding[] sizeConstraints =
{ [
new(0x00000000, 0x00000300), new(0x00000000, 0x00000300)
}; ];
InstEncoding[] vmConstraints = new InstEncoding[] InstEncoding[] vmConstraints =
{ [
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] opvdOpvmConstraints = new InstEncoding[] InstEncoding[] opvdOpvmConstraints =
{ [
new(0x00001100, 0x00001100), new(0x00001100, 0x00001100),
new(0x00000001, 0x00000101), new(0x00000001, 0x00000101)
}; ];
InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6Opimm6Imm6QvdQvmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00200000, 0x00300200), new(0x00200000, 0x00300200),
new(0x00000000, 0x00200000), new(0x00000000, 0x00200000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] qvdEbConstraints = new InstEncoding[] InstEncoding[] qvdEbConstraints =
{ [
new(0x00210000, 0x00210000), new(0x00210000, 0x00210000),
new(0x00400020, 0x00400020), new(0x00400020, 0x00400020)
}; ];
InstEncoding[] imm4QvdConstraints = new InstEncoding[] InstEncoding[] imm4QvdConstraints =
{ [
new(0x00000000, 0x00070000), new(0x00000000, 0x00070000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qvdQvnQvmQimm4Constraints = new InstEncoding[] InstEncoding[] qvdQvnQvmQimm4Constraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000800, 0x00000840), new(0x00000800, 0x00000840)
}; ];
InstEncoding[] qvdConstraints = new InstEncoding[] InstEncoding[] qvdConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] vdVnConstraints = new InstEncoding[] InstEncoding[] vdVnConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000)
}; ];
InstEncoding[] sizeConstraints2 = new InstEncoding[] InstEncoding[] sizeConstraints2 =
{ [
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00)
}; ];
InstEncoding[] sizeIndexAlignIndexAlignConstraints = new InstEncoding[] InstEncoding[] sizeIndexAlignIndexAlignConstraints =
{ [
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00000010, 0x00000030), new(0x00000010, 0x00000030),
new(0x00000020, 0x00000030), new(0x00000020, 0x00000030)
}; ];
InstEncoding[] sizeSizeaConstraints = new InstEncoding[] InstEncoding[] sizeSizeaConstraints =
{ [
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
new(0x00000010, 0x000000D0), new(0x00000010, 0x000000D0)
}; ];
InstEncoding[] alignConstraints = new InstEncoding[] InstEncoding[] alignConstraints =
{ [
new(0x00000020, 0x00000020), new(0x00000020, 0x00000020)
}; ];
InstEncoding[] alignConstraints2 = new InstEncoding[] InstEncoding[] alignConstraints2 =
{ [
new(0x00000030, 0x00000030)
];
InstEncoding[] sizeConstraints3 =
[
new(0x000000C0, 0x000000C0)
];
InstEncoding[] alignSizeConstraints =
[
new(0x00000030, 0x00000030), new(0x00000030, 0x00000030),
}; new(0x000000C0, 0x000000C0)
];
InstEncoding[] sizeConstraints3 = new InstEncoding[] InstEncoding[] sizeAConstraints =
{ [
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
}; new(0x00000010, 0x00000010)
];
InstEncoding[] alignSizeConstraints = new InstEncoding[] InstEncoding[] sizeAlignConstraints =
{ [
new(0x00000030, 0x00000030),
new(0x000000C0, 0x000000C0), new(0x000000C0, 0x000000C0),
}; new(0x00000020, 0x00000020)
];
InstEncoding[] sizeAConstraints = new InstEncoding[] InstEncoding[] sizeIndexAlignConstraints =
{ [
new(0x000000C0, 0x000000C0),
new(0x00000010, 0x00000010),
};
InstEncoding[] sizeAlignConstraints = new InstEncoding[]
{
new(0x000000C0, 0x000000C0),
new(0x00000020, 0x00000020),
};
InstEncoding[] sizeIndexAlignConstraints = new InstEncoding[]
{
new(0x00000C00, 0x00000C00), new(0x00000C00, 0x00000C00),
new(0x00000030, 0x00000030), new(0x00000030, 0x00000030)
}; ];
InstEncoding[] sizeaConstraints = new InstEncoding[] InstEncoding[] sizeaConstraints =
{ [
new(0x000000C0, 0x000000D0), new(0x000000C0, 0x000000D0)
}; ];
InstEncoding[] sizeSizeVdConstraints = new InstEncoding[] InstEncoding[] sizeSizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeQvdQvnConstraints = new InstEncoding[] InstEncoding[] sizeQvdQvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x10001000, 0x10001000), new(0x10001000, 0x10001000),
new(0x10010000, 0x10010000), new(0x10010000, 0x10010000)
}; ];
InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints = new InstEncoding[] InstEncoding[] imm3hImm3hImm3hImm3hImm3hVdConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00180000, 0x00380000), new(0x00180000, 0x00380000),
new(0x00280000, 0x00380000), new(0x00280000, 0x00380000),
new(0x00300000, 0x00380000), new(0x00300000, 0x00380000),
new(0x00380000, 0x00380000), new(0x00380000, 0x00380000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeVmConstraints = new InstEncoding[] InstEncoding[] sizeVmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] opc1opc2Constraints = new InstEncoding[] InstEncoding[] opc1opc2Constraints =
{ [
new(0x00000040, 0x00400060), new(0x00000040, 0x00400060)
}; ];
InstEncoding[] uopc1opc2Uopc1opc2Constraints = new InstEncoding[] InstEncoding[] uopc1opc2Uopc1opc2Constraints =
{ [
new(0x00800000, 0x00C00060), new(0x00800000, 0x00C00060),
new(0x00000040, 0x00400060), new(0x00000040, 0x00400060)
}; ];
InstEncoding[] sizeOpuOpsizeVdConstraints = new InstEncoding[] InstEncoding[] sizeOpuOpsizeVdConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x10000200, 0x10000200), new(0x10000200, 0x10000200),
new(0x00100200, 0x00300200), new(0x00100200, 0x00300200),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints = new InstEncoding[] InstEncoding[] sizeOpsizeOpsizeQvdQvnQvmConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x10100000, 0x10300000), new(0x10100000, 0x10300000),
new(0x10200000, 0x10300000), new(0x10200000, 0x10300000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] cmodeQvdConstraints = new InstEncoding[] InstEncoding[] cmodeQvdConstraints =
{ [
new(0x00000E00, 0x00000E00), new(0x00000E00, 0x00000E00),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040)
}; ];
InstEncoding[] qConstraints = new InstEncoding[] InstEncoding[] qConstraints =
{ [
new(0x00000040, 0x00000040), new(0x00000040, 0x00000040)
}; ];
InstEncoding[] sizeQConstraints = new InstEncoding[] InstEncoding[] sizeQConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000040, 0x00000040), new(0x00000040, 0x00000040)
}; ];
InstEncoding[] sizeConstraints4 = new InstEncoding[] InstEncoding[] sizeConstraints4 =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] qvdQvnQvmSizeSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvnQvmSizeSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000)
}; ];
InstEncoding[] sizeSizeQvdQvnConstraints = new InstEncoding[] InstEncoding[] sizeSizeQvdQvnConstraints =
{ [
new(0x00300000, 0x00300000), new(0x00300000, 0x00300000),
new(0x00000000, 0x00300000), new(0x00000000, 0x00300000),
new(0x10001000, 0x10001000), new(0x10001000, 0x10001000),
new(0x10010000, 0x10010000), new(0x10010000, 0x10010000)
}; ];
InstEncoding[] opSizeVmConstraints = new InstEncoding[] InstEncoding[] opSizeVmConstraints =
{ [
new(0x00000000, 0x000000C0), new(0x00000000, 0x000000C0),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] qvdQvmQvnConstraints = new InstEncoding[] InstEncoding[] qvdQvmQvnConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00010040, 0x00010040), new(0x00010040, 0x00010040)
}; ];
InstEncoding[] imm6UopVmConstraints = new InstEncoding[] InstEncoding[] imm6UopVmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00000000, 0x10000100), new(0x00000000, 0x10000100),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] imm6lUopQvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6lUopQvdQvmConstraints =
{ [
new(0x00000000, 0x00380080), new(0x00000000, 0x00380080),
new(0x00000000, 0x10000100), new(0x00000000, 0x10000100),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] qvdQvmSizeSizeConstraints = new InstEncoding[] InstEncoding[] qvdQvmSizeSizeConstraints =
{ [
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041),
new(0x00000000, 0x000C0000), new(0x00000000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000)
}; ];
InstEncoding[] sizeSizeSizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeSizeSizeQvdQvmConstraints =
{ [
new(0x00040000, 0x000C0000), new(0x00040000, 0x000C0000),
new(0x00080000, 0x000C0000), new(0x00080000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] sizeSizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeSizeQvdQvmConstraints =
{ [
new(0x00080000, 0x000C0000), new(0x00080000, 0x000C0000),
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] imm6lQvdQvmConstraints = new InstEncoding[] InstEncoding[] imm6lQvdQvmConstraints =
{ [
new(0x00000000, 0x00380080), new(0x00000000, 0x00380080),
new(0x00001040, 0x00001040), new(0x00001040, 0x00001040),
new(0x00000041, 0x00000041), new(0x00000041, 0x00000041)
}; ];
InstEncoding[] imm6VmConstraints = new InstEncoding[] InstEncoding[] imm6VmConstraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] imm6VdImm6Imm6Imm6Constraints = new InstEncoding[] InstEncoding[] imm6VdImm6Imm6Imm6Constraints =
{ [
new(0x00000000, 0x00380000), new(0x00000000, 0x00380000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000),
new(0x00080000, 0x003F0000), new(0x00080000, 0x003F0000),
new(0x00100000, 0x003F0000), new(0x00100000, 0x003F0000),
new(0x00200000, 0x003F0000), new(0x00200000, 0x003F0000)
}; ];
InstEncoding[] sizeVdConstraints2 = new InstEncoding[] InstEncoding[] sizeVdConstraints2 =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] sizeQsizeQvdQvmConstraints = new InstEncoding[] InstEncoding[] sizeQsizeQvdQvmConstraints =
{ [
new(0x000C0000, 0x000C0000), new(0x000C0000, 0x000C0000),
new(0x00080000, 0x000C0040), new(0x00080000, 0x000C0040),
new(0x00001040, 0x00001040), 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(0xF1400000, 0xFBE08000, InstName.AdcI, T.AdcIT1, IsaVersion.v80, InstFlags.Rd),
new(0xEB400000, 0xFFE08000, InstName.AdcR, T.AdcRT2, 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), 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(0xF3AF8002, 0xFFFFFFFF, InstName.Wfe, T.WfeT2, IsaVersion.v80, InstFlags.None),
new(0xF3AF8003, 0xFFFFFFFF, InstName.Wfi, T.WfiT2, 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), new(0xF3AF8001, 0xFFFFFFFF, InstName.Yield, T.YieldT2, IsaVersion.v80, InstFlags.None),
}; ];
_table = new(insts); _table = new(insts);
} }

View File

@ -25,8 +25,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64
{ {
Debug.Assert((int)((endAddress - address) / 4) == instructions.Count); Debug.Assert((int)((endAddress - address) / 4) == instructions.Count);
_predecessors = new(); _predecessors = [];
_successors = new(); _successors = [];
Address = address; Address = address;
EndAddress = endAddress; EndAddress = endAddress;
Instructions = instructions; Instructions = instructions;

View File

@ -36,8 +36,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64
{ {
Console.WriteLine($"bb {block.Index}"); Console.WriteLine($"bb {block.Index}");
List<int> predList = new(); List<int> predList = [];
List<int> succList = new(); List<int> succList = [];
for (int index = 0; index < block.PredecessorsCount; index++) for (int index = 0; index < block.PredecessorsCount; index++)
{ {

View File

@ -309,7 +309,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
MultiBlock multiBlock = Decoder.DecodeMulti(cpuPreset, memoryManager, address); MultiBlock multiBlock = Decoder.DecodeMulti(cpuPreset, memoryManager, address);
Dictionary<ulong, int> targets = new(); Dictionary<ulong, int> targets = new();
List<PendingBranch> pendingBranches = new(); List<PendingBranch> pendingBranches = [];
uint gprUseMask = multiBlock.GlobalUseMask.GprMask; uint gprUseMask = multiBlock.GlobalUseMask.GprMask;
uint fpSimdUseMask = multiBlock.GlobalUseMask.FpSimdMask; uint fpSimdUseMask = multiBlock.GlobalUseMask.FpSimdMask;

View File

@ -15,8 +15,8 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address) public static MultiBlock DecodeMulti(CpuPreset cpuPreset, IMemoryManager memoryManager, ulong address)
{ {
List<Block> blocks = new(); List<Block> blocks = [];
List<ulong> branchTargets = new(); List<ulong> branchTargets = [];
RegisterMask useMask = RegisterMask.Zero; RegisterMask useMask = RegisterMask.Zero;
@ -238,7 +238,7 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
{ {
ulong startAddress = address; ulong startAddress = address;
List<InstInfo> insts = new(); List<InstInfo> insts = [];
uint gprUseMask = useMask.GprMask; uint gprUseMask = useMask.GprMask;
uint fpSimdUseMask = useMask.FpSimdMask; uint fpSimdUseMask = useMask.FpSimdMask;

View File

@ -94,37 +94,37 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
static InstTable() static InstTable()
{ {
InstEncoding[] qsizeConstraints = new InstEncoding[] InstEncoding[] qsizeConstraints =
{ [
new(0x00C00000, 0x40C00000), new(0x00C00000, 0x40C00000)
}; ];
InstEncoding[] sizeConstraints = new InstEncoding[] InstEncoding[] sizeConstraints =
{ [
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000)
}; ];
InstEncoding[] opuOpuOpuConstraints = new InstEncoding[] InstEncoding[] opuOpuOpuConstraints =
{ [
new(0x00001400, 0x00001C00), new(0x00001400, 0x00001C00),
new(0x00001800, 0x00001C00), new(0x00001800, 0x00001C00),
new(0x00001C00, 0x00001C00), new(0x00001C00, 0x00001C00)
}; ];
InstEncoding[] shiftSfimm6Constraints = new InstEncoding[] InstEncoding[] shiftSfimm6Constraints =
{ [
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000),
new(0x00008000, 0x80008000), new(0x00008000, 0x80008000)
}; ];
InstEncoding[] qsizeSizeConstraints = new InstEncoding[] InstEncoding[] qsizeSizeConstraints =
{ [
new(0x00800000, 0x40C00000), new(0x00800000, 0x40C00000),
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000)
}; ];
InstEncoding[] nimmsNimmsNimmsNimmsNimmsNimmsNimmsNimmsSfnConstraints = new InstEncoding[] InstEncoding[] nimmsNimmsNimmsNimmsNimmsNimmsNimmsNimmsSfnConstraints =
{ [
new(0x0040FC00, 0x0040FC00), new(0x0040FC00, 0x0040FC00),
new(0x00007C00, 0x0040FC00), new(0x00007C00, 0x0040FC00),
new(0x0000BC00, 0x0040FC00), new(0x0000BC00, 0x0040FC00),
@ -133,326 +133,326 @@ namespace Ryujinx.Cpu.LightningJit.Arm64.Target.Arm64
new(0x0000F400, 0x0040FC00), new(0x0000F400, 0x0040FC00),
new(0x0000F800, 0x0040FC00), new(0x0000F800, 0x0040FC00),
new(0x0000FC00, 0x0040FC00), new(0x0000FC00, 0x0040FC00),
new(0x00400000, 0x80400000), new(0x00400000, 0x80400000)
}; ];
InstEncoding[] sfimm6Constraints = new InstEncoding[] InstEncoding[] sfimm6Constraints =
{ [
new(0x00008000, 0x80008000), new(0x00008000, 0x80008000)
}; ];
InstEncoding[] sfnSfnSfimmr5Sfimms5Constraints = new InstEncoding[] InstEncoding[] sfnSfnSfimmr5Sfimms5Constraints =
{ [
new(0x80000000, 0x80400000), new(0x80000000, 0x80400000),
new(0x00400000, 0x80400000), new(0x00400000, 0x80400000),
new(0x00200000, 0x80200000), new(0x00200000, 0x80200000),
new(0x00008000, 0x80008000), new(0x00008000, 0x80008000)
}; ];
InstEncoding[] cmodeopqConstraints = new InstEncoding[] InstEncoding[] cmodeopqConstraints =
{ [
new(0x2000F000, 0x6000F000), new(0x2000F000, 0x6000F000)
}; ];
InstEncoding[] rsRtConstraints = new InstEncoding[] InstEncoding[] rsRtConstraints =
{ [
new(0x00010000, 0x00010000), new(0x00010000, 0x00010000),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] sfszSfszSfszSfszConstraints = new InstEncoding[] InstEncoding[] sfszSfszSfszSfszConstraints =
{ [
new(0x80000000, 0x80000C00), new(0x80000000, 0x80000C00),
new(0x80000400, 0x80000C00), new(0x80000400, 0x80000C00),
new(0x80000800, 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(0x00000000, 0x000F0000),
}; new(0x00080000, 0x400F0000)
];
InstEncoding[] imm5Imm5qConstraints = new InstEncoding[] InstEncoding[] nsfNsfSfimmsConstraints =
{ [
new(0x00000000, 0x000F0000),
new(0x00080000, 0x400F0000),
};
InstEncoding[] nsfNsfSfimmsConstraints = new InstEncoding[]
{
new(0x00400000, 0x80400000), new(0x00400000, 0x80400000),
new(0x80000000, 0x80400000), new(0x80000000, 0x80400000),
new(0x00008000, 0x80008000), new(0x00008000, 0x80008000)
}; ];
InstEncoding[] qimm4Constraints = new InstEncoding[] InstEncoding[] qimm4Constraints =
{ [
new(0x00004000, 0x40004000), new(0x00004000, 0x40004000)
}; ];
InstEncoding[] qszConstraints = new InstEncoding[] InstEncoding[] qszConstraints =
{ [
new(0x00400000, 0x40400000), new(0x00400000, 0x40400000)
}; ];
InstEncoding[] euacEuacEuacConstraints = new InstEncoding[] InstEncoding[] euacEuacEuacConstraints =
{ [
new(0x00000800, 0x20800800), new(0x00000800, 0x20800800),
new(0x00800000, 0x20800800), new(0x00800000, 0x20800800),
new(0x00800800, 0x20800800), new(0x00800800, 0x20800800)
}; ];
InstEncoding[] qszEuacEuacEuacConstraints = new InstEncoding[] InstEncoding[] qszEuacEuacEuacConstraints =
{ [
new(0x00400000, 0x40400000), new(0x00400000, 0x40400000),
new(0x00000800, 0x20800800), new(0x00000800, 0x20800800),
new(0x00800000, 0x20800800), new(0x00800000, 0x20800800),
new(0x00800800, 0x20800800), new(0x00800800, 0x20800800)
}; ];
InstEncoding[] szConstraints = new InstEncoding[] InstEncoding[] szConstraints =
{ [
new(0x00400000, 0x00400000), new(0x00400000, 0x00400000)
}; ];
InstEncoding[] sizeQsizeConstraints = new InstEncoding[] InstEncoding[] sizeQsizeConstraints =
{ [
new(0x00000000, 0x00C00000), new(0x00000000, 0x00C00000),
new(0x00C00000, 0x40C00000), new(0x00C00000, 0x40C00000)
}; ];
InstEncoding[] sizeSizeSizelSizeqSizehqConstraints = new InstEncoding[] InstEncoding[] sizeSizeSizelSizeqSizehqConstraints =
{ [
new(0x00000000, 0x00C00000), new(0x00000000, 0x00C00000),
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000),
new(0x00A00000, 0x00E00000), new(0x00A00000, 0x00E00000),
new(0x00800000, 0x40C00000), new(0x00800000, 0x40C00000),
new(0x00400800, 0x40C00800), new(0x00400800, 0x40C00800)
}; ];
InstEncoding[] szConstraints2 = new InstEncoding[] InstEncoding[] szConstraints2 =
{ [
new(0x00000000, 0x00400000), new(0x00000000, 0x00400000)
}; ];
InstEncoding[] immhConstraints = new InstEncoding[] InstEncoding[] immhConstraints =
{ [
new(0x00000000, 0x00780000)
];
InstEncoding[] immhQimmhConstraints =
[
new(0x00000000, 0x00780000), new(0x00000000, 0x00780000),
}; new(0x00400000, 0x40400000)
];
InstEncoding[] immhQimmhConstraints = new InstEncoding[] InstEncoding[] sfscaleConstraints =
{ [
new(0x00000000, 0x00780000), new(0x00000000, 0x80008000)
new(0x00400000, 0x40400000), ];
};
InstEncoding[] sfscaleConstraints = new InstEncoding[] InstEncoding[] ftypeopcFtypeopcFtypeopcFtypeopcFtypeOpcConstraints =
{ [
new(0x00000000, 0x80008000),
};
InstEncoding[] ftypeopcFtypeopcFtypeopcFtypeopcFtypeOpcConstraints = new InstEncoding[]
{
new(0x00000000, 0x00C18000), new(0x00000000, 0x00C18000),
new(0x00408000, 0x00C18000), new(0x00408000, 0x00C18000),
new(0x00810000, 0x00C18000), new(0x00810000, 0x00C18000),
new(0x00C18000, 0x00C18000), new(0x00C18000, 0x00C18000),
new(0x00800000, 0x00C00000), new(0x00800000, 0x00C00000),
new(0x00010000, 0x00018000), new(0x00010000, 0x00018000)
}; ];
InstEncoding[] szlConstraints = new InstEncoding[] InstEncoding[] szlConstraints =
{ [
new(0x00600000, 0x00600000)
];
InstEncoding[] szlQszConstraints =
[
new(0x00600000, 0x00600000), new(0x00600000, 0x00600000),
}; new(0x00400000, 0x40400000)
];
InstEncoding[] szlQszConstraints = new InstEncoding[] InstEncoding[] qConstraints =
{ [
new(0x00600000, 0x00600000), new(0x00000000, 0x40000000)
new(0x00400000, 0x40400000), ];
};
InstEncoding[] qConstraints = new InstEncoding[] InstEncoding[] sfftypermodeSfftypermodeConstraints =
{ [
new(0x00000000, 0x40000000),
};
InstEncoding[] sfftypermodeSfftypermodeConstraints = new InstEncoding[]
{
new(0x00400000, 0x80C80000), new(0x00400000, 0x80C80000),
new(0x80000000, 0x80C80000), new(0x80000000, 0x80C80000)
}; ];
InstEncoding[] uo1o2Constraints = new InstEncoding[] InstEncoding[] uo1o2Constraints =
{ [
new(0x20800000, 0x20801000), new(0x20800000, 0x20801000)
}; ];
InstEncoding[] qszUo1o2Constraints = new InstEncoding[] InstEncoding[] qszUo1o2Constraints =
{ [
new(0x00400000, 0x40400000), new(0x00400000, 0x40400000),
new(0x20800000, 0x20801000), new(0x20800000, 0x20801000)
}; ];
InstEncoding[] sConstraints = new InstEncoding[] InstEncoding[] sConstraints =
{ [
new(0x00001000, 0x00001000), new(0x00001000, 0x00001000)
}; ];
InstEncoding[] opcodesizeOpcodesizeOpcodesizesOpcodesizeConstraints = new InstEncoding[] InstEncoding[] opcodesizeOpcodesizeOpcodesizesOpcodesizeConstraints =
{ [
new(0x00004400, 0x0000C400), new(0x00004400, 0x0000C400),
new(0x00008800, 0x0000C800), new(0x00008800, 0x0000C800),
new(0x00009400, 0x0000D400), new(0x00009400, 0x0000D400),
new(0x0000C000, 0x0000C000), new(0x0000C000, 0x0000C000)
}; ];
InstEncoding[] qsizeConstraints2 = new InstEncoding[] InstEncoding[] qsizeConstraints2 =
{ [
new(0x00000C00, 0x40000C00), new(0x00000C00, 0x40000C00)
}; ];
InstEncoding[] rtRtConstraints = new InstEncoding[] InstEncoding[] rtRtConstraints =
{ [
new(0x00000018, 0x00000018), new(0x00000018, 0x00000018),
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] opc1sizeOpc1sizeOpc1sizeConstraints = new InstEncoding[] InstEncoding[] opc1sizeOpc1sizeOpc1sizeConstraints =
{ [
new(0x40800000, 0xC0800000), new(0x40800000, 0xC0800000),
new(0x80800000, 0xC0800000), new(0x80800000, 0xC0800000),
new(0xC0800000, 0xC0800000), new(0xC0800000, 0xC0800000)
}; ];
InstEncoding[] rtRt2Constraints = new InstEncoding[] InstEncoding[] rtRt2Constraints =
{ [
new(0x0000001F, 0x0000001F), new(0x0000001F, 0x0000001F),
new(0x001F0000, 0x001F0000), new(0x001F0000, 0x001F0000)
}; ];
InstEncoding[] opcConstraints = new InstEncoding[] InstEncoding[] opcConstraints =
{ [
new(0xC0000000, 0xC0000000), new(0xC0000000, 0xC0000000)
}; ];
InstEncoding[] opcConstraints2 = new InstEncoding[] InstEncoding[] opcConstraints2 =
{ [
new(0x40000000, 0x40000000), new(0x40000000, 0x40000000)
}; ];
InstEncoding[] opclOpcConstraints = new InstEncoding[] InstEncoding[] opclOpcConstraints =
{ [
new(0x40000000, 0x40400000), new(0x40000000, 0x40400000),
new(0xC0000000, 0xC0000000), new(0xC0000000, 0xC0000000)
}; ];
InstEncoding[] optionConstraints = new InstEncoding[] InstEncoding[] optionConstraints =
{ [
new(0x00000000, 0x00004000), new(0x00000000, 0x00004000)
}; ];
InstEncoding[] opc1sizeOpc1sizeOpc1sizeOptionConstraints = new InstEncoding[] InstEncoding[] opc1sizeOpc1sizeOpc1sizeOptionConstraints =
{ [
new(0x40800000, 0xC0800000), new(0x40800000, 0xC0800000),
new(0x80800000, 0xC0800000), new(0x80800000, 0xC0800000),
new(0xC0800000, 0xC0800000), new(0xC0800000, 0xC0800000),
new(0x00000000, 0x00004000), new(0x00000000, 0x00004000)
}; ];
InstEncoding[] sizeSizeConstraints = new InstEncoding[] InstEncoding[] sizeSizeConstraints =
{ [
new(0x00000000, 0x00C00000), new(0x00000000, 0x00C00000),
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000)
}; ];
InstEncoding[] sfhwConstraints = new InstEncoding[] InstEncoding[] sfhwConstraints =
{ [
new(0x00400000, 0x80400000), new(0x00400000, 0x80400000)
}; ];
InstEncoding[] rtConstraints = new InstEncoding[] InstEncoding[] rtConstraints =
{ [
new(0x00000001, 0x00000001), new(0x00000001, 0x00000001)
}; ];
InstEncoding[] usizeUsizeUsizeSizeConstraints = new InstEncoding[] InstEncoding[] usizeUsizeUsizeSizeConstraints =
{ [
new(0x20400000, 0x20C00000), new(0x20400000, 0x20C00000),
new(0x20800000, 0x20C00000), new(0x20800000, 0x20C00000),
new(0x20C00000, 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(0x00400000, 0x00C00000),
new(0x00800000, 0x00C00000), new(0x00800000, 0x00C00000),
}; new(0x00C00000, 0x00C00000)
];
InstEncoding[] rtConstraints2 = new InstEncoding[] InstEncoding[] sizeSizeConstraints3 =
{ [
new(0x00000018, 0x00000018),
};
InstEncoding[] sfopcConstraints = new InstEncoding[]
{
new(0x00000400, 0x80000400),
};
InstEncoding[] sizeSizeSizeConstraints = new InstEncoding[]
{
new(0x00400000, 0x00C00000),
new(0x00800000, 0x00C00000), new(0x00800000, 0x00C00000),
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000)
}; ];
InstEncoding[] sizeSizeConstraints3 = new InstEncoding[] InstEncoding[] sfConstraints =
{ [
new(0x00800000, 0x00C00000), new(0x00000000, 0x80000000)
new(0x00C00000, 0x00C00000), ];
};
InstEncoding[] sfConstraints = new InstEncoding[] InstEncoding[] immhImmhConstraints =
{ [
new(0x00000000, 0x80000000),
};
InstEncoding[] immhImmhConstraints = new InstEncoding[]
{
new(0x00000000, 0x00780000), new(0x00000000, 0x00780000),
new(0x00400000, 0x00400000), new(0x00400000, 0x00400000)
}; ];
InstEncoding[] sizeSizeConstraints4 = new InstEncoding[] InstEncoding[] sizeSizeConstraints4 =
{ [
new(0x00C00000, 0x00C00000), new(0x00C00000, 0x00C00000),
new(0x00000000, 0x00C00000), new(0x00000000, 0x00C00000)
}; ];
InstEncoding[] ssizeSsizeSsizeConstraints = new InstEncoding[] InstEncoding[] ssizeSsizeSsizeConstraints =
{ [
new(0x00000000, 0x00C00800), new(0x00000000, 0x00C00800),
new(0x00400000, 0x00C00800), new(0x00400000, 0x00C00800),
new(0x00800000, 0x00C00800), new(0x00800000, 0x00C00800)
}; ];
InstEncoding[] immhOpuConstraints = new InstEncoding[] InstEncoding[] immhOpuConstraints =
{ [
new(0x00000000, 0x00780000), new(0x00000000, 0x00780000),
new(0x00000000, 0x20001000), new(0x00000000, 0x20001000)
}; ];
InstEncoding[] immhQimmhOpuConstraints = new InstEncoding[] InstEncoding[] immhQimmhOpuConstraints =
{ [
new(0x00000000, 0x00780000), new(0x00000000, 0x00780000),
new(0x00400000, 0x40400000), 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(0x5AC02000, 0x7FFFFC00, InstName.Abs, IsaVersion.v89, InstFlags.RdRn),
new(0x5EE0B800, 0xFFFFFC00, InstName.AbsAdvsimdS, IsaVersion.v80, InstFlags.RdRnFpSimd), new(0x5EE0B800, 0xFFFFFC00, InstName.AbsAdvsimdS, IsaVersion.v80, InstFlags.RdRnFpSimd),
new(0x0E20B800, 0xBF3FFC00, qsizeConstraints, InstName.AbsAdvsimdV, 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(0xD503203F, 0xFFFFFFFF, InstName.Yield, IsaVersion.v80, InstFlags.None),
new(0x0E003800, 0xBF20FC00, qsizeConstraints, InstName.Zip1Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd), new(0x0E003800, 0xBF20FC00, qsizeConstraints, InstName.Zip1Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd),
new(0x0E007800, 0xBF20FC00, qsizeConstraints, InstName.Zip2Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd), new(0x0E007800, 0xBF20FC00, qsizeConstraints, InstName.Zip2Advsimd, IsaVersion.v80, InstFlags.RdRnRmFpSimd),
}; ];
_table = new(insts); _table = new(insts);
} }

View File

@ -24,7 +24,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
} }
} }
private readonly List<MemoryBlock> _blocks = new(); private readonly List<MemoryBlock> _blocks = [];
public CacheMemoryAllocator(int capacity) public CacheMemoryAllocator(int capacity)
{ {

View File

@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
private static CacheMemoryAllocator _cacheAllocator; 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 readonly Lock _lock = new();
private static bool _initialized; private static bool _initialized;

View File

@ -6,8 +6,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache
{ {
class JitCacheInvalidation class JitCacheInvalidation
{ {
private static readonly int[] _invalidationCode = new int[] private static readonly int[] _invalidationCode =
{ [
unchecked((int)0xd53b0022), // mrs x2, ctr_el0 unchecked((int)0xd53b0022), // mrs x2, ctr_el0
unchecked((int)0xd3504c44), // ubfx x4, x2, #16, #4 unchecked((int)0xd3504c44), // ubfx x4, x2, #16, #4
unchecked((int)0x52800083), // mov w3, #0x4 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)0x54ffffa8), // b.hi 54 <ic_clear_loop>
unchecked((int)0xd5033b9f), // dsb ish unchecked((int)0xd5033b9f), // dsb ish
unchecked((int)0xd5033fdf), // isb unchecked((int)0xd5033fdf), // isb
unchecked((int)0xd65f03c0), // ret unchecked((int)0xd65f03c0) // ret
}; ];
private delegate void InvalidateCache(ulong start, ulong end); private delegate void InvalidateCache(ulong start, ulong end);

View File

@ -231,7 +231,7 @@ namespace Ryujinx.Cpu.LightningJit.Cache
_sharedCache.Pointer, _sharedCache.Pointer,
SharedCacheSize); SharedCacheSize);
List<(ulong, ThreadLocalCacheEntry)> toDelete = new(); List<(ulong, ThreadLocalCacheEntry)> toDelete = [];
foreach ((ulong address, ThreadLocalCacheEntry entry) in _threadLocalCache) foreach ((ulong address, ThreadLocalCacheEntry entry) in _threadLocalCache)
{ {

View File

@ -35,8 +35,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache
{ {
_alignedRangeAction = alignedRangeAction; _alignedRangeAction = alignedRangeAction;
_alignedFunctionAction = alignedFunctionAction; _alignedFunctionAction = alignedFunctionAction;
_pendingFunctions = new(); _pendingFunctions = [];
_ranges = new(); _ranges = [];
} }
public bool Has(ulong address) public bool Has(ulong address)

View File

@ -26,7 +26,7 @@ namespace Ryujinx.Cpu.LightningJit.CodeGen.Arm64
public Assembler(CodeWriter writer) public Assembler(CodeWriter writer)
{ {
_code = writer.GetList(); _code = writer.GetList();
_labels = new List<LabelState>(); _labels = [];
} }
public readonly Operand CreateLabel() public readonly Operand CreateLabel()

View File

@ -16,7 +16,7 @@ namespace Ryujinx.Cpu.LightningJit.CodeGen.Arm64
public TailMerger() public TailMerger()
{ {
_branchPointers = new(); _branchPointers = [];
} }
public void AddConditionalReturn(CodeWriter writer, in Assembler asm, ArmCondition returnCondition) public void AddConditionalReturn(CodeWriter writer, in Assembler asm, ArmCondition returnCondition)

View File

@ -12,7 +12,7 @@ namespace Ryujinx.Cpu.LightningJit
public CodeWriter() public CodeWriter()
{ {
_instructions = new(); _instructions = [];
} }
public void WriteInstruction(uint instruction) public void WriteInstruction(uint instruction)

View File

@ -34,7 +34,7 @@ namespace Ryujinx.Cpu.LightningJit.Table
{ {
int splitIndex = (int)((insts[index].Encoding >> _shift) & _mask); 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++) for (int index = 0; index < count; index++)

View File

@ -134,7 +134,7 @@ namespace Ryujinx.Cpu.LightningJit
public void InvalidateJitCacheRegion(ulong address, ulong size) public void InvalidateJitCacheRegion(ulong address, ulong size)
{ {
ulong[] overlapAddresses = Array.Empty<ulong>(); ulong[] overlapAddresses = [];
int overlapsCount = Functions.GetOverlaps(address, size, ref overlapAddresses); int overlapsCount = Functions.GetOverlaps(address, size, ref overlapAddresses);

View File

@ -140,7 +140,7 @@ namespace Ryujinx.Cpu.LightningJit
/// <returns>Generated <see cref="DispatchStub"/></returns> /// <returns>Generated <see cref="DispatchStub"/></returns>
private nint GenerateDispatchStub() private nint GenerateDispatchStub()
{ {
List<int> branchToFallbackOffsets = new(); List<int> branchToFallbackOffsets = [];
CodeWriter writer = new(); CodeWriter writer = new();

View File

@ -38,10 +38,10 @@ namespace Ryujinx.Cpu
{ {
Memory = memory; Memory = memory;
Size = size; Size = size;
_freeRanges = new List<Range> _freeRanges =
{ [
new(0, size), new(0, size)
}; ];
} }
public ulong Allocate(ulong size, ulong alignment) public ulong Allocate(ulong size, ulong alignment)
@ -185,7 +185,7 @@ namespace Ryujinx.Cpu
public PrivateMemoryAllocatorImpl(ulong blockAlignment, MemoryAllocationFlags allocationFlags) public PrivateMemoryAllocatorImpl(ulong blockAlignment, MemoryAllocationFlags allocationFlags)
{ {
_blocks = new List<T>(); _blocks = [];
_blockAlignment = blockAlignment; _blockAlignment = blockAlignment;
_allocationFlags = allocationFlags; _allocationFlags = allocationFlags;
} }