Skip to content

Conversation

mshahneo
Copy link
Contributor

@mshahneo mshahneo commented Oct 10, 2025

Reverts #159878
Missing CMake dependency.

@llvmbot llvmbot added the mlir label Oct 10, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 10, 2025

@llvm/pr-subscribers-mlir

Author: Md Abdullah Shahneous Bari (mshahneo)

Changes

Reverts llvm/llvm-project#159878


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

8 Files Affected:

  • (removed) mlir/include/mlir/Conversion/MathToXeVM/MathToXeVM.h (-27)
  • (modified) mlir/include/mlir/Conversion/Passes.h (-1)
  • (modified) mlir/include/mlir/Conversion/Passes.td (-25)
  • (modified) mlir/lib/Conversion/CMakeLists.txt (-1)
  • (removed) mlir/lib/Conversion/MathToXeVM/CMakeLists.txt (-19)
  • (removed) mlir/lib/Conversion/MathToXeVM/MathToXeVM.cpp (-174)
  • (removed) mlir/test/Conversion/MathToXeVM/math-to-xevm.mlir (-155)
  • (removed) mlir/test/Conversion/MathToXeVM/native-spirv-builtins.mlir (-118)
diff --git a/mlir/include/mlir/Conversion/MathToXeVM/MathToXeVM.h b/mlir/include/mlir/Conversion/MathToXeVM/MathToXeVM.h
deleted file mode 100644
index 91d3c92fd6296..0000000000000
--- a/mlir/include/mlir/Conversion/MathToXeVM/MathToXeVM.h
+++ /dev/null
@@ -1,27 +0,0 @@
-//===- MathToXeVM.h - Utils for converting Math to XeVM -------------------===//
-//
-// Part of the LLVM Project, 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_MATHTOXEVM_MATHTOXEVM_H_
-#define MLIR_CONVERSION_MATHTOXEVM_MATHTOXEVM_H_
-
-#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
-#include "mlir/Dialect/LLVMIR/XeVMDialect.h"
-#include "mlir/IR/PatternMatch.h"
-#include <memory>
-
-namespace mlir {
-class Pass;
-
-#define GEN_PASS_DECL_CONVERTMATHTOXEVM
-#include "mlir/Conversion/Passes.h.inc"
-
-/// Populate the given list with patterns that convert from Math to XeVM calls.
-void populateMathToXeVMConversionPatterns(RewritePatternSet &patterns,
-                                          bool convertArith);
-} // namespace mlir
-
-#endif // MLIR_CONVERSION_MATHTOXEVM_MATHTOXEVM_H_
diff --git a/mlir/include/mlir/Conversion/Passes.h b/mlir/include/mlir/Conversion/Passes.h
index 40d866ec7bf10..da061b269daf7 100644
--- a/mlir/include/mlir/Conversion/Passes.h
+++ b/mlir/include/mlir/Conversion/Passes.h
@@ -49,7 +49,6 @@
 #include "mlir/Conversion/MathToLibm/MathToLibm.h"
 #include "mlir/Conversion/MathToROCDL/MathToROCDL.h"
 #include "mlir/Conversion/MathToSPIRV/MathToSPIRVPass.h"
-#include "mlir/Conversion/MathToXeVM/MathToXeVM.h"
 #include "mlir/Conversion/MemRefToEmitC/MemRefToEmitCPass.h"
 #include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
 #include "mlir/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.h"
diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td
index 25e9d34f3e653..3c18ecc753d0f 100644
--- a/mlir/include/mlir/Conversion/Passes.td
+++ b/mlir/include/mlir/Conversion/Passes.td
@@ -796,31 +796,6 @@ def ConvertMathToSPIRVPass : Pass<"convert-math-to-spirv"> {
   let dependentDialects = ["spirv::SPIRVDialect"];
 }
 
