{
  "License": [
    "Copyright (C) 2023 The Android Open Source Project",
    "",
    "Licensed under the Apache License, Version 2.0 (the “License”);",
    "you may not use this file except in compliance with the License.",
    "You may obtain a copy of the License at",
    "",
    "     http://www.apache.org/licenses/LICENSE-2.0",
    "",
    "Unless required by applicable law or agreed to in writing, software",
    "distributed under the License is distributed on an “AS IS” BASIS,",
    "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.",
    "See the License for the specific language governing permissions and",
    "limitations under the License."
  ],
  "reg_classes": [
    {
      "name": "GeneralReg64",
      "size": 8,
      "comment": ["Legacy registers (those other than r8-15) save a byte in ",
	          "encoding, but RAX, RCX and RDX are often implicit operands"],
      "regs": [
        "RDI",
        "RSI",
        "RBX",
        "R10",
        "R11",
        "R13",
        "R14",
        "R15",
        "R8",
        "R9",
        "RDX",
        "R12",
        "RCX",
        "RAX"
      ],
      "gcc_asm_name": "r"
    },
    {
      "name": "XmmReg",
      "size": 16,
      "comment": ["XMM0-7 save a byte in encoding, but XMM0 can be ",
	          "an implicit operand in some instructions"],
      "regs": [
        "XMM1",
        "XMM2",
        "XMM3",
        "XMM4",
        "XMM5",
        "XMM6",
        "XMM7",
        "XMM8",
        "XMM9",
        "XMM10",
        "XMM11",
        "XMM12",
        "XMM13",
        "XMM14",
        "XMM15",
        "XMM0"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "YmmReg",
      "size": 32,
      "regs": [
        "XmmReg"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "Reg64",
      "size": 8,
      "regs": [
        "GeneralReg64",
        "XmmReg"
      ]
    },
    {
      "name": "Reg32",
      "size": 4,
      "regs": [
        "Reg64"
      ]
    },
    {
      "name": "GeneralReg32",
      "size": 4,
      "regs": [
        "GeneralReg64"
      ],
      "gcc_asm_name": "r"
    },
    {
      "name": "GeneralReg16",
      "size": 2,
      "regs": [
        "GeneralReg64"
      ],
      "gcc_asm_name": "r"
    },
    {
      "name": "GeneralReg8",
      "size": 1,
      "regs": [
        "GeneralReg64"
      ],
      "gcc_asm_name": "r"
    },
    {
      "name": "FpReg64",
      "size": 8,
      "type": "__m128",
      "regs": [
        "XmmReg"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "FpReg32",
      "size": 4,
      "type": "__m128",
      "regs": [
        "XmmReg"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "VecReg128",
      "size": 16,
      "regs": [
        "XmmReg"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "VecReg256",
      "size": 32,
      "regs": [
        "XmmReg"
      ],
      "gcc_asm_name": "x"
    },
    {
      "name": "RAX",
      "size": 8,
      "regs": [
        "RAX"
      ],
      "gcc_asm_name": "a"
    },
    {
      "name": "EAX",
      "size": 4,
      "regs": [
        "RAX"
      ],
      "gcc_asm_name": "a"
    },
    {
      "name": "AX",
      "size": 2,
      "regs": [
        "RAX"
      ],
      "gcc_asm_name": "a"
    },
    {
      "name": "AL",
      "size": 1,
      "regs": [
        "RAX"
      ],
      "gcc_asm_name": "a"
    },
    {
      "name": "RBX",
      "size": 8,
      "regs": [
        "RBX"
      ],
      "gcc_asm_name": "b"
    },
    {
      "name": "EBX",
      "size": 4,
      "regs": [
        "RBX"
      ],
      "gcc_asm_name": "b"
    },
    {
      "name": "RCX",
      "size": 8,
      "regs": [
        "RCX"
      ],
      "gcc_asm_name": "c"
    },
    {
      "name": "ECX",
      "size": 4,
      "regs": [
        "RCX"
      ],
      "gcc_asm_name": "c"
    },
    {
      "name": "CL",
      "size": 1,
      "regs": [
        "RCX"
      ],
      "gcc_asm_name": "c"
    },
    {
      "name": "RDX",
      "size": 8,
      "regs": [
        "RDX"
      ],
      "gcc_asm_name": "d"
    },
    {
      "name": "EDX",
      "size": 4,
      "regs": [
        "RDX"
      ],
      "gcc_asm_name": "d"
    },
    {
      "name": "DX",
      "size": 2,
      "regs": [
        "RDX"
      ],
      "gcc_asm_name": "d"
    },
    {
      "name": "RSI",
      "size": 8,
      "regs": [
        "RSI"
      ],
      "gcc_asm_name": "S"
    },
    {
      "name": "RDI",
      "size": 8,
      "regs": [
        "RDI"
      ],
      "gcc_asm_name": "D"
    },
    {
      "name": "R8",
      "size": 8,
      "regs": [
        "R8"
      ]
    },
    {
      "name": "R9",
      "size": 8,
      "regs": [
        "R9"
      ]
    },
    {
      "name": "R10",
      "size": 8,
      "regs": [
        "R10"
      ]
    },
    {
      "name": "R11",
      "size": 8,
      "regs": [
        "R11"
      ]
    },
    {
      "name": "R12",
      "size": 8,
      "regs": [
        "R12"
      ]
    },
    {
      "name": "R13",
      "size": 8,
      "regs": [
        "R13"
      ]
    },
    {
      "name": "R14",
      "size": 8,
      "regs": [
        "R14"
      ]
    },
    {
      "name": "R15",
      "size": 8,
      "regs": [
        "R15"
      ]
    },
    {
      "name": "XMM0",
      "size": 16,
      "regs": [
        "XMM0"
      ]
    },
    {
      "name": "XMM1",
      "size": 16,
      "regs": [
        "XMM1"
      ]
    },
    {
      "name": "XMM2",
      "size": 16,
      "regs": [
        "XMM2"
      ]
    },
    {
      "name": "XMM3",
      "size": 16,
      "regs": [
        "XMM3"
      ]
    },
    {
      "name": "XMM4",
      "size": 16,
      "regs": [
        "XMM4"
      ]
    },
    {
      "name": "XMM5",
      "size": 16,
      "regs": [
        "XMM5"
      ]
    },
    {
      "name": "XMM6",
      "size": 16,
      "regs": [
        "XMM6"
      ]
    },
    {
      "name": "XMM7",
      "size": 16,
      "regs": [
        "XMM7"
      ]
    },
    {
      "name": "XMM8",
      "size": 16,
      "regs": [
        "XMM8"
      ]
    },
    {
      "name": "XMM9",
      "size": 16,
      "regs": [
        "XMM9"
      ]
    },
    {
      "name": "XMM10",
      "size": 16,
      "regs": [
        "XMM10"
      ]
    },
    {
      "name": "XMM11",
      "size": 16,
      "regs": [
        "XMM11"
      ]
    },
    {
      "name": "XMM12",
      "size": 16,
      "regs": [
        "XMM12"
      ]
    },
    {
      "name": "XMM13",
      "size": 16,
      "regs": [
        "XMM13"
      ]
    },
    {
      "name": "XMM14",
      "size": 16,
      "regs": [
        "XMM14"
      ]
    },
    {
      "name": "XMM15",
      "size": 16,
      "regs": [
        "XMM15"
      ]
    },
    {
      "name": "FLAGS",
      "size": 0,
      "regs": [
        "FLAGS"
      ]
    }
  ]
}
