Skip to content

Conversation

@silee2
Copy link
Contributor

@silee2 silee2 commented Aug 20, 2025

Add XeGPU to XeVM conversion pass and tests.

@llvmbot
Copy link
Member

llvmbot commented Aug 20, 2025

@llvm/pr-subscribers-mlir-gpu

@llvm/pr-subscribers-mlir

Author: Sang Ik Lee (silee2)

Changes

Add XeGPU to XeVM conversion pass and tests.


Patch is 80.54 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/154556.diff

13 Files Affected:

  • (modified) mlir/include/mlir/Conversion/Passes.h (+1)
  • (modified) mlir/include/mlir/Conversion/Passes.td (+12)
  • (added) mlir/include/mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h (+27)
  • (modified) mlir/lib/Conversion/CMakeLists.txt (+1)
  • (added) mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt (+25)
  • (added) mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp (+932)
  • (added) mlir/test/Conversion/XeGPUToXeVM/create_nd_tdesc.mlir (+48)
  • (added) mlir/test/Conversion/XeGPUToXeVM/dpas.mlir (+17)
  • (added) mlir/test/Conversion/XeGPUToXeVM/fence.mlir (+15)
  • (added) mlir/test/Conversion/XeGPUToXeVM/loadstore_nd.mlir (+71)
  • (added) mlir/test/Conversion/XeGPUToXeVM/loadstoreprefetch.mlir (+357)
  • (added) mlir/test/Conversion/XeGPUToXeVM/prefetch_nd.mlir (+40)
  • (added) mlir/test/Conversion/XeGPUToXeVM/update_offset.mlir (+25)
diff --git a/mlir/include/mlir/Conversion/Passes.h b/mlir/include/mlir/Conversion/Passes.h
index 91b2ecf8922a3..da061b269daf7 100644
--- a/mlir/include/mlir/Conversion/Passes.h
+++ b/mlir/include/mlir/Conversion/Passes.h
@@ -82,6 +82,7 @@
 #include "mlir/Conversion/VectorToSCF/VectorToSCF.h"
 #include "mlir/Conversion/VectorToSPIRV/VectorToSPIRVPass.h"
 #include "mlir/Conversion/VectorToXeGPU/VectorToXeGPU.h"
