)]}'
{
  "commit": "013c867f1356e2a7848eccc92e62880155698502",
  "tree": "168dfa150bae977de5cf9fbc280152955c45b45b",
  "parents": [
    "c3675d9eb343b3e495c9499b52e13c46623ceabd"
  ],
  "author": {
    "name": "Artemiy Volkov",
    "email": "artemiy.volkov@arm.com",
    "time": "Fri Jan 16 13:09:52 2026 +0000"
  },
  "committer": {
    "name": "Artemiy Volkov",
    "email": "artemiy.volkov@arm.com",
    "time": "Fri May 29 11:33:19 2026 +0000"
  },
  "message": "aarch64: implement FMUL SME instruction\n\nThe SME2.2 extension introduces the following variants of a new\nstreaming-mode instruction:\n\n- FMUL (Multi-vector floating-point multiply by vector)\n- FMUL (Multi-vector floating-point multiply)\n\nThe first operand is a multi-vector consisting of two or four vectors, and\nthe second operand either has the same type, or is a single vector of the\nunderlying type.  New intrinsics are documented in the ACLE manual [0] and\nare as follows:\n\nsvfloat{16,32,64}x{2,4}_t svmul[_single_f{16,32,64}_x{2,4}]\n  (svfloat{16,32,64}x{2,4}_t zd, svfloat{16,32,64}_t zm) __arm_streaming;\n\nsvfloat{16,32,64}x{2,4}_t svmul[_f{16,32,64}_x{2,4}]\n  (svfloat{16,32,64}x{2,4}_t zd, svfloat{16,32,64}x{2,4}_t zm) __arm_streaming;\n\nThis patch implements the above changes throughout the SVE builtin\ndescription files and aarch64-sve2.md.\n\n[0] https://github.com/ARM-software/acle\n\ngcc/ChangeLog:\n\n\t* config/aarch64/aarch64-sve-builtins-sve2.def (svmul): Define new\n\tSVE function variant.\n\t* config/aarch64/aarch64-sve2.md (@aarch64_sve_\u003coptab\u003e\u003cmode\u003e): New\n\tinstruction pattern.\n\t(@aarch64_sve_\u003coptab\u003e\u003cmode\u003e_single): Likewise.\n\t* config/aarch64/aarch64.h (TARGET_STREAMING_SME2p2): New macro.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c: Likewise.\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c: Likewise.\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c: Likewise.\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c: Likewise.\n\t* gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c: Likewise.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7fbf9c30708cbc1642c73ef1a625b481eaf9379c",
      "old_mode": 33188,
      "old_path": "gcc/config/aarch64/aarch64-sve-builtins-sve2.def",
      "new_id": "a2ad77106748eb874b52a5622bd66df3158ea6c7",
      "new_mode": 33188,
      "new_path": "gcc/config/aarch64/aarch64-sve-builtins-sve2.def"
    },
    {
      "type": "modify",
      "old_id": "d9ad7689ff2f7182b19cae49b3a9d6291e1f2ec6",
      "old_mode": 33188,
      "old_path": "gcc/config/aarch64/aarch64-sve2.md",
      "new_id": "4f842a61d8b392e504ac1757746bcea767d966ec",
      "new_mode": 33188,
      "new_path": "gcc/config/aarch64/aarch64-sve2.md"
    },
    {
      "type": "modify",
      "old_id": "0ef1ec49e6faa25c4790cfa488d51a11f079836e",
      "old_mode": 33188,
      "old_path": "gcc/config/aarch64/aarch64.h",
      "new_id": "5bd3379cb0dbfcdbe7a8efd176b28f2413aa5b00",
      "new_mode": 33188,
      "new_path": "gcc/config/aarch64/aarch64.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e8063d0b2d6b2b2ad2dbeb28f31d03d3e28f85c",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8478f8a0acda199165cbcc3d069c96df4aed3206",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "872409c4f347273e2a702d03c30a7afe79dce3fa",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c0192848663a78fa5f81da4cc06486caab0ca6a0",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b98f3b5107a299c0f0344a61a87f05dd40e7787",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9754caea0d85b8c9bb473a36a6d98bd3e485dfa",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c"
    }
  ]
}