-//===----------------------------------------------------------------------===//
-// MathToXeVM
-//===----------------------------------------------------------------------===//
-
-def ConvertMathToXeVM : Pass<"convert-math-to-xevm", "ModuleOp"> {
-  let summary =
-      "Convert (fast) math operations to native XeVM/SPIRV equivalents";
-  let description = [{
-    This pass converts supported math ops marked with the `afn` fastmath flag
-    to function calls for OpenCL `native_` math intrinsics: These intrinsics
-    are typically mapped directly to native device instructions, often resulting
-    in better performance. However, the precision/error of these intrinsics
-    are implementation-defined, and thus math ops are only converted when they
-    have the `afn` fastmath flag enabled.
-  }];
-  let options = [Option<
-      "convertArith", "convert-arith", "bool", /*default=*/"true",
-      "Convert supported Arith ops (e.g. arith.divf) as well.">];
-  let dependentDialects = [
-    "arith::ArithDialect",
-    "xevm::XeVMDialect",
-    "LLVM::LLVMDialect",
-  ];
-}
-
 //===----------------------------------------------------------------------===//
 // MathToEmitC
 //===----------------------------------------------------------------------===//
diff --git a/mlir/lib/Conversion/CMakeLists.txt b/mlir/lib/Conversion/CMakeLists.txt
index bebf1b8fff3f9..71986f83c4870 100644
--- a/mlir/lib/Conversion/CMakeLists.txt
+++ b/mlir/lib/Conversion/CMakeLists.txt
@@ -40,7 +40,6 @@ add_subdirectory(MathToLibm)
 add_subdirectory(MathToLLVM)
 add_subdirectory(MathToROCDL)
 add_subdirectory(MathToSPIRV)
-add_subdirectory(MathToXeVM)
 add_subdirectory(MemRefToEmitC)
 add_subdirectory(MemRefToLLVM)
 add_subdirectory(MemRefToSPIRV)
