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

@@ -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);
}