+#include "mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h"
 #include "mlir/Conversion/XeVMToLLVM/XeVMToLLVM.h"
 
 namespace mlir {
diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td
index 2058aba7f9e37..323af3e97e2d4 100644
--- a/mlir/include/mlir/Conversion/Passes.td
+++ b/mlir/include/mlir/Conversion/Passes.td
@@ -1555,4 +1555,16 @@ def ConvertXeVMToLLVMPass : Pass<"convert-xevm-to-llvm"> {
   let dependentDialects = ["LLVM::LLVMDialect"];
 }
 
+//===----------------------------------------------------------------------===//
+// XeGPUToXeVM
+//===----------------------------------------------------------------------===//
+
+def ConvertXeGPUToXeVMPass : Pass<"convert-xegpu-to-xevm"> {
+  let summary = "Convert XeGPU to XeVM dialect";
+  let dependentDialects = ["xevm::XeVMDialect", "vector::VectorDialect",
+                           "memref::MemRefDialect", "arith::ArithDialect",
+                           "LLVM::LLVMDialect", "index::IndexDialect",
+                           "gpu::GPUDialect", "scf::SCFDialect"];
+}
+
 #endif // MLIR_CONVERSION_PASSES
diff --git a/mlir/include/mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h b/mlir/include/mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h
new file mode 100644
index 0000000000000..fb23d24b0161b
--- /dev/null
+++ b/mlir/include/mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h
@@ -0,0 +1,27 @@
+//===-- XeGPUToXeVM.h - Convert XeGPU to XeVM dialect ---------_--*- C++-*-===//
+//
+// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#ifndef MLIR_CONVERSION_XEGPUTOXEVM_XEGPUTOXEVMPASS_H_
+#define MLIR_CONVERSION_XEGPUTOXEVM_XEGPUTOXEVMPASS_H_
+
+#include <memory>
+
+namespace mlir {
+class DialectRegistry;
+class LLVMTypeConverter;
+class RewritePatternSet;
+class Pass;
+
+#define GEN_PASS_DECL_CONVERTXEGPUTOXEVMPASS
+#include "mlir/Conversion/Passes.h.inc"
+
+void populateXeGPUToXeVMConversionPatterns(
+    mlir::RewritePatternSet &patterns, mlir::LLVMTypeConverter &typeConverter);
+
+} // namespace mlir
+
+#endif // MLIR_CONVERSION_XEGPUTOXEVM_XEGPUTOXEVMPASS_H_
diff --git a/mlir/lib/Conversion/CMakeLists.txt b/mlir/lib/Conversion/CMakeLists.txt
index 171f7169fd41d..134fe8e14ca38 100644
--- a/mlir/lib/Conversion/CMakeLists.txt
+++ b/mlir/lib/Conversion/CMakeLists.txt
@@ -76,3 +76,4 @@ add_subdirectory(VectorToSCF)
 add_subdirectory(VectorToSPIRV)
 add_subdirectory(VectorToXeGPU)
 add_subdirectory(XeVMToLLVM)
+add_subdirectory(XeGPUToXeVM)
diff --git a/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt b/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt
new file mode 100644
index 0000000000000..ed54b0bb5ee81
--- /dev/null
+++ b/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt
@@ -0,0 +1,25 @@
+add_mlir_conversion_library(MLIRXeGPUToXeVM
+  XeGPUToXeVM.cpp
+
+  ADDITIONAL_HEADER_DIRS
+  ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/XeGPUToXeVM
+
+  DEPENDS
+  MLIRConversionPassIncGen
+
+  LINK_COMPONENTS
+  Core
+
+  LINK_LIBS PUBLIC
+  MLIRFuncDialect
+  MLIRGPUDialect
+  MLIRLLVMCommonConversion
+  MLIRLLVMDialect
+  MLIRXeVMDialect
+  MLIRVectorDialect
+  MLIRArithDialect
+  MLIRIndexDialect
+  MLIRXeGPUDialect
+  MLIRPass
+  MLIRTransforms
+)
diff --git a/mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp b/mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp
new file mode 100644
index 0000000000000..380409afbc62e
--- /dev/null
+++ b/mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp
@@ -0,0 +1,932 @@
+//===-- XeVMToLLVM.cpp - XeVM to LLVM dialect conversion --------*- C++ -*-===//
+//
+// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "mlir/Conversion/XeGPUToXeVM/XeGPUToXeVM.h"
+#include "mlir/Dialect/LLVMIR/XeVMDialect.h"
+
+#include "mlir/Conversion/LLVMCommon/Pattern.h"
+#include "mlir/Dialect/Arith/IR/Arith.h"
+#include "mlir/Dialect/GPU/IR/GPUDialect.h"
+#include "mlir/Dialect/Index/IR/IndexDialect.h"
+#include "mlir/Dialect/Index/IR/IndexOps.h"
+#include "mlir/Dialect/LLVMIR/FunctionCallUtils.h"
+#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
+#include "mlir/Dialect/MemRef/IR/MemRef.h"
+#include "mlir/Dialect/SCF/IR/SCF.h"
+#include "mlir/Dialect/SCF/Transforms/Patterns.h"
+#include "mlir/Dialect/XeGPU/IR/XeGPU.h"
+#include "mlir/Pass/Pass.h"
+#include "mlir/Support/LLVM.h"
+#include "llvm/Support/FormatVariadic.h"
+
+#include "mlir/IR/BuiltinTypes.h"
+#include "mlir/IR/Types.h"
+
+#include "llvm/ADT/TypeSwitch.h"
+
+namespace mlir {
+#define GEN_PASS_DEF_CONVERTXEGPUTOXEVMPASS
+#include "mlir/Conversion/Passes.h.inc"
+} // namespace mlir
+
+using namespace mlir;
+
+namespace {
+
+enum class NdDescI32Layout : uint32_t {
+  BasePtr = 0,
+  BaseShapeW = 2,
+  BaseShapeH = 3,
+  TensorOffsetW = 4,
+  TensorOffsetH = 5
+};
+
+static int32_t getNumericXeVMAddrSpace(xegpu::MemorySpace xeGpuMemspace) {
+  switch (xeGpuMemspace) {
+  case xegpu::MemorySpace::Global:
+    return static_cast<int>(xevm::AddrSpace::GLOBAL);
+  case xegpu::MemorySpace::SLM:
+    return static_cast<int>(xevm::AddrSpace::SHARED);
+  }
+  llvm_unreachable("Unknown XeGPU memory space.");
+}
+
+template <typename T>
+std::tuple<bool, int32_t, int32_t> checkAllLinear(SmallVector<T> denseAttr) {
+  assert(!denseAttr.empty());
+  const int32_t intercept{static_cast<int32_t>(denseAttr[0])};
+  if (denseAttr.size() < 2)
+    return {true, 0, intercept};
+  const T slope{denseAttr[1] - denseAttr[0]};
+  for (size_t i = 1; i < denseAttr.size(); ++i)
+    if (denseAttr[i] - denseAttr[i - 1] != slope)
+      return {false, 0, 0};
+  return {true, static_cast<int32_t>(slope), intercept};
+}
+
+VectorType encodeVectorTypeTo(VectorType currentVecType, Type toElemType) {
+  auto elemType = currentVecType.getElementType();
+  auto currentBitWidth = elemType.getIntOrFloatBitWidth();
+  auto newBitWidth = toElemType.getIntOrFloatBitWidth();
+  const int size =
+      currentVecType.getNumElements() * currentBitWidth / newBitWidth;
+  return VectorType::get(size, toElemType);
+}
+
+xevm::LoadCacheControl
+translateLoadXeGPUCacheHint(std::optional<xegpu::CachePolicy> L1hint,
+                            std::optional<xegpu::CachePolicy> L3hint) {
+  auto L1hintVal =
+      L1hint.has_value() ? L1hint.value() : xegpu::CachePolicy::UNCACHED;
+  auto L3hintVal =
+      L3hint.has_value() ? L3hint.value() : xegpu::CachePolicy::UNCACHED;
+  switch (L1hintVal) {
+  case xegpu::CachePolicy::CACHED:
+    if (L3hintVal == xegpu::CachePolicy::CACHED)
+      return xevm::LoadCacheControl::L1C_L2UC_L3C;
+    else if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::LoadCacheControl::L1C_L2UC_L3UC;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::UNCACHED:
+    if (L3hintVal == xegpu::CachePolicy::CACHED)
+      return xevm::LoadCacheControl::L1UC_L2UC_L3C;
+    else if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::LoadCacheControl::L1UC_L2UC_L3UC;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::STREAMING:
+    if (L3hintVal == xegpu::CachePolicy::CACHED)
+      return xevm::LoadCacheControl::L1S_L2UC_L3C;
+    else if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::LoadCacheControl::L1S_L2UC_L3UC;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::READ_INVALIDATE:
+    return xevm::LoadCacheControl::INVALIDATE_READ;
+  default:
+    llvm_unreachable("Unsupported cache control.");
+  }
+}
+
+xevm::StoreCacheControl
+translateStoreXeGPUCacheHint(std::optional<xegpu::CachePolicy> L1hint,
+                             std::optional<xegpu::CachePolicy> L3hint) {
+  auto L1hintVal =
+      L1hint.has_value() ? L1hint.value() : xegpu::CachePolicy::UNCACHED;
+  auto L3hintVal =
+      L3hint.has_value() ? L3hint.value() : xegpu::CachePolicy::UNCACHED;
+  switch (L1hintVal) {
+  case xegpu::CachePolicy::UNCACHED:
+    if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::StoreCacheControl::L1UC_L2UC_L3UC;
+    else if (L3hintVal == xegpu::CachePolicy::WRITE_BACK)
+      return xevm::StoreCacheControl::L1UC_L2UC_L3WB;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::STREAMING:
+    if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::StoreCacheControl::L1S_L2UC_L3UC;
+    else if (L3hintVal == xegpu::CachePolicy::WRITE_BACK)
+      return xevm::StoreCacheControl::L1S_L2UC_L3WB;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::WRITE_BACK:
+    if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::StoreCacheControl::L1WB_L2UC_L3UC;
+    else if (L3hintVal == xegpu::CachePolicy::WRITE_BACK)
+      return xevm::StoreCacheControl::L1WB_L2UC_L3WB;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  case xegpu::CachePolicy::WRITE_THROUGH:
+    if (L3hintVal == xegpu::CachePolicy::UNCACHED)
+      return xevm::StoreCacheControl::L1WT_L2UC_L3UC;
+    else if (L3hintVal == xegpu::CachePolicy::WRITE_BACK)
+      return xevm::StoreCacheControl::L1WT_L2UC_L3WB;
+    else
+      llvm_unreachable("Unsupported cache control.");
+  default:
+    llvm_unreachable("Unsupported cache control.");
+  }
+}
+
+class CreateNdDescToXeVMPattern
+    : public OpConversionPattern<xegpu::CreateNdDescOp> {
+  using OpConversionPattern::OpConversionPattern;
+  LogicalResult
+  matchAndRewrite(xegpu::CreateNdDescOp op,
+                  xegpu::CreateNdDescOp::Adaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    auto loc = op.getLoc();
+    auto source = op.getSource();
+    Type payloadElemTy = rewriter.getI32Type();
+    Type i64Ty = rewriter.getI64Type();
+    VectorType payloadTy = VectorType::get(8, payloadElemTy);
+    VectorType payloadI64Ty = VectorType::get(4, i64Ty);
+    Value payload = arith::ConstantOp::create(
+        rewriter, loc,
+        DenseElementsAttr::get(payloadTy, IntegerAttr::get(payloadElemTy, 0)));
+
+    Value baseAddr;
+    Value baseShapeW;
+    Value baseShapeH;
+    Value offsetW;
+    Value offsetH;
+
+    bool sourceIsMemref = false;
+    auto sourceTy = source.getType();
+    int64_t rank;
+    if (isa<MemRefType>(sourceTy)) {
+      sourceIsMemref = true;
+      baseAddr =
+          memref::ExtractAlignedPointerAsIndexOp::create(rewriter, loc, source);
+      auto sourceMemrefTy = cast<MemRefType>(sourceTy);
+      if (!sourceMemrefTy.hasStaticShape()) {
+        op.emitError() << "Expected static memref shape.";
+        return failure();
+      }
+      rank = sourceMemrefTy.getRank();
+      if (rank != 2) {
+        op.emitError() << "Expected a 2D memref.";
+        return failure();
+      }
+    } else if (sourceTy == rewriter.getIntegerType(64, false)) {
+      rank = op.getMixedSizes().size();
+    } else {
+      op.emitError() << "Expected source to be a 2D memref or ui64.";
+      return failure();
+    }
+    auto createOffset = [&](unsigned idx) -> Value {
+      Value val;
+      OpFoldResult ofr = op.getMixedOffsets()[idx];
+      if (auto v = llvm::dyn_cast_if_present<Value>(ofr)) {
+        val = arith::IndexCastOp::create(rewriter, loc, i64Ty, v);
+        val = arith::TruncIOp::create(rewriter, loc, payloadElemTy, val);
+      } else {
+        int32_t off = llvm::cast<IntegerAttr>(cast<Attribute>(ofr)).getInt();
+        val = arith::ConstantIntOp::create(rewriter, loc, payloadElemTy, off);
+      }
+      return val;
+    };
+    auto offsets = op.getMixedOffsets();
+    if (offsets.size() == 2) {
+      offsetW = createOffset(rank - 1);
+      offsetH = createOffset(rank - 2);
+    } else {
+      offsetW = arith::ConstantIntOp::create(rewriter, loc, payloadElemTy, 0);
+      offsetH = arith::ConstantIntOp::create(rewriter, loc, payloadElemTy, 0);
+    }
+    auto createShape = [&](unsigned idx) -> Value {
+      Value val;
+      OpFoldResult ofr = op.getMixedSizes()[idx];
+      if (auto v = llvm::dyn_cast_if_present<Value>(ofr)) {
+        val = arith::IndexCastOp::create(rewriter, loc, i64Ty, v);
+        val = arith::TruncIOp::create(rewriter, loc, payloadElemTy, val);
+      } else {
+        int32_t off = llvm::cast<IntegerAttr>(cast<Attribute>(ofr)).getInt();
+        val = arith::ConstantIntOp::create(rewriter, loc, payloadElemTy, off);
+      }
+      return val;
+    };
+    if (sourceIsMemref) {
+      auto sourceMemrefTy = cast<MemRefType>(sourceTy);
+      baseShapeW = arith::ConstantIntOp::create(
+          rewriter, loc, payloadElemTy, sourceMemrefTy.getDimSize(rank - 1));
+      baseShapeH = arith::ConstantIntOp::create(
+          rewriter, loc, payloadElemTy, sourceMemrefTy.getDimSize(rank - 2));
+      baseAddr = arith::IndexCastUIOp::create(rewriter, loc, i64Ty, baseAddr);
+    } else {
+      baseShapeW = createShape(rank - 1);
+      baseShapeH = createShape(rank - 2);
+      baseAddr = adaptor.getSource();
+    }
+    Value payLoadAsI64 =
+        vector::BitCastOp::create(rewriter, loc, payloadI64Ty, payload);
+    payLoadAsI64 =
+        vector::InsertOp::create(rewriter, loc, baseAddr, payLoadAsI64,
+                                 static_cast<int>(NdDescI32Layout::BasePtr));
+    payload = vector::BitCastOp::create(rewriter, loc, payloadTy, payLoadAsI64);
+    payload =
+        vector::InsertOp::create(rewriter, loc, baseShapeW, payload,
+                                 static_cast<int>(NdDescI32Layout::BaseShapeW));
+    payload =
+        vector::InsertOp::create(rewriter, loc, baseShapeH, payload,
+                                 static_cast<int>(NdDescI32Layout::BaseShapeH));
+    payload = vector::InsertOp::create(
+        rewriter, loc, offsetW, payload,
+        static_cast<int>(NdDescI32Layout::TensorOffsetW));
+    payload = vector::InsertOp::create(
+        rewriter, loc, offsetH, payload,
+        static_cast<int>(NdDescI32Layout::TensorOffsetH));
+    rewriter.replaceOp(op, payload);
+    return success();
+  }
+};
+
+class UpdateNdOffsetToXeVMPattern
+    : public OpConversionPattern<xegpu::UpdateNdOffsetOp> {
+  using OpConversionPattern::OpConversionPattern;
+  LogicalResult
+  matchAndRewrite(xegpu::UpdateNdOffsetOp op,
+                  xegpu::UpdateNdOffsetOp::Adaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    auto loc = op.getLoc();
+    auto offsets = op.getOffsets();
+    auto tdesc = adaptor.getTensorDesc();
+    for (size_t offsetDim = 0; offsetDim < offsets.size(); offsetDim++) {
+      auto offset = offsets[offsetDim];
+      if (auto cst =
+              dyn_cast_if_present<arith::ConstantOp>(offset.getDefiningOp()))
+        if (auto attr = dyn_cast_if_present<IntegerAttr>(cst.getValue());
+            attr && !attr.getInt())
+          continue;
+      const int offsetPos =
+          static_cast<int>(offsetDim ? NdDescI32Layout::TensorOffsetW
+                                     : NdDescI32Layout::TensorOffsetH);
+      auto oldOffset =
+          vector::ExtractOp::create(rewriter, loc, tdesc, offsetPos);
+      offset = arith::IndexCastUIOp::create(rewriter, loc,
+                                            rewriter.getI32Type(), offset);
+      auto newOffset = arith::AddIOp::create(rewriter, loc, oldOffset, offset);
+      tdesc =
+          vector::InsertOp::create(rewriter, loc, newOffset, tdesc, offsetPos);
+    }
+    rewriter.replaceOp(op, tdesc);
+    return success();
+  }
+};
+
+template <
+    typename OpType,
+    typename = std::enable_if_t<llvm::is_one_of<
+        OpType, xegpu::LoadNdOp, xegpu::StoreNdOp, xegpu::PrefetchNdOp>::value>>
+class LoadStorePrefetchNdToXeVMPattern : public OpConversionPattern<OpType> {
+  using OpConversionPattern<OpType>::OpConversionPattern;
+  LogicalResult
+  matchAndRewrite(OpType op, typename OpType::Adaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    auto loc = op.getLoc();
+    auto ctxt = rewriter.getContext();
+
+    auto tdesc = adaptor.getTensorDesc();
+    auto tdescTy = op.getTensorDescType();
+    if (tdescTy.getRank() != 2) {
+      return rewriter.notifyMatchFailure(op, "Expected 2D tensor descriptor.");
+    }
+
+    VectorType payloadI64Ty = VectorType::get(4, rewriter.getI64Type());
+    Value payLoadAsI64 =
+        vector::BitCastOp::create(rewriter, loc, payloadI64Ty, tdesc);
+    Value basePtr =
+        vector::ExtractOp::create(rewriter, loc, payLoadAsI64,
+                                  static_cast<int>(NdDescI32Layout::BasePtr));
+    Value baseShapeW = vector::ExtractOp::create(
+        rewriter, loc, tdesc, static_cast<int>(NdDescI32Layout::BaseShapeW));
+    Value baseShapeH = vector::ExtractOp::create(
+        rewriter, loc, tdesc, static_cast<int>(NdDescI32Layout::BaseShapeH));
+    // Offsets can come from three sources:
+    // 1. Constant offsets, which are provided by the op.
+    // 2. Offsets as operands, which are provided by the op.
+    // 3. Offsets extracted from the tensor descriptor.
+    Value offsetW;
+    Value offsetH;
+    auto cOffsets = op.getConstOffsets();
+    auto offsets = op.getOffsets();
+    if (cOffsets) {
+      offsetW = arith::ConstantIntOp::create(
+          rewriter, loc, rewriter.getI32Type(), (*cOffsets)[0]);
+      offsetH = arith::ConstantIntOp::create(
+          rewriter, loc, rewriter.getI32Type(), (*cOffsets)[1]);
+    } else if (offsets.size() != 0) {
+      // offsets are provided as operands
+      if (offsets[0].getType() != rewriter.getI32Type()) {
+        if (offsets[0].getType() != rewriter.getIndexType()) {
+          return rewriter.notifyMatchFailure(
+              op, "Expected offsets to be of type i32 or index.");
+        }
+        offsetW = arith::IndexCastUIOp::create(
+            rewriter, loc, rewriter.getI32Type(), offsets[0]);
+      } else {
+        offsetW = offsets[0];
+      }
+      if (offsets[1].getType() != rewriter.getI32Type()) {
+        if (offsets[1].getType() != rewriter.getIndexType()) {
+          return rewriter.notifyMatchFailure(
+              op, "Expected offsets to be of type i32 or index.");
+        }
+        offsetH = arith::IndexCastUIOp::create(
+            rewriter, loc, rewriter.getI32Type(), offsets[1]);
+      } else {
+        offsetH = offsets[1];
+      }
+    } else {
+      // If offsets are not available, we need to extract them from the tensor
+      // descriptor.
+      offsetW = vector::ExtractOp::create(
+          rewriter, loc, tdesc,
+          static_cast<int>(NdDescI32Layout::TensorOffsetW));
+      offsetH = vector::ExtractOp::create(
+          rewriter, loc, tdesc,
+          static_cast<int>(NdDescI32Layout::TensorOffsetH));
+    }
+    auto ptrTypeLLVM = LLVM::LLVMPointerType::get(
+        ctxt, getNumericXeVMAddrSpace(tdescTy.getMemorySpace()));
+    Value basePtrLLVM =
+        LLVM::IntToPtrOp::create(rewriter, loc, ptrTypeLLVM, basePtr);
+    auto elemType = tdescTy.getElementType();
+    auto elemBitSize = elemType.getIntOrFloatBitWidth();
+    // auto elemBitSizeAttr = rewriter.getIntegerAttr(rewriter.getI32Type(),
+    // elemBitSize);
+    Value elemByteSize = arith::ConstantIntOp::create(
+        rewriter, loc, rewriter.getI32Type(), elemBitSize / 8);
+    Value surfaceW =
+        arith::MulIOp::create(rewriter, loc, baseShapeW, elemByteSize);
+
+    auto tileW = tdescTy.getDimSize(1);
+    auto tileH = tdescTy.getDimSize(0);
+    int32_t vblocks = tdescTy.getArrayLength();
+    if constexpr (std::is_same_v<OpType, xegpu::StoreNdOp>) {
+      VectorType srcVecTy = cast<VectorType>(op.getValue().getType());
+      auto storeCacheControl =
+          translateStoreXeGPUCacheHint(op.get...
[truncated]

@silee2
Copy link
Contributor Author

silee2 commented Aug 20, 2025

@akroviakov

@silee2 silee2 requested a review from nbpatel August 20, 2025 15:20
@github-actions
Copy link

github-actions bot commented Aug 20, 2025

✅ With the latest revision this PR passed the C/C++ code formatter.

@silee2 silee2 requested a review from adam-smnk August 20, 2025 15:26
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dead code?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Dead code. Removed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we deliberately avoid a more natural i64 (which is also part of XeGPU_BaseAddrType) and only support ui64? I would imagine the opposite. Did I miss a good reason to only rely on ui64?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pointing out.
That was my misunderstanding, still thought ui64 is only base address form other than memref.
Will need to add support for other base addr types.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure it should really be an enum, since all usages involve static casts to int, maybe some constexprs?

Copy link
Contributor Author

@silee2 silee2 Aug 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if individual constexprs are better. Code readability would get worse as the logical grouping of offsets is gone.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

XeGPU definition says:

* offsets: a vector containing offsets of each access point. Its size
is fixed to the hardware supportted subgroup size, e.g., 16 on PVC,
implying each element in the vector corresponds to a work-item (SIMT lane)
in the subgroup.

According to your tests and laneAddr calculation (without extract ops to get lane offset), you treat it as a single-element vector (i.e., SIMT offset), which contradicts the op description. Please clarify the conflict.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That part of the description needs to be updated.
vector of offsets fit subgroup level, but after SIMT distribution,
ops consuming the descriptor are no longer cooperative and becomes per lane regular load / store / prefetch.
vector<1xindex> fits that abstraction better.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume in this case vector<1xindex> will be converted by the LLVM type converter?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then, please modify the op description with more explanation to avoid confusion, as there is no obvious intermediate step in-between the description (offsets vector) and lowering (scalar offset).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will create a separate PR to update the description. That one should merge before this one.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for mask. I think it is best to give a pseudo IR example of how a description-conformant op transforms into the expected lowering input.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actual transform will be done in SIMT distribution pass, but will add example in op description to help user understand valid op form.

Copy link
Contributor

@charithaintc charithaintc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % comments

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a comment describing what this class mean.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added comments.

Comment on lines 326 to 331
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure about this. const offsets will always be present. if some offset is dynamic it will be present as kDynamic.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. using getMixedOffsets can guarantee every dim contains meaningful values.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using getMixedOffsets now.

Comment on lines 334 to 353
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can be done in a loop to make it future proof.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactored code. Not loop based but scalable.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above comment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added comment.

@silee2
Copy link
Contributor Author

silee2 commented Aug 21, 2025

@akroviakov Created #154653 that cleans up XeGPU ops and update descriptions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to fail if (offsets) check?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. offsets is optional and returns a Value{} which evaluates to false if not present.
if source / dest is a tensor descriptor, offsets is not allowed. Offsets are coming from tensor descriptor in such case.

Comment on lines 874 to 877
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could be nice to make expose these by moving the custom conversion into a separate populate*TypeConversions function. Then others can still use the conversion patterns in custom passes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not yet clear if these conversions are reusable.
Would try to refactor in a future PR after giving some thoughts.

Copy link
Contributor

@adam-smnk adam-smnk Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, are the patterns in populateXeGPUToXeVMConversionPatterns usable without these conversions?
Conversion might not be reusable in a generic sense but without these type conversions I'm forced to use this pass and can't freely add patterns to my custom wrapper etc.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am curious is it ok for integer sourceTy that rank != 2?
getMixedSizes also works on memref type. So it is safe to use it at the beginning. Just in case you need to check rank for all types of sourceTy.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the tip. Using getMixedSizes now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure whether some utils in arith can help to simplify the implementation here.
e.g., getValueOrCreateConstantIntOp and getValueOrCreateCastToIndexLike

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Those utils are very useful. Now the code sequence is much shorter.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this assume rank could be larger than 2?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added restriction to stick to 2D.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it looks very similar to createOffset

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Combined them into a single lambda.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getMixedSize should cover memref and integer type source. So for baseShapeW and baseShapeH, there is no need to check the sourceTy

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the check up and using getMixedSize now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this assuming offsets to be 2D?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Added offset rank restriction and cleaned up the code. Should read better now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it seems getConstantIntValue can be used here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated code sequence.

Comment on lines 326 to 331
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. using getMixedOffsets can guarantee every dim contains meaningful values.

Copy link
Contributor

@chencha3 chencha3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a general question. Since we are retiring ops, e.g., CreateNdOp with offsets, and LoadNd/StoreNd/PrefetchNd without offsets. The support for these cases are still needed in this pass?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: braces are not needed for single statement

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed redundant braces.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems BaseShapeH e.t.c, represents related positions in the playload. Not sure whether NdDescI32Layout is an appropriate name. But adding a comments for NdDescI32Layout seems necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed to NdTdescOffset since the enum is about offsets to payload.
Added comments as well.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the definition, the offsets are always index type. is this I32 type check still needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated code sequence. The check does not apply anymore.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since it shares similar code with offsets[0], may be worth to have lambda for it. I am not sure whether using isa<I32>() is better than rewriter.getI32Type(). I had an impression when I push the first PR, medhi metioned methods e.g., rewriter.getI32Type is heavy. Maybe I am wrong.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated code. Now using MLIR util functions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe using adaptor.getSource() too to make it consistent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now using adaptor.getSource() whenever used as an operand.

@silee2
Copy link
Contributor Author

silee2 commented Aug 26, 2025

I have a general question. Since we are retiring ops, e.g., CreateNdOp with offsets, and LoadNd/StoreNd/PrefetchNd without offsets. The support for these cases are still needed in this pass?

I'm not sure. But from a coverage point for view would be better to have support.
But would consider removing support at some point.

@silee2
Copy link
Contributor Author

silee2 commented Aug 26, 2025

@adam-smnk @chencha3 @akroviakov @charithaintc
I think I have addressed all comments.
Please let me know if anything slipped through.

Copy link
Contributor

@chencha3 chencha3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % some comments

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe can mention NdTdescOffset in the comment. It may help understanding the payload a little bit.

Copy link
Contributor Author

@silee2 silee2 Aug 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added comment about offset enum

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: move payloadTy one line up.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using adaptor.getSource()?

Copy link
Contributor Author

@silee2 silee2 Aug 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is intentional, adaptor.getSource() for memref yields i64 for base address as memref is used like raw pointers. Whenever memref type info is required, need to use op.getSource().getType() to get original memref type.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: move the check up? or to line 180?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the check up.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why not just use 0 and 1 to replace rank - 2 and rank - 1?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this check maybe not necessary, it seems be handled by the op definition?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked the op definition and it doen't restrict rank.

@silee2 silee2 force-pushed the addXeGPUToXeVMPass branch from fbfd800 to b01086e Compare August 27, 2025 17:45
@charithaintc charithaintc self-requested a review August 27, 2025 18:03
Copy link
Contributor

@charithaintc charithaintc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have additional concerns. thanks for the great work.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume in this case vector<1xindex> will be converted by the LLVM type converter?

Comment on lines 749 to 751
// Below are uArch dependent values, should move away from hardcoding
constexpr int32_t systolicDepth{8};
constexpr int32_t executionSize{16};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use static constexpr and move them to the top of file with a TODO note, so we remember to clean this up.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Comment on lines 870 to 873
unsigned sum = 1;
for (unsigned i = 0; i < rank; i++) {
sum *= type.getShape()[i];
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
unsigned sum = 1;
for (unsigned i = 0; i < rank; i++) {
sum *= type.getShape()[i];
}
int64_t sum = std::accumulate(type.getShape().begin(),
type.getShape().end(), int64_t{1},
std::multiplies<int64_t>());

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@silee2
Copy link
Contributor Author

silee2 commented Aug 27, 2025

I assume in this case vector<1xindex> will be converted by the LLVM type converter?
Yes. By https://github.com/silee2/llvm-project/blob/addXeGPUToXeVMPass/mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp#L860-#L875
To scalar i64

@silee2 silee2 merged commit 6166fda into llvm:main Aug 27, 2025
9 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 27, 2025

LLVM Buildbot has detected a new failure on builder mlir-nvidia running on mlir-nvidia while building mlir at step 6 "build-check-mlir-build-only".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/138/builds/18234

Here is the relevant piece of the build log for the reference
Step 6 (build-check-mlir-build-only) failure: build (failure)
...
199.654 [882/16/4517] Linking CXX shared library lib/libMLIRTosaToLinalg.so.22.0git
199.668 [881/16/4518] Creating library symlink lib/libMLIRTosaToLinalg.so
199.674 [880/16/4519] Linking CXX shared library lib/libMLIRUBToLLVM.so.22.0git
199.681 [879/16/4520] Creating library symlink lib/libMLIRUBToLLVM.so
199.694 [878/16/4521] Linking CXX shared library lib/libMLIRVectorToArmSME.so.22.0git
199.702 [877/16/4522] Creating library symlink lib/libMLIRVectorToArmSME.so
199.707 [876/16/4523] Linking CXX shared library lib/libMLIRXeVMToLLVM.so.22.0git
199.715 [875/16/4524] Creating library symlink lib/libMLIRXeVMToLLVM.so
199.773 [874/16/4525] Linking CXX shared library lib/libMLIRSCFUtils.so.22.0git
199.815 [873/16/4526] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/clang++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -Werror=global-constructors -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=lld -Wl,--color-diagnostics   -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/vol/worker/mlir-nvidia/mlir-nvidia/llvm.obj/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/vol/worker/mlir-nvidia/mlir-nvidia/llvm.obj/lib && :
ld.lld: error: undefined symbol: mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)
>>> referenced by XeGPUToXeVM.cpp
>>>               tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o:((anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation())
clang: error: linker command failed with exit code 1 (use -v to see invocation)
199.848 [873/15/4527] Linking CXX shared library lib/libMLIRAMXDialect.so.22.0git
199.852 [873/14/4528] Linking CXX shared library lib/libMLIRAMDGPUTransforms.so.22.0git
199.892 [873/13/4529] Linking CXX shared library lib/libMLIRArmNeonTransforms.so.22.0git
200.874 [873/12/4530] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
202.204 [873/11/4531] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
203.287 [873/10/4532] Building CXX object tools/mlir/test/lib/Dialect/ArmSME/CMakeFiles/MLIRArmSMETestPasses.dir/TestLowerToArmSME.cpp.o
205.983 [873/9/4533] Building CXX object tools/mlir/test/lib/Dialect/LLVM/CMakeFiles/MLIRLLVMTestPasses.dir/TestPatterns.cpp.o
207.159 [873/8/4534] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
208.613 [873/7/4535] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
210.094 [873/6/4536] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
211.780 [873/5/4537] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
215.681 [873/4/4538] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
218.189 [873/3/4539] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
218.348 [873/2/4540] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
219.133 [873/1/4541] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
ninja: build stopped: subcommand failed.

silee2 added a commit that referenced this pull request Aug 27, 2025
Add missing dependency MLIRSCFDialect from #154556
@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 28, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-rhel-8-cmake-build-only running on rocm-docker-rhel-8 while building mlir at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/204/builds/20154

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[5541/8046] Linking CXX shared library lib/libMLIRCAPIControlFlow.so.22.0git
[5542/8046] Creating library symlink lib/libMLIRAMXTransforms.so
[5543/8046] Linking CXX shared library lib/libMLIRConvertToEmitC.so.22.0git
[5544/8046] Creating library symlink lib/libMLIRAffineTransforms.so
[5545/8046] Creating library symlink lib/libMLIRCAPIEmitC.so
[5546/8046] Linking CXX shared library lib/libMLIRCAPIIndex.so.22.0git
[5547/8046] Linking CXX shared library lib/libMLIRCAPIMemRef.so.22.0git
[5548/8046] Creating library symlink lib/libMLIRCAPIControlFlow.so
[5549/8046] Creating library symlink lib/libMLIRConvertToEmitC.so
[5550/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -lpthread  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: In function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xc45): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5551/8046] Creating library symlink lib/libMLIRCAPIMemRef.so
[5552/8046] Creating library symlink lib/libMLIRCAPIIndex.so
[5553/8046] Linking CXX shared library lib/libMLIRCAPIMath.so.22.0git
[5554/8046] Linking CXX shared library lib/libMLIRVectorTransforms.so.22.0git
[5555/8046] Linking CXX shared library lib/libMLIRArithToLLVM.so.22.0git
[5556/8046] Linking CXX shared library lib/libMLIRVectorToAMX.so.22.0git
[5557/8046] Linking CXX shared library lib/libMLIRTargetLLVMIRExport.so.22.0git
[5558/8046] Linking CXX shared library lib/libMLIRCAPIIRDL.so.22.0git
[5559/8046] Linking CXX shared library lib/libMLIRAffineToStandard.so.22.0git
[5560/8046] Linking CXX shared library lib/libMLIRCAPIAMDGPU.so.22.0git
[5561/8046] Linking CXX shared library lib/libMLIRCAPILLVM.so.22.0git
[5562/8046] Linking CXX shared library lib/libMLIRX86VectorTransforms.so.22.0git
[5563/8046] Linking CXX shared library lib/libMLIRMathTransforms.so.22.0git
[5564/8046] Linking CXX shared library lib/libMLIRTransformDialect.so.22.0git
[5565/8046] Linking CXX shared library lib/libMLIRTensorTransforms.so.22.0git
[5566/8046] Linking CXX shared library lib/libMLIRMemRefTransforms.so.22.0git
[5567/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5568/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5569/8046] Linking CXX shared library lib/libMLIRSPIRVDialect.so.22.0git
[5570/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5571/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5572/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5573/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5574/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5575/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5576/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5577/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5578/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5579/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5580/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5581/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5582/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5583/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[5541/8046] Linking CXX shared library lib/libMLIRCAPIControlFlow.so.22.0git
[5542/8046] Creating library symlink lib/libMLIRAMXTransforms.so
[5543/8046] Linking CXX shared library lib/libMLIRConvertToEmitC.so.22.0git
[5544/8046] Creating library symlink lib/libMLIRAffineTransforms.so
[5545/8046] Creating library symlink lib/libMLIRCAPIEmitC.so
[5546/8046] Linking CXX shared library lib/libMLIRCAPIIndex.so.22.0git
[5547/8046] Linking CXX shared library lib/libMLIRCAPIMemRef.so.22.0git
[5548/8046] Creating library symlink lib/libMLIRCAPIControlFlow.so
[5549/8046] Creating library symlink lib/libMLIRConvertToEmitC.so
[5550/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -lpthread  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: In function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xc45): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5551/8046] Creating library symlink lib/libMLIRCAPIMemRef.so
[5552/8046] Creating library symlink lib/libMLIRCAPIIndex.so
[5553/8046] Linking CXX shared library lib/libMLIRCAPIMath.so.22.0git
[5554/8046] Linking CXX shared library lib/libMLIRVectorTransforms.so.22.0git
[5555/8046] Linking CXX shared library lib/libMLIRArithToLLVM.so.22.0git
[5556/8046] Linking CXX shared library lib/libMLIRVectorToAMX.so.22.0git
[5557/8046] Linking CXX shared library lib/libMLIRTargetLLVMIRExport.so.22.0git
[5558/8046] Linking CXX shared library lib/libMLIRCAPIIRDL.so.22.0git
[5559/8046] Linking CXX shared library lib/libMLIRAffineToStandard.so.22.0git
[5560/8046] Linking CXX shared library lib/libMLIRCAPIAMDGPU.so.22.0git
[5561/8046] Linking CXX shared library lib/libMLIRCAPILLVM.so.22.0git
[5562/8046] Linking CXX shared library lib/libMLIRX86VectorTransforms.so.22.0git
[5563/8046] Linking CXX shared library lib/libMLIRMathTransforms.so.22.0git
[5564/8046] Linking CXX shared library lib/libMLIRTransformDialect.so.22.0git
[5565/8046] Linking CXX shared library lib/libMLIRTensorTransforms.so.22.0git
[5566/8046] Linking CXX shared library lib/libMLIRMemRefTransforms.so.22.0git
[5567/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5568/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5569/8046] Linking CXX shared library lib/libMLIRSPIRVDialect.so.22.0git
[5570/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5571/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5572/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5573/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5574/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5575/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5576/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5577/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5578/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5579/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5580/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5581/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5582/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5583/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 28, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-ubuntu-22-cmake-build-only running on rocm-docker-ubu-22 while building mlir at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/203/builds/21342

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[5510/8046] Creating library symlink lib/libMLIRMPIToLLVM.so
[5511/8046] Creating library symlink lib/libMLIRUBToLLVM.so
[5512/8046] Creating library symlink lib/libMLIRX86VectorDialect.so
[5513/8046] Creating library symlink lib/libMLIRLinalgUtils.so
[5514/8046] Creating library symlink lib/libMLIREmitCTransforms.so
[5515/8046] Linking CXX shared library lib/libMLIRArmNeonTransforms.so.22.0git
[5516/8046] Linking CXX shared library lib/libMLIRAMXDialect.so.22.0git
[5517/8046] Creating library symlink lib/libMLIRAMXDialect.so
[5518/8046] Linking CXX shared library lib/libMLIRControlFlowTransforms.so.22.0git
[5519/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xa8c): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5520/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Split.cpp.o
[5521/8046] Linking CXX shared library lib/libMLIRArithToEmitC.so.22.0git
[5522/8046] Linking CXX shared library lib/libMLIRArithTransforms.so.22.0git
[5523/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/SwapExtractSliceWithFillPatterns.cpp.o
[5524/8046] Linking CXX shared library lib/libMLIRBufferizationToMemRef.so.22.0git
[5525/8046] Linking CXX shared library lib/libMLIRSCFToEmitC.so.22.0git
[5526/8046] Linking CXX shared library lib/libMLIRArmSVETransforms.so.22.0git
[5527/8046] Linking CXX shared library lib/libMLIRAMXTransforms.so.22.0git
[5528/8046] Linking CXX shared library lib/libMLIRLLVMIRTransforms.so.22.0git
[5529/8046] Building CXX object tools/mlir/lib/Conversion/MathToROCDL/CMakeFiles/obj.MLIRMathToROCDL.dir/MathToROCDL.cpp.o
[5530/8046] Linking CXX shared library lib/libMLIRVectorToAMX.so.22.0git
[5531/8046] Linking CXX shared library lib/libMLIRX86VectorTransforms.so.22.0git
[5532/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/SplitReduction.cpp.o
[5533/8046] Building CXX object tools/mlir/lib/Conversion/GPUCommon/CMakeFiles/obj.MLIRGPUToGPURuntimeTransforms.dir/GPUToLLVMConversion.cpp.o
[5534/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5535/8046] Building CXX object tools/mlir/lib/CMakeFiles/obj.MLIRRegisterAllPasses.dir/RegisterAllPasses.cpp.o
[5536/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5537/8046] Building CXX object tools/flang/lib/Optimizer/Dialect/Support/CMakeFiles/FIRDialectSupport.dir/FIRContext.cpp.o
[5538/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5539/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5540/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5541/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5542/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5543/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5544/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5545/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgTransforms.cpp.o
[5546/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5547/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5548/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5549/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5550/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5551/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5552/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[5510/8046] Creating library symlink lib/libMLIRMPIToLLVM.so
[5511/8046] Creating library symlink lib/libMLIRUBToLLVM.so
[5512/8046] Creating library symlink lib/libMLIRX86VectorDialect.so
[5513/8046] Creating library symlink lib/libMLIRLinalgUtils.so
[5514/8046] Creating library symlink lib/libMLIREmitCTransforms.so
[5515/8046] Linking CXX shared library lib/libMLIRArmNeonTransforms.so.22.0git
[5516/8046] Linking CXX shared library lib/libMLIRAMXDialect.so.22.0git
[5517/8046] Creating library symlink lib/libMLIRAMXDialect.so
[5518/8046] Linking CXX shared library lib/libMLIRControlFlowTransforms.so.22.0git
[5519/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xa8c): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5520/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Split.cpp.o
[5521/8046] Linking CXX shared library lib/libMLIRArithToEmitC.so.22.0git
[5522/8046] Linking CXX shared library lib/libMLIRArithTransforms.so.22.0git
[5523/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/SwapExtractSliceWithFillPatterns.cpp.o
[5524/8046] Linking CXX shared library lib/libMLIRBufferizationToMemRef.so.22.0git
[5525/8046] Linking CXX shared library lib/libMLIRSCFToEmitC.so.22.0git
[5526/8046] Linking CXX shared library lib/libMLIRArmSVETransforms.so.22.0git
[5527/8046] Linking CXX shared library lib/libMLIRAMXTransforms.so.22.0git
[5528/8046] Linking CXX shared library lib/libMLIRLLVMIRTransforms.so.22.0git
[5529/8046] Building CXX object tools/mlir/lib/Conversion/MathToROCDL/CMakeFiles/obj.MLIRMathToROCDL.dir/MathToROCDL.cpp.o
[5530/8046] Linking CXX shared library lib/libMLIRVectorToAMX.so.22.0git
[5531/8046] Linking CXX shared library lib/libMLIRX86VectorTransforms.so.22.0git
[5532/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/SplitReduction.cpp.o
[5533/8046] Building CXX object tools/mlir/lib/Conversion/GPUCommon/CMakeFiles/obj.MLIRGPUToGPURuntimeTransforms.dir/GPUToLLVMConversion.cpp.o
[5534/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5535/8046] Building CXX object tools/mlir/lib/CMakeFiles/obj.MLIRRegisterAllPasses.dir/RegisterAllPasses.cpp.o
[5536/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5537/8046] Building CXX object tools/flang/lib/Optimizer/Dialect/Support/CMakeFiles/FIRDialectSupport.dir/FIRContext.cpp.o
[5538/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5539/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5540/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5541/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5542/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5543/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5544/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5545/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgTransforms.cpp.o
[5546/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5547/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5548/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5549/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5550/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5551/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5552/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 28, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-rhel-9-cmake-build-only running on rocm-docker-rhel-9 while building mlir at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/205/builds/20131

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[5516/8046] Linking CXX shared library lib/libMLIRAMXDialect.so.22.0git
[5517/8046] Linking CXX shared library lib/libMLIRXeVMToLLVM.so.22.0git
[5518/8046] Linking CXX shared library lib/libMLIRNVVMToLLVM.so.22.0git
[5519/8046] Linking CXX shared library lib/libMLIRVectorToArmSME.so.22.0git
[5520/8046] Linking CXX shared library lib/libMLIRAffineTransforms.so.22.0git
[5521/8046] Creating library symlink lib/libMLIRUBToLLVM.so
[5522/8046] Creating library symlink lib/libMLIRXeVMToLLVM.so
[5523/8046] Creating library symlink lib/libMLIRNVVMToLLVM.so
[5524/8046] Creating library symlink lib/libMLIRAffineTransforms.so
[5525/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xa2f): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5526/8046] Creating library symlink lib/libMLIRAMXDialect.so
[5527/8046] Creating library symlink lib/libMLIRVectorToArmSME.so
[5528/8046] Creating library symlink lib/libMLIRLinalgUtils.so
[5529/8046] Linking CXX shared library lib/libMLIRTestMathToVCIX.so.22.0git
[5530/8046] Linking CXX shared library lib/libMLIRAMDGPUTransforms.so.22.0git
[5531/8046] Linking CXX shared library lib/libMLIRArithToEmitC.so.22.0git
[5532/8046] Linking CXX shared library lib/libMLIRBufferizationTransforms.so.22.0git
[5533/8046] Linking CXX shared library lib/libMLIRSCFToEmitC.so.22.0git
[5534/8046] Linking CXX shared library lib/libMLIRFuncTransforms.so.22.0git
[5535/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5536/8046] Linking CXX shared library lib/libMLIRArmSVETransforms.so.22.0git
[5537/8046] Linking CXX shared library lib/libMLIRAffineToStandard.so.22.0git
[5538/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5539/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5540/8046] Building CXX object tools/mlir/test/lib/Dialect/ArmSME/CMakeFiles/MLIRArmSMETestPasses.dir/TestLowerToArmSME.cpp.o
[5541/8046] Building CXX object tools/flang/lib/Optimizer/Dialect/Support/CMakeFiles/FIRDialectSupport.dir/KindMapping.cpp.o
[5542/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5543/8046] Building CXX object tools/mlir/test/lib/Conversion/MemRefToLLVM/CMakeFiles/MLIRTestMemRefToLLVMWithTransforms.dir/TestMemRefToLLVMWithTransforms.cpp.o
[5544/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5545/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgRankReduceContractionOps.cpp.o
[5546/8046] Building CXX object tools/mlir/test/lib/Dialect/LLVM/CMakeFiles/MLIRLLVMTestPasses.dir/TestLowerToLLVM.cpp.o
[5547/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5548/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5549/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5550/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgElementwiseFusion.cpp.o
[5551/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5552/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5553/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5554/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5555/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5556/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5557/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5558/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[5516/8046] Linking CXX shared library lib/libMLIRAMXDialect.so.22.0git
[5517/8046] Linking CXX shared library lib/libMLIRXeVMToLLVM.so.22.0git
[5518/8046] Linking CXX shared library lib/libMLIRNVVMToLLVM.so.22.0git
[5519/8046] Linking CXX shared library lib/libMLIRVectorToArmSME.so.22.0git
[5520/8046] Linking CXX shared library lib/libMLIRAffineTransforms.so.22.0git
[5521/8046] Creating library symlink lib/libMLIRUBToLLVM.so
[5522/8046] Creating library symlink lib/libMLIRXeVMToLLVM.so
[5523/8046] Creating library symlink lib/libMLIRNVVMToLLVM.so
[5524/8046] Creating library symlink lib/libMLIRAffineTransforms.so
[5525/8046] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0xa2f): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
[5526/8046] Creating library symlink lib/libMLIRAMXDialect.so
[5527/8046] Creating library symlink lib/libMLIRVectorToArmSME.so
[5528/8046] Creating library symlink lib/libMLIRLinalgUtils.so
[5529/8046] Linking CXX shared library lib/libMLIRTestMathToVCIX.so.22.0git
[5530/8046] Linking CXX shared library lib/libMLIRAMDGPUTransforms.so.22.0git
[5531/8046] Linking CXX shared library lib/libMLIRArithToEmitC.so.22.0git
[5532/8046] Linking CXX shared library lib/libMLIRBufferizationTransforms.so.22.0git
[5533/8046] Linking CXX shared library lib/libMLIRSCFToEmitC.so.22.0git
[5534/8046] Linking CXX shared library lib/libMLIRFuncTransforms.so.22.0git
[5535/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Specialize.cpp.o
[5536/8046] Linking CXX shared library lib/libMLIRArmSVETransforms.so.22.0git
[5537/8046] Linking CXX shared library lib/libMLIRAffineToStandard.so.22.0git
[5538/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Tiling.cpp.o
[5539/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DecomposeGenericByUnfoldingPermutation.cpp.o
[5540/8046] Building CXX object tools/mlir/test/lib/Dialect/ArmSME/CMakeFiles/MLIRArmSMETestPasses.dir/TestLowerToArmSME.cpp.o
[5541/8046] Building CXX object tools/flang/lib/Optimizer/Dialect/Support/CMakeFiles/FIRDialectSupport.dir/KindMapping.cpp.o
[5542/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Promotion.cpp.o
[5543/8046] Building CXX object tools/mlir/test/lib/Conversion/MemRefToLLVM/CMakeFiles/MLIRTestMemRefToLLVMWithTransforms.dir/TestMemRefToLLVMWithTransforms.cpp.o
[5544/8046] Building CXX object tools/mlir/lib/Dialect/GPU/TransformOps/CMakeFiles/obj.MLIRGPUTransformOps.dir/GPUTransformOps.cpp.o
[5545/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgRankReduceContractionOps.cpp.o
[5546/8046] Building CXX object tools/mlir/test/lib/Dialect/LLVM/CMakeFiles/MLIRLLVMTestPasses.dir/TestLowerToLLVM.cpp.o
[5547/8046] Building CXX object tools/mlir/lib/Conversion/GPUToNVVM/CMakeFiles/obj.MLIRGPUToNVVMTransforms.dir/LowerGpuOpsToNVVMOps.cpp.o
[5548/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Vectorization.cpp.o
[5549/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Transforms.cpp.o
[5550/8046] Building CXX object tools/mlir/test/lib/Dialect/Linalg/CMakeFiles/MLIRLinalgTestPasses.dir/TestLinalgElementwiseFusion.cpp.o
[5551/8046] Building CXX object tools/mlir/lib/CAPI/Dialect/CMakeFiles/obj.MLIRCAPILinalg.dir/LinalgPasses.cpp.o
[5552/8046] Building CXX object tools/mlir/lib/Dialect/SCF/TransformOps/CMakeFiles/obj.MLIRSCFTransformOps.dir/SCFTransformOps.cpp.o
[5553/8046] Building CXX object tools/mlir/lib/CAPI/Conversion/CMakeFiles/obj.MLIRCAPIConversion.dir/Passes.cpp.o
[5554/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Transforms/CMakeFiles/obj.MLIRSparseTensorTransforms.dir/SparseTensorPasses.cpp.o
[5555/8046] Building CXX object tools/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeFiles/obj.MLIRSparseTensorPipelines.dir/SparseTensorPipelines.cpp.o
[5556/8046] Building CXX object tools/mlir/lib/Dialect/Vector/TransformOps/CMakeFiles/obj.MLIRVectorTransformOps.dir/VectorTransformOps.cpp.o
[5557/8046] Building CXX object tools/mlir/lib/Dialect/Linalg/TransformOps/CMakeFiles/obj.MLIRLinalgTransformOps.dir/LinalgTransformOps.cpp.o
[5558/8046] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 28, 2025

LLVM Buildbot has detected a new failure on builder flang-aarch64-sharedlibs running on linaro-flang-aarch64-sharedlibs while building mlir at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/80/builds/15676

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
155.444 [1295/60/6501] Creating library symlink lib/libMLIRROCDLToLLVMIRTranslation.so
155.444 [1295/59/6502] Creating library symlink lib/libMLIRSPIRVToLLVMIRTranslation.so
155.444 [1295/58/6503] Creating library symlink lib/libMLIRVCIXToLLVMIRTranslation.so
155.445 [1295/57/6504] Creating library symlink lib/libMLIRXeVMToLLVMIRTranslation.so
155.445 [1295/56/6505] Creating library symlink lib/libMLIRTargetLLVM.so
155.445 [1295/55/6506] Creating library symlink lib/libclangAnalysisFlowSensitiveModels.so
155.445 [1295/54/6507] Linking CXX shared library lib/libMLIRQuantTransforms.so.22.0git
155.447 [1295/53/6508] Linking CXX shared library lib/libMLIRTosaToLinalg.so.22.0git
155.470 [1295/52/6509] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/SetgidSetuidOrderChecker.cpp.o
155.485 [1295/51/6510] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/local/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -Werror=global-constructors -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0x588): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
155.519 [1295/50/6511] Linking CXX shared library lib/libMLIRVectorToAMX.so.22.0git
155.762 [1295/49/6512] Linking CXX shared library lib/libMLIRAffineToStandard.so.22.0git
155.769 [1295/48/6513] Linking CXX shared library lib/libMLIRTensorTransforms.so.22.0git
155.775 [1295/47/6514] Linking CXX shared library lib/libMLIRTensorTilingInterfaceImpl.so.22.0git
155.796 [1295/46/6515] Linking CXX shared library lib/libMLIRShardTest.so.22.0git
155.887 [1295/45/6516] Linking CXX shared library lib/libclangParse.so.22.0git
155.899 [1295/44/6517] Linking CXX shared library lib/libMLIRAffineTransformOps.so.22.0git
155.936 [1295/43/6518] Linking CXX shared library lib/libMLIRAsyncToLLVM.so.22.0git
156.014 [1295/42/6519] Linking CXX shared library lib/libclangSerialization.so.22.0git
156.090 [1295/41/6520] Linking CXX shared library lib/libMLIROpenMPToLLVM.so.22.0git
156.126 [1295/40/6521] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/Taint.cpp.o
156.127 [1295/39/6522] Linking CXX shared library lib/libMLIRMemRefTransforms.so.22.0git
156.139 [1295/38/6523] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/STLAlgorithmModeling.cpp.o
156.150 [1295/37/6524] Linking CXX shared library lib/libMLIRSPIRVToLLVM.so.22.0git
156.152 [1295/36/6525] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StringChecker.cpp.o
156.212 [1295/35/6526] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefinedArraySubscriptChecker.cpp.o
156.213 [1295/34/6527] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefinedAssignmentChecker.cpp.o
156.220 [1295/33/6528] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefBranchChecker.cpp.o
156.222 [1295/32/6529] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StdLibraryFunctionsChecker.cpp.o
156.226 [1295/31/6530] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StdVariantChecker.cpp.o
156.229 [1295/30/6531] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefResultChecker.cpp.o
156.246 [1295/29/6532] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/TaintTesterChecker.cpp.o
156.248 [1295/28/6533] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StoreToImmutableChecker.cpp.o
156.249 [1295/27/6534] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefCapturedBlockVarChecker.cpp.o
156.260 [1295/26/6535] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UndefinedNewArraySizeChecker.cpp.o
156.267 [1295/25/6536] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/TestAfterDivZeroChecker.cpp.o
156.279 [1295/24/6537] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/TrustNonnullChecker.cpp.o
156.287 [1295/23/6538] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/TrustReturnsNonnullChecker.cpp.o
156.291 [1295/22/6539] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/TraversalChecker.cpp.o
156.328 [1295/21/6540] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StreamChecker.cpp.o
157.545 [1295/20/6541] Building CXX object tools/mlir/test/lib/Dialect/ArmSME/CMakeFiles/MLIRArmSMETestPasses.dir/TestLowerToArmSME.cpp.o
168.840 [1295/19/6542] Building CXX object tools/mlir/test/lib/Conversion/MemRefToLLVM/CMakeFiles/MLIRTestMemRefToLLVMWithTransforms.dir/TestMemRefToLLVMWithTransforms.cpp.o
168.944 [1295/18/6543] Building CXX object tools/mlir/test/lib/Dialect/ControlFlow/CMakeFiles/MLIRControlFlowTestPasses.dir/TestAssert.cpp.o
170.372 [1295/17/6544] Building CXX object tools/mlir/test/lib/Dialect/LLVM/CMakeFiles/MLIRLLVMTestPasses.dir/TestPatterns.cpp.o

@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 29, 2025

LLVM Buildbot has detected a new failure on builder flang-aarch64-latest-gcc running on linaro-flang-aarch64-latest-gcc while building mlir at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/130/builds/15137

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
1173.117 [2858/1/4803] Creating library symlink lib/libMLIRShapeToStandard.so
1173.911 [2857/1/4804] Linking CXX shared library lib/libMLIRTosaToLinalg.so.22.0git
1173.979 [2854/3/4805] Creating library symlink lib/libMLIRTosaToLinalg.so
1174.537 [2854/2/4806] Linking CXX shared library lib/libMLIRVectorToArmSME.so.22.0git
1174.577 [2854/1/4807] Linking CXX shared library lib/libMLIRUBToLLVM.so.22.0git
1174.645 [2851/3/4808] Creating library symlink lib/libMLIRVectorToArmSME.so
1174.785 [2851/2/4809] Creating library symlink lib/libMLIRUBToLLVM.so
1175.175 [2851/1/4810] Linking CXX shared library lib/libMLIRXeVMToLLVM.so.22.0git
1175.235 [2850/1/4811] Creating library symlink lib/libMLIRXeVMToLLVM.so
1176.192 [2849/1/4812] Linking CXX shared library lib/libMLIRXeGPUToXeVM.so.22.0git
FAILED: lib/libMLIRXeGPUToXeVM.so.22.0git 
: && /usr/local/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Wno-unused-but-set-parameter -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libMLIRXeGPUToXeVM.so.22.0git -o lib/libMLIRXeGPUToXeVM.so.22.0git tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/lib:"  lib/libMLIRLLVMCommonConversion.so.22.0git  lib/libMLIRXeGPUDialect.so.22.0git  lib/libMLIRTransforms.so.22.0git  lib/libMLIRGPUDialect.so.22.0git  lib/libMLIRDLTIDialect.so.22.0git  lib/libMLIRMathDialect.so.22.0git  lib/libMLIRXeVMDialect.so.22.0git  lib/libMLIRLLVMDialect.so.22.0git  lib/libLLVMAsmParser.so.22.0git  lib/libLLVMCore.so.22.0git  lib/libLLVMBinaryFormat.so.22.0git  lib/libMLIRVectorDialect.so.22.0git  lib/libMLIRIndexingMapOpInterface.so.22.0git  lib/libMLIRMaskableOpInterface.so.22.0git  lib/libMLIRMaskingOpInterface.so.22.0git  lib/libMLIRVectorInterfaces.so.22.0git  lib/libMLIRIndexDialect.so.22.0git  lib/libMLIRAffineUtils.so.22.0git  lib/libMLIRFuncDialect.so.22.0git  lib/libMLIRTransformUtils.so.22.0git  lib/libMLIRSubsetOpInterface.so.22.0git  lib/libMLIRRewrite.so.22.0git  lib/libMLIRRewritePDL.so.22.0git  lib/libMLIRPDLToPDLInterp.so.22.0git  lib/libMLIRPass.so.22.0git  lib/libMLIRPDLInterpDialect.so.22.0git  lib/libMLIRPDLDialect.so.22.0git  lib/libMLIRAffineAnalysis.so.22.0git  lib/libMLIRSCFDialect.so.22.0git  lib/libMLIRTensorDialect.so.22.0git  lib/libMLIRAffineDialect.so.22.0git  lib/libMLIRMemRefDialect.so.22.0git  lib/libMLIRMemorySlotInterfaces.so.22.0git  lib/libMLIRRuntimeVerifiableOpInterface.so.22.0git  lib/libMLIRParallelCombiningOpInterface.so.22.0git  lib/libMLIRValueBoundsOpInterface.so.22.0git  lib/libMLIRDestinationStyleOpInterface.so.22.0git  lib/libMLIRAnalysis.so.22.0git  lib/libMLIRDataLayoutInterfaces.so.22.0git  lib/libMLIRPresburger.so.22.0git  lib/libMLIRLoopLikeInterface.so.22.0git  lib/libMLIRFunctionInterfaces.so.22.0git  lib/libMLIRCallInterfaces.so.22.0git  lib/libMLIRControlFlowDialect.so.22.0git  lib/libMLIRControlFlowInterfaces.so.22.0git  lib/libMLIRSideEffectInterfaces.so.22.0git  lib/libMLIRArithUtils.so.22.0git  lib/libMLIRDialectUtils.so.22.0git  lib/libMLIRComplexDialect.so.22.0git  lib/libMLIRArithDialect.so.22.0git  lib/libMLIRUBDialect.so.22.0git  lib/libMLIRCastInterfaces.so.22.0git  lib/libMLIRInferIntRangeCommon.so.22.0git  lib/libMLIRInferIntRangeInterface.so.22.0git  lib/libMLIRShapedOpInterfaces.so.22.0git  lib/libMLIRInferTypeOpInterface.so.22.0git  lib/libMLIRDialect.so.22.0git  lib/libMLIRViewLikeInterface.so.22.0git  lib/libMLIRIR.so.22.0git  lib/libMLIRSupport.so.22.0git  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/lib && :
/usr/bin/ld: tools/mlir/lib/Conversion/XeGPUToXeVM/CMakeFiles/obj.MLIRXeGPUToXeVM.dir/XeGPUToXeVM.cpp.o: in function `(anonymous namespace)::ConvertXeGPUToXeVMPass::runOnOperation()':
XeGPUToXeVM.cpp:(.text._ZN12_GLOBAL__N_122ConvertXeGPUToXeVMPass14runOnOperationEv+0x4fc): undefined reference to `mlir::scf::populateSCFStructuralTypeConversionsAndLegality(mlir::TypeConverter const&, mlir::RewritePatternSet&, mlir::ConversionTarget&)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants