)]}'
{
  "commit": "fe4f6c1a58ab4f00a88a97af01000b6783b573ee",
  "tree": "d791a6647c08648b7bb038dbf215592fbab58ea7",
  "parents": [
    "4b1d5b8d4f4d09e9988c0f5ca4a35957bf99235e"
  ],
  "author": {
    "name": "Luke Lau",
    "email": "luke@igalia.com",
    "time": "Mon Jul 28 22:59:49 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jul 28 22:59:49 2025 +0800"
  },
  "message": "[RISCV] Cost bf16/f16 vector non-unit memory accesses as legal without zvfhmin/zvfbfmin (#150882)\n\nWhen vectorizing with predication some loops that were previously\nvectorized without zvfhmin/zvfbfmin will no longer be vectorized because\nthe masked load/store or gather/scatter cost returns illegal.\n\nThis is due to a discrepancy where for these costs we check\nisLegalElementTypeForRVV but for regular memory accesses we don\u0027t.\n\nBut for bf16 and f16 vectors we don\u0027t actually need the extension\nsupport for loads and stores, so this adds a new function which takes\nthis into account.\n\nFor regular memory accesses we should probably also e.g. return an\ninvalid cost for i64 elements on zve32x, but it doesn\u0027t look like we\nhave tests for this yet.\n\nWe also should probably not be vectorizing these bf16/f16 loops to begin\nwith if we don\u0027t have zvfhmin/zvfbfmin and zfhmin/zfbfmin. I think this\nis due to the scalar costs being too cheap. I\u0027ve added tests for this in\na100f6367205c6a909d68027af6a8675a8091bd9 to fix in another patch.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "54845e53741312a4ffd7becf3c669ad3fc35ec3d",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/RISCV/RISCVISelLowering.cpp",
      "new_id": "607edd3d859f86d0f19ddda5e9c53462bcdf7553",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/RISCV/RISCVISelLowering.cpp"
    },
    {
      "type": "modify",
      "old_id": "ca70c46988b4e705fea452a572e4ee22364db175",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/RISCV/RISCVISelLowering.h",
      "new_id": "a788c0b72184b3113e1b8a106c294e8b3c90d7f1",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/RISCV/RISCVISelLowering.h"
    },
    {
      "type": "modify",
      "old_id": "30d8f850763a247e9f65361e4fd3c46f714b0806",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/RISCV/RISCVInterleavedAccess.cpp",
      "new_id": "3cbe668b08244b72ea201bd77bc8b39d0618f692",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/RISCV/RISCVInterleavedAccess.cpp"
    },
    {
      "type": "modify",
      "old_id": "d62d99cf31899549a9ed0036d37e2fcfc832f7c6",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h",
      "new_id": "f0510ec65b9d4b24d171df7ac36f3d47811cefce",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h"
    },
    {
      "type": "modify",
      "old_id": "892277a2d5740137b106ecbb1020328dfec5510f",
      "old_mode": 33188,
      "old_path": "llvm/test/Analysis/CostModel/RISCV/masked_ldst.ll",
      "new_id": "68c89c3f77b3fdcd6fcf1215ddcdcf455df35fc5",
      "new_mode": 33188,
      "new_path": "llvm/test/Analysis/CostModel/RISCV/masked_ldst.ll"
    },
    {
      "type": "modify",
      "old_id": "672e94962da6d98467a43cd974188d14f17547d8",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/InterleavedAccess/RISCV/interleaved-accesses.ll",
      "new_id": "b505917402e314f4f3838524a8d31bb82c38bef6",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/InterleavedAccess/RISCV/interleaved-accesses.ll"
    },
    {
      "type": "modify",
      "old_id": "d5b25bfe349b94366acfb08d6eed7ec81405bd3c",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/bf16.ll",
      "new_id": "03c6f089df9aa27b5b758d51c68ea7b720fd23e5",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/bf16.ll"
    },
    {
      "type": "modify",
      "old_id": "5b5655216d9ce9747cdab8351b3244b08694f5f4",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/f16.ll",
      "new_id": "a2eef84a4e1ec109a19adee4804777f090b49b07",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/f16.ll"
    }
  ]
}
