)]}'
{
  "commit": "d30eb38d5b4e714153b0084bd8aff237f598fc9d",
  "tree": "8e615529979c0448a99b120b677f136106a3c040",
  "parents": [
    "2ec6065a4f3fe95d287602cb9158a7ce1fbed2e9"
  ],
  "author": {
    "name": "Victor Do Nascimento",
    "email": "victor.donascimento@arm.com",
    "time": "Wed Dec 13 14:09:08 2023 +0000"
  },
  "committer": {
    "name": "Victor Do Nascimento",
    "email": "victor.donascimento@arm.com",
    "time": "Tue Jan 09 10:16:40 2024 +0000"
  },
  "message": "aarch64: Add support for xzr register in register pair operands\n\nAnalysis of the allowed operand values for `sysp\u0027 and `tlbip\u0027 reveals\na significant departure from the allowed behavior for operand register\npairs (hitherto labeled AARCH64_OPND_PAIRREG) observed for other\ninsns in this category.\n\nFor instructions `casp\u0027, `mrrs\u0027 and `msrr\u0027 the register pair must\nalways start at an even index and the second register in the pair is\nthe index + 1.  This precludes the use of xzr as the first register,\ngiven it corresponds to register number 31.\n\nThis is different in the case of `sysp\u0027 and `tlbip\u0027, however.  These\nallow the use of xzr and, where the first operand in the pair is\nomitted, this is the default value assigned to it.  When this\noperand is assigned xzr, it is expected that the second operand will\nlikewise take on a value of xzr.\n\nThese two instructions therefore \"break\" two rules of register pairs:\n\n  * The first of the two registers is odd-numbered.\n  * The index of the second register is equal to that of the first,\n  and not n+1.\n\nTo allow for this departure from hitherto standard behavior, we\nextend the functionality of the assembler by defining an extension of\nthe AARCH64_OPND_PAIRREG, called AARCH64_OPND_PAIRREG_OR_XZR.\n\nIt is used in defining `sysp\u0027 and `tlbip\u0027 and allows\n`operand_general_constraint_met_p\u0027 to allow the pair to both take on\nthe value of xzr.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b28c05fbd820fc7f2ea2a86ca1f7564be8ba7c25",
      "old_mode": 33188,
      "old_path": "gas/config/tc-aarch64.c",
      "new_id": "1468729072043ecc495f13ad6ab256db72c5f339",
      "new_mode": 33188,
      "new_path": "gas/config/tc-aarch64.c"
    },
    {
      "type": "modify",
      "old_id": "554e4e14aec3c6aafccfc0450f9c7fc604c922b5",
      "old_mode": 33188,
      "old_path": "include/opcode/aarch64.h",
      "new_id": "187a4287898285c8cddba021af265bf51208bdd4",
      "new_mode": 33188,
      "new_path": "include/opcode/aarch64.h"
    },
    {
      "type": "modify",
      "old_id": "ba1f5dd887c82e16277eaa4860ea6968bc817acb",
      "old_mode": 33188,
      "old_path": "opcodes/aarch64-dis.c",
      "new_id": "8f9925978dce06b369c90b716621fd6c2f299c9c",
      "new_mode": 33188,
      "new_path": "opcodes/aarch64-dis.c"
    },
    {
      "type": "modify",
      "old_id": "49b31c65cb049178d73465d1bc3cdce00e84488a",
      "old_mode": 33188,
      "old_path": "opcodes/aarch64-opc.c",
      "new_id": "a5f09370b6f436f5fa357ed9b41da7d734d58486",
      "new_mode": 33188,
      "new_path": "opcodes/aarch64-opc.c"
    },
    {
      "type": "modify",
      "old_id": "47c25d59eeda730b0fb052494edf915176437f0f",
      "old_mode": 33188,
      "old_path": "opcodes/aarch64-tbl.h",
      "new_id": "b2a8b3473352d781cf1e58f8cc59f895210dd770",
      "new_mode": 33188,
      "new_path": "opcodes/aarch64-tbl.h"
    }
  ]
}
