)]}'
{
  "commit": "0a624fede4e6d9eeca32279d1418916a0a880394",
  "tree": "7cda7a8f69acea7600386c3e1468569be993a16e",
  "parents": [
    "7dba3eb1664b4ce56d58791a22e3fb00eebcff62"
  ],
  "author": {
    "name": "Xi Ruoyao",
    "email": "xry111@xry111.site",
    "time": "Tue Jul 15 03:01:12 2025 +0800"
  },
  "committer": {
    "name": "Xi Ruoyao",
    "email": "xry111@xry111.site",
    "time": "Mon Jul 28 09:45:07 2025 +0800"
  },
  "message": "LoongArch: Fix wrong code generated by TARGET_VECTORIZE_VEC_PERM_CONST [PR121064]\n\nWhen TARGET_VECTORIZE_VEC_PERM_CONST is called, target may be the\nsame pseudo as op0 and/or op1.  Loading the selector into target\nwould clobber the input, producing wrong code like\n\n    vld     $vr0, $t0\n    vshuf.w $vr0, $vr0, $vr1\n\nSo don\u0027t load the selector into d-\u003etarget, use a new pseudo to hold the\nselector instead.  The reload pass will load the pseudo for selector and\nthe pseudo for target into the same hard register (following our\nconstraint \u00270\u0027 on the shuf instructions) anyway.\n\ngcc/ChangeLog:\n\n\tPR target/121064\n\t* config/loongarch/lsx.md (lsx_vshuf_\u003clsxfmt_f\u003e): Add \u0027@\u0027 to\n\tgenerate a mode-aware helper.  Use \u003cVIMODE\u003e as the mode of the\n\toperand 1 (selector).\n\t* config/loongarch/lasx.md (lasx_xvshuf_\u003clasxfmt_f\u003e): Likewise.\n\t* config/loongarch/loongarch.cc\n\t(loongarch_try_expand_lsx_vshuf_const): Create a new pseudo for\n\tthe selector.  Use the mode-aware helper to simplify the code.\n\t(loongarch_expand_vec_perm_const): Likewise.\n\ngcc/testsuite/ChangeLog:\n\n\tPR target/121064\n\t* gcc.target/loongarch/pr121064.c: New test.\n\n(cherry picked from commit d626debcb3717f18bf2ee88f4281b109b13e1181)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "43e3ab0026abe16cff52034fc15486ec5292fc6e",
      "old_mode": 33188,
      "old_path": "gcc/config/loongarch/lasx.md",
      "new_id": "3d71f30a54be83ff936e0bbf8fbb8eb744d6c4ad",
      "new_mode": 33188,
      "new_path": "gcc/config/loongarch/lasx.md"
    },
    {
      "type": "modify",
      "old_id": "7533e53839f43c7f82f2d36b00c05fd2de1384e2",
      "old_mode": 33188,
      "old_path": "gcc/config/loongarch/loongarch.cc",
      "new_id": "ac24c6d768fbdcb2872f50657004b7d5c04e2aa0",
      "new_mode": 33188,
      "new_path": "gcc/config/loongarch/loongarch.cc"
    },
    {
      "type": "modify",
      "old_id": "407c86870dfc75d8bbbe566d3129d76227a9dcf4",
      "old_mode": 33188,
      "old_path": "gcc/config/loongarch/lsx.md",
      "new_id": "fb0236ba0f1b4191e715b9d04e52fbf93d0aec11",
      "new_mode": 33188,
      "new_path": "gcc/config/loongarch/lsx.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a466c7abc70e22926c09039aea7fcf5a707d210c",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/loongarch/pr121064.c"
    }
  ]
}
