)]}'
{
  "commit": "4eb1a07d7d1a9722e84490b0ff79d3ae5e260f76",
  "tree": "23059f1cf8f99313ece4f31e2c363052910c4f2a",
  "parents": [
    "8135b7c1abd7d22f98cf3dbd7d7a93c9fc7755c6"
  ],
  "author": {
    "name": "Yang Bai",
    "email": "baiyang0132@gmail.com",
    "time": "Tue Aug 19 01:09:12 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Aug 18 10:09:12 2025 -0700"
  },
  "message": "[mlir][vector] Support multi-dimensional vectors in VectorFromElementsLowering (#151175)\n\nThis patch introduces a new unrolling-based approach for lowering\nmulti-dimensional `vector.from_elements` operations.\n\n**Implementation Details:**\n1. **New Transform Pattern**: Added `UnrollFromElements` that unrolls a\nN-D(N\u003e\u003d2) from_elements op to a (N-1)-D from_elements op align the\noutermost dimension.\n2. **Utility Functions**: Added `unrollVectorOp` to reuse the unroll\nalgo of vector.gather for vector.from_elements.\n3. **Integration**: Added the unrolling pattern to the\nconvert-vector-to-llvm pass as a temporal transformation.\n4. Use direct LLVM dialect operations instead of intermediate\nvector.insert operations for efficiency in `VectorFromElementsLowering`.\n\n**Example:**\n```mlir\n// unroll\n%v \u003d vector.from_elements  %e0, %e1, %e2, %e3 : vector\u003c2x2xf32\u003e\n\u003d\u003e\n%poison_2d \u003d ub.poison : vector\u003c2x2xf32\u003e\n%vec_1d_0 \u003d vector.from_elements %e0, %e1 : vector\u003c2xf32\u003e\n%vec_2d_0 \u003d vector.insert %vec_1d_0, %poison_2d [0] : vector\u003c2xf32\u003e into vector\u003c2x2xf32\u003e\n%vec_1d_1 \u003d vector.from_elements %e2, %e3 : vector\u003c2xf32\u003e\n%result \u003d vector.insert %vec_1d_1, %vec_2d_0 [1] : vector\u003c2xf32\u003e into vector\u003c2x2xf32\u003e\n\n// convert-vector-to-llvm\n%v \u003d vector.from_elements %e0, %e1, %e2, %e3 : vector\u003c2x2xf32\u003e\n\u003d\u003e\n%poison_2d \u003d ub.poison : vector\u003c2x2xf32\u003e\n%poison_2d_cast \u003d builtin.unrealized_conversion_cast %poison_2d : vector\u003c2x2xf32\u003e to !llvm.array\u003c2 x vector\u003c2xf32\u003e\u003e\n%poison_1d_0 \u003d llvm.mlir.poison : vector\u003c2xf32\u003e\n%c0_0 \u003d llvm.mlir.constant(0 : i64) : i64\n%vec_1d_0_0 \u003d llvm.insertelement %e0, %poison_1d_0[%c0_0 : i64] : vector\u003c2xf32\u003e\n%c1_0 \u003d llvm.mlir.constant(1 : i64) : i64\n%vec_1d_0_1 \u003d llvm.insertelement %e1, %vec_1d_0_0[%c1_0 : i64] : vector\u003c2xf32\u003e\n%vec_2d_0 \u003d llvm.insertvalue %vec_1d_0_1, %poison_2d_cast[0] : !llvm.array\u003c2 x vector\u003c2xf32\u003e\u003e\n%poison_1d_1 \u003d llvm.mlir.poison : vector\u003c2xf32\u003e\n%c0_1 \u003d llvm.mlir.constant(0 : i64) : i64\n%vec_1d_1_0 \u003d llvm.insertelement %e2, %poison_1d_1[%c0_1 : i64] : vector\u003c2xf32\u003e\n%c1_1 \u003d llvm.mlir.constant(1 : i64) : i64\n%vec_1d_1_1 \u003d llvm.insertelement %e3, %vec_1d_1_0[%c1_1 : i64] : vector\u003c2xf32\u003e\n%vec_2d_1 \u003d llvm.insertvalue %vec_1d_1_1, %vec_2d_0[1] : !llvm.array\u003c2 x vector\u003c2xf32\u003e\u003e\n%result \u003d builtin.unrealized_conversion_cast %vec_2d_1 : !llvm.array\u003c2 x vector\u003c2xf32\u003e\u003e to vector\u003c2x2xf32\u003e\n```\n\n---------\n\nCo-authored-by: Nicolas Vasilache \u003cNico.Vasilache@amd.com\u003e\nCo-authored-by: Yang Bai \u003cyangb@nvidia.com\u003e\nCo-authored-by: James Newling \u003cjames.newling@gmail.com\u003e\nCo-authored-by: Diego Caballero \u003cdieg0ca6aller0@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "299f198e4ab9c9b0ffc45f5ee10335fd1bdd2ad0",
      "old_mode": 33188,
      "old_path": "mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td",
      "new_id": "07a4117a37b2ca324c5b8dcf8b9f659c64b53722",
      "new_mode": 33188,
      "new_path": "mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td"
    },
    {
      "type": "modify",
      "old_id": "e03f0dabece52cffa17e4194433f44275582a4d4",
      "old_mode": 33188,
      "old_path": "mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h",
      "new_id": "47f96112a94338b5a9494247174411ce29ce1a02",
      "new_mode": 33188,
      "new_path": "mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h"
    },
    {
      "type": "modify",
      "old_id": "8bd54cf31b893efaf97505a2ea459b1fb75075d9",
      "old_mode": 33188,
      "old_path": "mlir/include/mlir/Dialect/Vector/Utils/VectorUtils.h",
      "new_id": "ace26990601c820bf69d779e77469a757958580b",
      "new_mode": 33188,
      "new_path": "mlir/include/mlir/Dialect/Vector/Utils/VectorUtils.h"
    },
    {
      "type": "modify",
      "old_id": "f9e2a01dbf96902948316d42c93986dac0ce2a68",
      "old_mode": 33188,
      "old_path": "mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp",
      "new_id": "afc3d1b12ac0d752b79eb585846eb0dacb9add23",
      "new_mode": 33188,
      "new_path": "mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp"
    },
    {
      "type": "modify",
      "old_id": "cf108690c37414520c248610eea55807e7a79d45",
      "old_mode": 33188,
      "old_path": "mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVMPass.cpp",
      "new_id": "9852df6970fdc161ad9c662d03877d257a357c5a",
      "new_mode": 33188,
      "new_path": "mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVMPass.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d5cc070558c3e4351efdbae6e8d03400d3ce979",
      "old_mode": 33188,
      "old_path": "mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp",
      "new_id": "fe066dc04ad550cd6ddcce49e02b10d9ec883d97",
      "new_mode": 33188,
      "new_path": "mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "9e287fc109990df6b1270b0de0f4e24134ea2544",
      "old_mode": 33188,
      "old_path": "mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt",
      "new_id": "acbf2b746037bdc9dd079fdd8f2156165596446f",
      "new_mode": 33188,
      "new_path": "mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c22fd54cef46bc368f1246bdf03a98690aef636a",
      "new_mode": 33188,
      "new_path": "mlir/lib/Dialect/Vector/Transforms/LowerVectorFromElements.cpp"
    },
    {
      "type": "modify",
      "old_id": "e062f55f87679cdfcb228f08a35cd888a99b9a4f",
      "old_mode": 33188,
      "old_path": "mlir/lib/Dialect/Vector/Transforms/LowerVectorGather.cpp",
      "new_id": "90f21c53246b043fb6298818f212384d1cc1fb7c",
      "new_mode": 33188,
      "new_path": "mlir/lib/Dialect/Vector/Transforms/LowerVectorGather.cpp"
    },
    {
      "type": "modify",
      "old_id": "6e2fa35e1279a9dc16bbd271f23802d89b9a8424",
      "old_mode": 33188,
      "old_path": "mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp",
      "new_id": "841e1384e03b315c4c2de3c94c952a85afacd35b",
      "new_mode": 33188,
      "new_path": "mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "72810b5dddaa3e17a3ac3ae6e4ba4d17662ea49c",
      "old_mode": 33188,
      "old_path": "mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir",
      "new_id": "07d335117de01c85e40231adef286180c33802fd",
      "new_mode": 33188,
      "new_path": "mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8fac608ed5692ebe8ef287aaf5d2ad6b83636ca9",
      "new_mode": 33188,
      "new_path": "mlir/test/Dialect/Vector/vector-from-elements-lowering.mlir"
    },
    {
      "type": "modify",
      "old_id": "5be267c1be984f0bcd3f995426b6cb69b81c7a4d",
      "old_mode": 33188,
      "old_path": "mlir/test/Dialect/Vector/vector-gather-lowering.mlir",
      "new_id": "9c2a508671e06f68bd7facd6446613d0b59f90de",
      "new_mode": 33188,
      "new_path": "mlir/test/Dialect/Vector/vector-gather-lowering.mlir"
    },
    {
      "type": "modify",
      "old_id": "f89c944b5c56459f0830265cfa2c7f5597a6c8d9",
      "old_mode": 33188,
      "old_path": "mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp",
      "new_id": "bb1598ee3efe5745758635f87751e8c63d08c20a",
      "new_mode": 33188,
      "new_path": "mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp"
    },
    {
      "type": "modify",
      "old_id": "a51f2154d1f7d54f5b8e903ecb9c340cfc8df498",
      "old_mode": 33188,
      "old_path": "mlir/test/python/dialects/transform_vector_ext.py",
      "new_id": "5a648fe073315be0bb80d22c37478d3ba9dadb9f",
      "new_mode": 33188,
      "new_path": "mlir/test/python/dialects/transform_vector_ext.py"
    }
  ]
}
