)]}'
{
  "commit": "1fa0873f1d99fc24de0ccc3de486ab8ad4ce966a",
  "tree": "b63380850d38abddd07f98ed0889a38e2ab15fcb",
  "parents": [
    "64273f18ecf2436eae3fe0d4a3db22d2ca66b32b"
  ],
  "author": {
    "name": "Haochen Jiang",
    "email": "haochen.jiang@intel.com",
    "time": "Thu Jan 02 10:14:37 2025 +0800"
  },
  "committer": {
    "name": "Haochen Jiang",
    "email": "haochen.jiang@intel.com",
    "time": "Thu Jan 02 10:14:37 2025 +0800"
  },
  "message": "Support Intel AMX-TRANSPOSE\n\nIn this patch, we will support AMX-TRANSPOSE. Since AMX-TRANSPOSE\nwill be used with other CPUIDs very often, we put it into\nCPU_FLAGS_COMMON.\n\nTo implement TMM pair, we reused ImplicitGroup and adjust the condition\nin process_operands for the instructions.\n\nAPX_F extension is also handled in this patch, where it extends\nT2RPNTLVW[Z0,Z1][,T1] to EVEX.128.NP/66.0F38.W0 6E/6F !(11):rrr:100\nwith NF\u003d0.\n\nAlso, TTDPFP16PS should base on AMX_FP16, not AMX_BF16 in ISE055.\nIt would be fixed in ISE056.\n\ngas/ChangeLog:\n\n\t* config/tc-i386.c (cpu_arch): Add amx_transpose.\n\t(_is_cpu): Ditto.\n\t(process_operands): Adjust the condition for AMX-TRANSPOSE.\n\t* doc/c-i386.texi: Document .amx_transpose.\n\t* testsuite/gas/i386/x86-64.exp: Run AMX-TRANSPOSE tests.\n\t* testsuite/gas/i386/x86-64-amx-transpose-bad.d: New test.\n\t* testsuite/gas/i386/x86-64-amx-transpose-bad.s: Ditto.\n\t* testsuite/gas/i386/x86-64-amx-transpose-intel.d: Ditto.\n\t* testsuite/gas/i386/x86-64-amx-transpose-inval.l: Ditto.\n\t* testsuite/gas/i386/x86-64-amx-transpose-inval.s: Ditto.\n\t* testsuite/gas/i386/x86-64-amx-transpose.d: Ditto.\n\t* testsuite/gas/i386/x86-64-amx-transpose.s: Ditto.\n\nopcodes/ChangeLog:\n\n\t* i386-dis.c (MOD_VEX_0F386E_X86_64_W_0): New.\n\t(MOD_VEX_0F386F_X86_64_W_0): Ditto.\n\t(PREFIX_VEX_0F385F_X86_64_W_0_L_0): Ditto.\n\t(PREFIX_VEX_0F386B_X86_64_W_0_L_0): Ditto.\n\t(PREFIX_VEX_0F386E_X86_64_W_0_M_0_L_0): Ditto.\n\t(PREFIX_VEX_0F386F_X86_64_W_0_M_0_L_0): Ditto.\n\t(X86_64_VEX_0F385F): Ditto.\n\t(X86_64_VEX_0F386B): Ditto.\n\t(X86_64_VEX_0F386E): Ditto.\n\t(X86_64_VEX_0F386F): Ditto.\n\t(VEX_LEN_0F385F_X86_64_W_0): Ditto.\n\t(VEX_LEN_0F386B_X86_64_W_0): Ditto.\n\t(VEX_LEN_0F386E_X86_64_W_0_M_0): Ditto.\n\t(VEX_LEN_0F386F_X86_64_W_0_M_0): Ditto.\n\t(VEX_W_0F385F_X86_64): Ditto.\n\t(VEX_W_0F386B_X86_64): Ditto.\n\t(VEX_W_0F386E_X86_64): Ditto.\n\t(VEX_W_0F386F_X86_64): Ditto.\n\t(mod_table): Add MOD_VEX_0F386E_X86_64_W_0,\n\tMOD_VEX_0F386F_X86_64_W_0.\n\t(prefix_table): Add PREFIX_VEX_0F386E_X86_64_W_0_M_0_L_0,\n\tPREFIX_VEX_0F386F_X86_64_W_0_M_0_L_0.\n\tAdd new instructions for PREFIX_VEX_0F386C_X86_64_W_0_L_0.\n\t(x86_64_table): Add X86_64_VEX_0F385F, X86_64_VEX_0F386B,\n\tX86_64_VEX_0F386E, X86_64_VEX_0F386F.\n\t(vex_len_table): Add VEX_LEN_0F385F_X86_64_W_0,\n\tVEX_LEN_0F386B_X86_64_W_0, VEX_LEN_0F386E_X86_64_W_0_M_0,\n\tVEX_LEN_0F386F_X86_64_W_0_M_0.\n\t(vex_w_table): Add VEX_W_0F385F_X86_64, VEX_W_0F386B_X86_64,\n\tVEX_W_0F386E_X86_64, VEX_W_0F386F_X86_64.\n\t* i386-gen.c (cpu_flag_init): Add AMX_TRANSPOSE.\n\t(cpu_flags): Add CpuAMX_TRANSPOSE.\n\t* i386-init.h: Regenerated.\n\t* i386-mnem.h: Ditto.\n\t* i386-opc.h (CpuAMX_TRANSPOSE): New.\n\t(i386_cpu): Add cpuamx_transpose.\n\t* i386-opc.tbl: Add AMX-TRANSPOSE instructions.\n\t* i386-tbl.h: Regenerated.\n\nCo-authored-by: Hu, Lin1 \u003clin1.hu@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "09c0d2154e112dc9e52df57e0d7f4413e7441926",
      "old_mode": 33188,
      "old_path": "gas/config/tc-i386.c",
      "new_id": "f3b44c06d1ad6888d7ff7c6db44df310b4847bdf",
      "new_mode": 33188,
      "new_path": "gas/config/tc-i386.c"
    },
    {
      "type": "modify",
      "old_id": "301fc29948687c2083623e06bba441a871ee7391",
      "old_mode": 33188,
      "old_path": "gas/doc/c-i386.texi",
      "new_id": "272dcd1a42869c13baec6ae53b4090a1c8a8b6b3",
      "new_mode": 33188,
      "new_path": "gas/doc/c-i386.texi"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5977c309b20eee30693d54ee11e12ae55d542c59",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose-bad.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "060045146aac4bd48a0bb6a1b97d998adeeade66",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose-bad.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e50f09436c850850a312620b3adde724dfefab4b",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose-intel.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76baedb6eccb1881d348969190a24573e319c628",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose-inval.l"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7002b3bb160666add17788e0717c2c76bfc95604",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose-inval.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47f989136a4b0f63369b6954e8136c11d21613c2",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b13c3406288b9267c377b50ac9ccaf55d3b90ff6",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-amx-transpose.s"
    },
    {
      "type": "modify",
      "old_id": "54195179172bd17df0b478975e05513330f5d660",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d",
      "new_id": "d45167e318ca86bedcb865bc85ccaf94ecacf0aa",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d"
    },
    {
      "type": "modify",
      "old_id": "bcdc43ec2a8288e9f6018b032184190f6a270dad",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted-wig.d",
      "new_id": "fa6d66b5ddac6e491f62120197b04a45ddd2dc4e",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted-wig.d"
    },
    {
      "type": "modify",
      "old_id": "c72f7012c0eadd14066569224af1d3a8c3ab2d85",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted.d",
      "new_id": "ba684c1b0c62fb927cbd28127381349f540fea22",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted.d"
    },
    {
      "type": "modify",
      "old_id": "b66ee19df69143246eb570f13c8307ee075f8ca4",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted.s",
      "new_id": "3fc9832a84b6920c1e0979f03c8d6646a8c23776",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-apx-evex-promoted.s"
    },
    {
      "type": "modify",
      "old_id": "3b220c82f5124670e7d38210e3662c0cf09e98d7",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64.exp",
      "new_id": "a228043a55504da3164d71d7c6f5bd9d2b5d8602",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64.exp"
    },
    {
      "type": "modify",
      "old_id": "30312eb1a4e034e54897cb4f2c657a528b2b6d9a",
      "old_mode": 33188,
      "old_path": "opcodes/i386-dis-evex.h",
      "new_id": "006d0c4a99007a91dcefbfd962386e9b44398f67",
      "new_mode": 33188,
      "new_path": "opcodes/i386-dis-evex.h"
    },
    {
      "type": "modify",
      "old_id": "a63c0c0d37c4ae904b151066612f7978708d443e",
      "old_mode": 33188,
      "old_path": "opcodes/i386-dis.c",
      "new_id": "9dacf3a2db0b3db27fb469bb44209682948a376a",
      "new_mode": 33188,
      "new_path": "opcodes/i386-dis.c"
    },
    {
      "type": "modify",
      "old_id": "c638f3d4d2e07d16ff56b75b8983fcf2c2b8abd8",
      "old_mode": 33188,
      "old_path": "opcodes/i386-gen.c",
      "new_id": "1c496482128981a080d2b761182bf41810935170",
      "new_mode": 33188,
      "new_path": "opcodes/i386-gen.c"
    },
    {
      "type": "modify",
      "old_id": "0685f1c0353f5e1690469dd29f7f12bb97dfbe61",
      "old_mode": 33188,
      "old_path": "opcodes/i386-init.h",
      "new_id": "dac71f0d49a0601adcad62b2d68390889665a18a",
      "new_mode": 33188,
      "new_path": "opcodes/i386-init.h"
    },
    {
      "type": "modify",
      "old_id": "c61aa506c2c4f42e4f2750106feaa73959e9399b",
      "old_mode": 33188,
      "old_path": "opcodes/i386-mnem.h",
      "new_id": "22a9c114a0d2b432827adf1fca584f3f2fc793e4",
      "new_mode": 33188,
      "new_path": "opcodes/i386-mnem.h"
    },
    {
      "type": "modify",
      "old_id": "587bfc5622312742438f7a84865114e3d451d5ca",
      "old_mode": 33188,
      "old_path": "opcodes/i386-opc.h",
      "new_id": "475d3832f48bf0051d1466feb2614baee7609af9",
      "new_mode": 33188,
      "new_path": "opcodes/i386-opc.h"
    },
    {
      "type": "modify",
      "old_id": "8ef06b48e2d9a0bbaeefa948a138c4e5570e1d6f",
      "old_mode": 33188,
      "old_path": "opcodes/i386-opc.tbl",
      "new_id": "2df56cc1c9974be8439dd4434488829a4c1a7347",
      "new_mode": 33188,
      "new_path": "opcodes/i386-opc.tbl"
    },
    {
      "type": "modify",
      "old_id": "c7042aa17dbbffe474b7dfab0299a0a7a9c34852",
      "old_mode": 33188,
      "old_path": "opcodes/i386-tbl.h",
      "new_id": "236886336836e0d4f9b23dd0b90408f897af6bdd",
      "new_mode": 33188,
      "new_path": "opcodes/i386-tbl.h"
    }
  ]
}