diff --git a/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt b/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt
deleted file mode 100644
index 95aaba31a993e..0000000000000
--- a/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-add_mlir_conversion_library(MLIRMathToXeVM
-  MathToXeVM.cpp
-
-  ADDITIONAL_HEADER_DIRS
-  ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToXeVM
-
-  DEPENDS
-  MLIRConversionPassIncGen
-
-  LINK_COMPONENTS
-  Core
-
-  LINK_LIBS PUBLIC
-  MLIRMathDialect
-  MLIRLLVMCommonConversion
-  MLIRPass
-  MLIRTransformUtils
-  MLIRVectorDialect
-  )
diff --git a/mlir/lib/Conversion/MathToXeVM/MathToXeVM.cpp b/mlir/lib/Conversion/MathToXeVM/MathToXeVM.cpp
deleted file mode 100644
index 03053dee5af40..0000000000000
--- a/mlir/lib/Conversion/MathToXeVM/MathToXeVM.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-//===-- MathToXeVM.cpp - conversion from Math to XeVM ---------------------===//
-//
-// Part of the LLVM Project, 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/MathToXeVM/MathToXeVM.h"
-#include "mlir/Conversion/ArithCommon/AttrToLLVMConverter.h"
-#include "mlir/Conversion/GPUCommon/GPUCommonPass.h"
-#include "mlir/Conversion/LLVMCommon/LoweringOptions.h"
-#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
-#include "mlir/Dialect/Func/IR/FuncOps.h"
-#include "mlir/Dialect/LLVMIR/FunctionCallUtils.h"
-#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
-#include "mlir/Dialect/Math/IR/Math.h"
-#include "mlir/Dialect/Vector/IR/VectorOps.h"
-#include "mlir/IR/BuiltinDialect.h"
-#include "mlir/IR/PatternMatch.h"
-#include "mlir/Pass/Pass.h"
-#include "mlir/Transforms/DialectConversion.h"
-#include "llvm/Support/FormatVariadic.h"
-
-namespace mlir {
-#define GEN_PASS_DEF_CONVERTMATHTOXEVM
-#include "mlir/Conversion/Passes.h.inc"
-} // namespace mlir
-
-using namespace mlir;
-
-#define DEBUG_TYPE "math-to-xevm"
-
-/// Convert math ops marked with `fast` (`afn`) to native OpenCL intrinsics.
-template <typename Op>
-struct ConvertNativeFuncPattern final : public OpConversionPattern<Op> {
-
-  ConvertNativeFuncPattern(MLIRContext *context, StringRef nativeFunc,
-                           PatternBenefit benefit = 1)
-      : OpConversionPattern<Op>(context, benefit), nativeFunc(nativeFunc) {}
-
-  LogicalResult
-  matchAndRewrite(Op op, typename Op::Adaptor adaptor,
-                  ConversionPatternRewriter &rewriter) const override {
-    if (!isSPIRVCompatibleFloatOrVec(op.getType()))
-      return failure();
-
-    arith::FastMathFlags fastFlags = op.getFastmath();
-    if (!arith::bitEnumContainsAll(fastFlags, arith::FastMathFlags::afn))
-      return rewriter.notifyMatchFailure(op, "not a fastmath `afn` operation");
-
-    SmallVector<Type, 1> operandTypes;
-    for (auto operand : adaptor.getOperands()) {
-      Type opTy = operand.getType();
-      // This pass only supports operations on vectors that are already in SPIRV
-      // supported vector sizes: Distributing unsupported vector sizes to SPIRV
-      // supported vector sizes are done in other blocking optimization passes.
-      if (!isSPIRVCompatibleFloatOrVec(opTy))
-        return rewriter.notifyMatchFailure(
-            op, llvm::formatv("incompatible operand type: '{0}'", opTy));
-      operandTypes.push_back(opTy);
-    }
-
-    auto moduleOp = op->template getParentWithTrait<OpTrait::SymbolTable>();
-    auto funcOpRes = LLVM::lookupOrCreateFn(
-        rewriter, moduleOp, getMangledNativeFuncName(operandTypes),
-        operandTypes, op.getType());
-    assert(!failed(funcOpRes));
-    LLVM::LLVMFuncOp funcOp = funcOpRes.value();
-
-    auto callOp = rewriter.replaceOpWithNewOp<LLVM::CallOp>(
-        op, funcOp, adaptor.getOperands());
-    // Preserve fastmath flags in our MLIR op when converting to llvm function
-    // calls, in order to allow further fastmath optimizations: We thus need to
-    // convert arith fastmath attrs into attrs recognized by llvm.
-    arith::AttrConvertFastMathToLLVM<Op, LLVM::CallOp> fastAttrConverter(op);
-    mlir::NamedAttribute fastAttr = fastAttrConverter.getAttrs()[0];
-    callOp->setAttr(fastAttr.getName(), fastAttr.getValue());
-    return success();
-  }
-
-  inline bool isSPIRVCompatibleFloatOrVec(Type type) const {
-    if (type.isFloat())
-      return true;
-    if (auto vecType = dyn_cast<VectorType>(type)) {
-      if (!vecType.getElementType().isFloat())
-        return false;
-      // SPIRV distinguishes between vectors and matrices: OpenCL native math
-      // intrsinics are not compatible with matrices.
-      ArrayRef<int64_t> shape = vecType.getShape();
-      if (shape.size() != 1)
-        return false;
-      // SPIRV only allows vectors of size 2, 3, 4, 8, 16.
-      if (shape[0] == 2 || shape[0] == 3 || shape[0] == 4 || shape[0] == 8 ||
-          shape[0] == 16)
-        return true;
-    }
-    return false;
-  }
-
-  inline std::string
-  getMangledNativeFuncName(const ArrayRef<Type> operandTypes) const {
-    std::string mangledFuncName =
-        "_Z" + std::to_string(nativeFunc.size()) + nativeFunc.str();
-
-    auto appendFloatToMangledFunc = [&mangledFuncName](Type type) {
-      if (type.isF32())
-        mangledFuncName += "f";
-      else if (type.isF16())
-        mangledFuncName += "Dh";
-      else if (type.isF64())
-        mangledFuncName += "d";
-    };
-
-    for (auto type : operandTypes) {
-      if (auto vecType = dyn_cast<VectorType>(type)) {
-        mangledFuncName += "Dv" + std::to_string(vecType.getShape()[0]) + "_";
-        appendFloatToMangledFunc(vecType.getElementType());
-      } else
-        appendFloatToMangledFunc(type);
-    }
-
-    return mangledFuncName;
-  }
-
-  const StringRef nativeFunc;
-};
-
-void mlir::populateMathToXeVMConversionPatterns(RewritePatternSet &patterns,
-                                                bool convertArith) {
-  patterns.add<ConvertNativeFuncPattern<math::ExpOp>>(patterns.getContext(),
-                                                      "__spirv_ocl_native_exp");
-  patterns.add<ConvertNativeFuncPattern<math::CosOp>>(patterns.getContext(),
-                                                      "__spirv_ocl_native_cos");
-  patterns.add<ConvertNativeFuncPattern<math::Exp2Op>>(
-      patterns.getContext(), "__spirv_ocl_native_exp2");
-  patterns.add<ConvertNativeFuncPattern<math::LogOp>>(patterns.getContext(),
-                                                      "__spirv_ocl_native_log");
-  patterns.add<ConvertNativeFuncPattern<math::Log2Op>>(
-      patterns.getContext(), "__spirv_ocl_native_log2");
-  patterns.add<ConvertNativeFuncPattern<math::Log10Op>>(
-      patterns.getContext(), "__spirv_ocl_native_log10");
-  patterns.add<ConvertNativeFuncPattern<math::PowFOp>>(
-      patterns.getContext(), "__spirv_ocl_native_powr");
-  patterns.add<ConvertNativeFuncPattern<math::RsqrtOp>>(
-      patterns.getContext(), "__spirv_ocl_native_rsqrt");
-  patterns.add<ConvertNativeFuncPattern<math::SinOp>>(patterns.getContext(),
-                                                      "__spirv_ocl_native_sin");
-  patterns.add<ConvertNativeFuncPattern<math::SqrtOp>>(
-      patterns.getContext(), "__spirv_ocl_native_sqrt");
-  patterns.add<ConvertNativeFuncPattern<math::TanOp>>(patterns.getContext(),
-                                                      "__spirv_ocl_native_tan");
-  if (convertArith)
-    patterns.add<ConvertNativeFuncPattern<arith::DivFOp>>(
-        patterns.getContext(), "__spirv_ocl_native_divide");
-}
-
-namespace {
-struct ConvertMathToXeVMPass
-    : public impl::ConvertMathToXeVMBase<ConvertMathToXeVMPass> {
-  using Base::Base;
-  void runOnOperation() override;
-};
-} // namespace
-
-void ConvertMathToXeVMPass::runOnOperation() {
-  RewritePatternSet patterns(&getContext());
-  populateMathToXeVMConversionPatterns(patterns, convertArith);
-  ConversionTarget target(getContext());
-  target.addLegalDialect<BuiltinDialect, LLVM::LLVMDialect>();
-  if (failed(
-          applyPartialConversion(getOperation(), target, std::move(patterns))))
-    signalPassFailure();
-}
diff --git a/mlir/test/Conversion/MathToXeVM/math-to-xevm.mlir b/mlir/test/Conversion/MathToXeVM/math-to-xevm.mlir
deleted file mode 100644
index d76627bb4201c..0000000000000
--- a/mlir/test/Conversion/MathToXeVM/math-to-xevm.mlir
+++ /dev/null
@@ -1,155 +0,0 @@
-// RUN: mlir-opt %s -convert-math-to-xevm \
-// RUN:   | FileCheck %s -check-prefixes='CHECK,CHECK-ARITH' 
-// RUN: mlir-opt %s -convert-math-to-xevm='convert-arith=false' \
-// RUN:   | FileCheck %s -check-prefixes='CHECK,CHECK-NO-ARITH'
-
-module @test_module {
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDh(f16) -> f16
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expf(f32) -> f32
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expd(f64) -> f64
-  //
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv2_d(vector<2xf64>) -> vector<2xf64>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv3_d(vector<3xf64>) -> vector<3xf64>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv4_d(vector<4xf64>) -> vector<4xf64>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv8_d(vector<8xf64>) -> vector<8xf64>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv16_d(vector<16xf64>) -> vector<16xf64>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv16_f(vector<16xf32>) -> vector<16xf32>
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_expDv4_Dh(vector<4xf16>) -> vector<4xf16>
-  //
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_cosDh(f16) -> f16
-  // CHECK-DAG: llvm.func @_Z23__spirv_ocl_native_exp2f(f32) -> f32
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_logDh(f16) -> f16
-  // CHECK-DAG: llvm.func @_Z23__spirv_ocl_native_log2f(f32) -> f32
-  // CHECK-DAG: llvm.func @_Z24__spirv_ocl_native_log10d(f64) -> f64
-  // CHECK-DAG: llvm.func @_Z23__spirv_ocl_native_powrDhDh(f16, f16) -> f16
-  // CHECK-DAG: llvm.func @_Z24__spirv_ocl_native_rsqrtd(f64) -> f64
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_sinDh(f16) -> f16
-  // CHECK-DAG: llvm.func @_Z23__spirv_ocl_native_sqrtf(f32) -> f32
-  // CHECK-DAG: llvm.func @_Z22__spirv_ocl_native_tand(f64) -> f64
-  // CHECK-ARITH-DAG: llvm.func @_Z25__spirv_ocl_native_divideff(f32, f32) -> f32
-
-  // CHECK-LABEL: func @math_ops
-  func.func @math_ops() {
-
-    %c1_f16 = arith.constant 1. : f16
-    %c1_f32 = arith.constant 1. : f32
-    %c1_f64 = arith.constant 1. : f64
-
-    // CHECK: math.exp
-    %exp_normal_f16 = math.exp %c1_f16 : f16
-    // CHECK: math.exp
-    %exp_normal_f32 = math.exp %c1_f32 : f32
-    // CHECK: math.exp
-    %exp_normal_f64 = math.exp %c1_f64 : f64
-
-    // Check float operations are converted properly:
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDh(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (f16) -> f16
-    %exp_fast_f16 = math.exp %c1_f16 fastmath<fast> : f16
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expf(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (f32) -> f32
-    %exp_fast_f32 = math.exp %c1_f32 fastmath<fast> : f32
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expd(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (f64) -> f64
-    %exp_fast_f64 = math.exp %c1_f64 fastmath<fast> : f64
-    
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDh(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f16) -> f16
-    %exp_afn_f16 = math.exp %c1_f16 fastmath<afn> : f16
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expf(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f32) -> f32
-    %exp_afn_f32 = math.exp %c1_f32 fastmath<afn> : f32
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expd(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f64) -> f64
-    %exp_afn_f64 = math.exp %c1_f64 fastmath<afn> : f64
-
-    // CHECK: math.exp
-    %exp_none_f16 = math.exp %c1_f16 fastmath<none> : f16
-    // CHECK: math.exp
-    %exp_none_f32 = math.exp %c1_f32 fastmath<none> : f32
-    // CHECK: math.exp
-    %exp_none_f64 = math.exp %c1_f64 fastmath<none> : f64
-
-    // Check vector operations:
-
-    %v2_c1_f64 = arith.constant dense<1.> : vector<2xf64>
-    %v3_c1_f64 = arith.constant dense<1.> : vector<3xf64>
-    %v4_c1_f64 = arith.constant dense<1.> : vector<4xf64>
-    %v8_c1_f64 = arith.constant dense<1.> : vector<8xf64>
-    %v16_c1_f64 = arith.constant dense<1.> : vector<16xf64>
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv2_d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (vector<2xf64>) -> vector<2xf64>
-    %exp_v2_f64 = math.exp %v2_c1_f64 fastmath<afn> : vector<2xf64>
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv3_d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (vector<3xf64>) -> vector<3xf64>
-    %exp_v3_f64 = math.exp %v3_c1_f64 fastmath<afn> : vector<3xf64>
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv4_d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (vector<4xf64>) -> vector<4xf64>
-    %exp_v4_f64 = math.exp %v4_c1_f64 fastmath<afn> : vector<4xf64>
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv8_d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (vector<8xf64>) -> vector<8xf64>
-    %exp_v8_f64 = math.exp %v8_c1_f64 fastmath<afn> : vector<8xf64>
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv16_d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (vector<16xf64>) -> vector<16xf64>
-    %exp_v16_f64 = math.exp %v16_c1_f64 fastmath<afn> : vector<16xf64>
-
-    %v16_c1_f32 = arith.constant dense<1.> : vector<16xf32>
-    %v4_c1_f16 = arith.constant dense<1.> : vector<4xf16>
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv16_f(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (vector<16xf32>) -> vector<16xf32>
-    %exp_v16_f32 = math.exp %v16_c1_f32 fastmath<fast> : vector<16xf32>
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDv4_Dh(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (vector<4xf16>) -> vector<4xf16>
-    %exp_v4_f16 = math.exp %v4_c1_f16 fastmath<fast> : vector<4xf16>
-
-    // Check unsupported vector sizes are not converted:
-
-    %v5_c1_f64 = arith.constant dense<1.> : vector<5xf64>
-    %v32_c1_f64 = arith.constant dense<1.> : vector<32xf64>
-
-    // CHECK: math.exp
-    %exp_v5_f64 = math.exp %v5_c1_f64 fastmath<afn> : vector<5xf64>
-    // CHECK: math.exp
-    %exp_v32_f64 = math.exp %v32_c1_f64 fastmath<afn> : vector<32xf64>
-
-    // Check fastmath flags propagate properly:
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expDh(%{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (f16) -> f16
-    %exp_fastmath_all_f16 = math.exp %c1_f16 fastmath<reassoc,nnan,ninf,nsz,arcp,contract,afn> : f16
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expf(%{{.*}}) {fastmathFlags = #llvm.fastmath<nnan, ninf, nsz, arcp, contract, afn>} : (f32) -> f32
-    %exp_fastmath_most_f32 = math.exp %c1_f32 fastmath<nnan,ninf,nsz,arcp,contract,afn> : f32
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_expf(%{{.*}}) {fastmathFlags = #llvm.fastmath<nnan, afn, reassoc>} : (f32) -> f32
-    %exp_afn_reassoc_nnan_f32 = math.exp %c1_f32 fastmath<afn,reassoc,nnan> : f32
-
-    // Check all other math operations:
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_cosDh(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f16) -> f16
-    %cos_afn_f16 = math.cos %c1_f16 fastmath<afn> : f16
-
-    // CHECK: llvm.call @_Z23__spirv_ocl_native_exp2f(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f32) -> f32
-    %exp2_afn_f32 = math.exp2 %c1_f32 fastmath<afn> : f32
-
-    // CHECK: llvm.call @_Z22__spirv_ocl_native_logDh(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f16) -> f16
-    %log_afn_f16 = math.log %c1_f16 fastmath<afn> : f16
-
-    // CHECK: llvm.call @_Z23__spirv_ocl_native_log2f(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f32) -> f32
-    %log2_afn_f32 = math.log2 %c1_f32 fastmath<afn> : f32
-
-    // CHECK: llvm.call @_Z24__spirv_ocl_native_log10d(%{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f64) -> f64
-    %log10_afn_f64 = math.log10 %c1_f64 fastmath<afn> : f64
-
-    // CHECK: llvm.call @_Z23__spirv_ocl_native_powrDhDh(%{{.*}}, %{{.*}}) {fastmathFlags = #llvm.fastmath<afn>} : (f16, f16) -> f16
-    %powr_afn_f16 = math.powf %c1_f16, %c1_f16 fastmath<afn>...
[truncated]

Copy link

⚠️ We detected that you are using a GitHub private e-mail address to contribute to the repo.
Please turn off Keep my email addresses private setting in your account.
See LLVM Developer Policy and LLVM Discourse for more information.

@Kewen12
Copy link
Contributor

Kewen12 commented Oct 10, 2025

Hi! can we land this revert to unblock the bots? Thanks!

@mshahneo mshahneo merged commit b92483c into main Oct 10, 2025
12 checks passed
@mshahneo mshahneo deleted the revert-159878-spirv-fastmath-nativeops branch October 10, 2025 22:06
@mshahneo
Copy link
Contributor Author

Hi! can we land this revert to unblock the bots? Thanks!

Landed the revert PR.

@joker-eph
Copy link
Collaborator

Please always mention the revert reasons in the PR description / commit messages.

@mshahneo
Copy link
Contributor Author

Please always mention the revert reasons in the PR description / commit messages.

Will do from now on. Thanks, @joker-eph .
It was missing a CMake dependency.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants