)]}'
{
  "commit": "cd8286f6e69aeeb1abb69b7807effee2f1539508",
  "tree": "35a79e6834359dd8cd50eaa6bd170f8edbd8e8ff",
  "parents": [
    "0910d891d729ca984baa31d4e3ed51da8b0cad7d"
  ],
  "author": {
    "name": "Ulya Trafimovich",
    "email": "skvadrik@google.com",
    "time": "Mon Jul 12 16:40:16 2021 +0100"
  },
  "committer": {
    "name": "Ulyana Trafimovich",
    "email": "skvadrik@google.com",
    "time": "Wed Jul 14 10:04:35 2021 +0000"
  },
  "message": "x86_64: Implement missing variants of XCHG. Add tests for them.\n\nAlso, clean up the handling of a special case when at least one of the\noperands for XCHG is RAX/EAX/AX. Add a helper function that deduplicates\nthe code for different operand sizes.\n\nThis patch also extends `EmitOptionalByteRegNormalizingRex32` function\nto handle the case when an instruction has both operands in byte\nregisters, and so it needs REX prefix if either of them is in a special\nregister (an example of such instruction is `xchg bpl, al`: if only the\nsource register is checked, no REX would be emitted). Previously\n`EmitOptionalByteRegNormalizingRex32` handled only the case when the\nsource register is special (an example of such instruction is\n`movzxb rax, bpl`).\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: I20c5e9375bbd15d799e5748b127d154ddcc0fc11\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "35c68b8e865e74a67e740b8e608e55d2223ecb66",
      "old_mode": 33188,
      "old_path": "compiler/utils/x86_64/assembler_x86_64.cc",
      "new_id": "52cedf087c71a0eb32224c06abbb62c0fdb46bff",
      "new_mode": 33188,
      "new_path": "compiler/utils/x86_64/assembler_x86_64.cc"
    },
    {
      "type": "modify",
      "old_id": "f385f22cb72931f880beccdbc364a6cb6bf34440",
      "old_mode": 33188,
      "old_path": "compiler/utils/x86_64/assembler_x86_64.h",
      "new_id": "8ef89314b1dd861416e28744fe1022c12e81dee4",
      "new_mode": 33188,
      "new_path": "compiler/utils/x86_64/assembler_x86_64.h"
    },
    {
      "type": "modify",
      "old_id": "562301c4c4a1527d43c58c76a0410cf7c8610dcd",
      "old_mode": 33188,
      "old_path": "compiler/utils/x86_64/assembler_x86_64_test.cc",
      "new_id": "feee577cb1b987e7c5cb1cb97deb2a1062b59563",
      "new_mode": 33188,
      "new_path": "compiler/utils/x86_64/assembler_x86_64_test.cc"
    }
  ]
}
