)]}'
{
  "commit": "e584ae9446b47bf3a06183ebedc4f2ffc53fa02c",
  "tree": "9c5cfa2a8321ca4583f90555a6633347625a22f8",
  "parents": [
    "908c597d32ed4670d5d9b6b1706a786a9f95da05"
  ],
  "author": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Sun Jul 26 10:09:19 2026 -0700"
  },
  "committer": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Wed Jul 29 09:15:38 2026 +0200"
  },
  "message": "testsuite/aarch64: update the fcmla counts in pr122408_1.f90\n\nThe test hard-codes two \"fcmla ..., #0\", which was the number trunk\nhappened to emit when it was added.  BB SLP now also vectorises the two\nplain-multiply subroutines: r17-141-g76b8869f08a6 (\"tree-optimization/\n124222 - rewrite BB SLP costing scalar coverage\") taught\nvect_bb_slp_scalar_cost to attribute the statements an SLP pattern node\ncovers, so the subgraph for c_add_ab and c_sub_ab is no longer costed as\nunprofitable.  They form .COMPLEX_MUL, and cmul\u003cmode\u003e3 expands each to\n\"fcmla #0\" plus \"fcmla #90\", taking the #0 total from two to four.\n\nFor c_add_ab the loop body goes from a scalar pair of complex multiplies\n\n\tldr\td26, [x5, x0]\n\tldr\td27, [x3, x0]\n\tldr\td29, [x2, x0]\n\tfmul\td24, d30, d26\n\tldr\td28, [x1, x0]\n\tfnmsub\td24, d31, d27, d24\n\tfmul\td25, d30, d27\n\tfmadd\td25, d31, d26, d25\n\tfadd\td24, d29, d24\n\tfadd\td25, d25, d28\n\tstr\td24, [x2, x0]\n\tstr\td25, [x1, x0]\n\tadd\tx0, x0, 16\n\tcmp\tx4, x0\n\tbne\t.L3\n\nto the vectorised form\n\n\tldr\tq29, [x2, x0]\n\tmovi\tv27.4s, 0\n\tldr\tq28, [x3, x0]\n\tfcmla\tv27.2d, v28.2d, v31.2d, #0\n\tfcmla\tv27.2d, v28.2d, v31.2d, #90\n\tfadd\tv27.2d, v27.2d, v29.2d\n\tstr\tq27, [x2, x0]\n\tadd\tx0, x0, 16\n\tcmp\tx0, x1\n\tbne\t.L3\n\ni.e. ten instructions instead of fifteen, and the whole rotation mix\nacross the file changes from\n\n\t#0\u003d2  #90\u003d0  #180\u003d0  #270\u003d2\n\nto\n\n\t#0\u003d4  #90\u003d2  #180\u003d0  #270\u003d2\n\nThe loop vectoriser is unchanged: its dumps are identical before and\nafter, the two conjugate subroutines still form .COMPLEX_MUL_CONJ, and\nthe #270 directive that actually tests PR122408 still passes.  The\nruntime companion pr122408_2.f90 also still runs clean.\n\nUpdate the counts, and add a #90 count and a #180 scan-assembler-not.\nPR122408 was about picking the wrong rotation pair after operand\nswapping, so pinning the full rotation mix guards the regression more\ndirectly than the #0 count did.\n\ngcc/testsuite/ChangeLog:\n\n\t* gfortran.target/aarch64/pr122408_1.f90: Update the fcmla\n\trotation counts.\n\nSigned-off-by: Kyrylo Tkachov \u003cktkachov@nvidia.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8a3416231ff1c22406873d117122ac9387999e38",
      "old_mode": 33188,
      "old_path": "gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90",
      "new_id": "c1996b748699ea9e8b10a49d774e8f3e7d8163fc",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90"
    }
  ]
}
