https://github.com/rohitaggarwal007 updated 
https://github.com/llvm/llvm-project/pull/140544

>From 4769d05876f3d7f4a335c10e51fb20e3c923e270 Mon Sep 17 00:00:00 2001
From: Rohit Aggarwal <rohit.aggar...@amd.com>
Date: Mon, 19 May 2025 19:25:52 +0530
Subject: [PATCH 1/2] [Clang][Flang][Driver] Fix target parsing for
 -fveclib=AMDLIBM option

---
 clang/lib/Driver/ToolChains/Clang.cpp      |  2 +-
 clang/lib/Driver/ToolChains/CommonArgs.cpp |  1 +
 clang/test/Driver/fveclib.c                | 10 ++++++++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index a08bdba99bfe0..4aefdb24af17b 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -5844,7 +5844,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction 
&JA,
           Triple.getArch() != llvm::Triple::x86_64)
         D.Diag(diag::err_drv_unsupported_opt_for_target)
             << Name << Triple.getArchName();
-    } else if (Name == "libmvec") {
+    } else if (Name == "libmvec" || Name == "AMDLIBM") {
       if (Triple.getArch() != llvm::Triple::x86 &&
           Triple.getArch() != llvm::Triple::x86_64)
         D.Diag(diag::err_drv_unsupported_opt_for_target)
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp 
b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 5c1bc090810a2..c499b7266a553 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -935,6 +935,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const 
ArgList &Args,
         llvm::StringSwitch<std::optional<StringRef>>(ArgVecLib->getValue())
             .Case("Accelerate", "Accelerate")
             .Case("libmvec", "LIBMVEC")
+            .Case("AMDLIBM", "AMDLIBM")
             .Case("MASSV", "MASSV")
             .Case("SVML", "SVML")
             .Case("SLEEF", "sleefgnuabi")
diff --git a/clang/test/Driver/fveclib.c b/clang/test/Driver/fveclib.c
index 1235d08a3e139..5420555c36a2a 100644
--- a/clang/test/Driver/fveclib.c
+++ b/clang/test/Driver/fveclib.c
@@ -1,6 +1,7 @@
 // RUN: %clang -### -c -fveclib=none %s 2>&1 | FileCheck 
--check-prefix=CHECK-NOLIB %s
 // RUN: %clang -### -c -fveclib=Accelerate %s 2>&1 | FileCheck 
--check-prefix=CHECK-ACCELERATE %s
 // RUN: %clang -### -c --target=x86_64-unknown-linux-gnu -fveclib=libmvec %s 
2>&1 | FileCheck --check-prefix=CHECK-libmvec %s
+// RUN: %clang -### -c --target=x86_64-unknown-linux-gnu -fveclib=AMDLIBM %s 
2>&1 | FileCheck --check-prefix=CHECK-AMDLIBM %s
 // RUN: %clang -### -c -fveclib=MASSV %s 2>&1 | FileCheck 
--check-prefix=CHECK-MASSV %s
 // RUN: %clang -### -c -fveclib=Darwin_libsystem_m %s 2>&1 | FileCheck 
--check-prefix=CHECK-DARWIN_LIBSYSTEM_M %s
 // RUN: %clang -### -c --target=aarch64 -fveclib=SLEEF %s 2>&1 | FileCheck 
--check-prefix=CHECK-SLEEF %s
@@ -11,6 +12,7 @@
 // CHECK-NOLIB: "-fveclib=none"
 // CHECK-ACCELERATE: "-fveclib=Accelerate"
 // CHECK-libmvec: "-fveclib=libmvec"
+// CHECK-AMDLIBM: "-fveclib=AMDLIBM"
 // CHECK-MASSV: "-fveclib=MASSV"
 // CHECK-DARWIN_LIBSYSTEM_M: "-fveclib=Darwin_libsystem_m"
 // CHECK-SLEEF: "-fveclib=SLEEF"
@@ -23,6 +25,7 @@
 // RUN: not %clang --target=x86 -c -fveclib=ArmPL %s 2>&1 | FileCheck 
--check-prefix=CHECK-ERROR %s
 // RUN: not %clang --target=aarch64 -c -fveclib=libmvec %s 2>&1 | FileCheck 
--check-prefix=CHECK-ERROR %s
 // RUN: not %clang --target=aarch64 -c -fveclib=SVML %s 2>&1 | FileCheck 
--check-prefix=CHECK-ERROR %s
+// RUN: not %clang --target=aarch64 -c -fveclib=AMDLIBM %s 2>&1 | FileCheck 
--check-prefix=CHECK-ERROR %s
 // CHECK-ERROR: unsupported option {{.*}} for target
 
 // RUN: %clang -fveclib=Accelerate %s -target arm64-apple-ios8.0.0 -### 2>&1 | 
FileCheck --check-prefix=CHECK-LINK %s
@@ -40,6 +43,9 @@
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=libmvec -flto 
%s 2>&1 | FileCheck --check-prefix=CHECK-LTO-LIBMVEC %s
 // CHECK-LTO-LIBMVEC: "-plugin-opt=-vector-library=LIBMVEC"
 
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=AMDLIBM -flto 
%s 2>&1 | FileCheck --check-prefix=CHECK-LTO-AMDLIBM %s
+// CHECK-LTO-AMDLIBM: "-plugin-opt=-vector-library=AMDLIBM"
+
 // RUN: %clang -### --target=powerpc64-unknown-linux-gnu -fveclib=MASSV -flto 
%s 2>&1 | FileCheck --check-prefix=CHECK-LTO-MASSV %s
 // CHECK-LTO-MASSV: "-plugin-opt=-vector-library=MASSV"
 
@@ -62,6 +68,10 @@
 // CHECK-ERRNO-LIBMVEC: "-fveclib=libmvec"
 // CHECK-ERRNO-LIBMVEC-SAME: "-fmath-errno"
 
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=AMDLIBM %s 2>&1 
| FileCheck --check-prefix=CHECK-ERRNO-AMDLIBM %s
+// CHECK-ERRNO-AMDLIBM: "-fveclib=AMDLIBM"
+// CHECK-ERRNO-AMDLIBM-SAME: "-fmath-errno"
+
 // RUN: %clang -### --target=powerpc64-unknown-linux-gnu -fveclib=MASSV %s 
2>&1 | FileCheck --check-prefix=CHECK-ERRNO-MASSV %s
 // CHECK-ERRNO-MASSV: "-fveclib=MASSV"
 // CHECK-ERRNO-MASSV-SAME: "-fmath-errno"

>From 4505686899f24686aca32dfd53bd79e2908e185a Mon Sep 17 00:00:00 2001
From: Rohit Aggarwal <rohit.aggar...@amd.com>
Date: Mon, 19 May 2025 23:30:52 +0530
Subject: [PATCH 2/2] Update -fveclib=AMDLIBM in flang

---
 clang/lib/Driver/ToolChains/Flang.cpp     | 2 +-
 flang/lib/Frontend/CompilerInvocation.cpp | 1 +
 flang/test/Driver/fveclib.f90             | 3 +++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Flang.cpp 
b/clang/lib/Driver/ToolChains/Flang.cpp
index b1ca747e68b89..0bd8d0c85e50a 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -484,7 +484,7 @@ void Flang::addTargetOptions(const ArgList &Args,
           Triple.getArch() != llvm::Triple::x86_64)
         D.Diag(diag::err_drv_unsupported_opt_for_target)
             << Name << Triple.getArchName();
-    } else if (Name == "libmvec") {
+    } else if (Name == "libmvec" || Name == "AMDLIBM") {
       if (Triple.getArch() != llvm::Triple::x86 &&
           Triple.getArch() != llvm::Triple::x86_64)
         D.Diag(diag::err_drv_unsupported_opt_for_target)
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp 
b/flang/lib/Frontend/CompilerInvocation.cpp
index 238079a09ef3a..a5df5b02fcf9f 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -196,6 +196,7 @@ static bool 
parseVectorLibArg(Fortran::frontend::CodeGenOptions &opts,
       llvm::StringSwitch<std::optional<VectorLibrary>>(arg->getValue())
           .Case("Accelerate", VectorLibrary::Accelerate)
           .Case("libmvec", VectorLibrary::LIBMVEC)
+          .Case("AMDLIBM", VectorLibrary::AMDLIBM)
           .Case("MASSV", VectorLibrary::MASSV)
           .Case("SVML", VectorLibrary::SVML)
           .Case("SLEEF", VectorLibrary::SLEEF)
diff --git a/flang/test/Driver/fveclib.f90 b/flang/test/Driver/fveclib.f90
index 1b536b8ad0f18..6cb9361f7b778 100644
--- a/flang/test/Driver/fveclib.f90
+++ b/flang/test/Driver/fveclib.f90
@@ -1,6 +1,7 @@
 ! RUN: %flang -### -c -fveclib=none %s 2>&1 | FileCheck -check-prefix 
CHECK-NOLIB %s
 ! RUN: %flang -### -c -fveclib=Accelerate %s 2>&1 | FileCheck -check-prefix 
CHECK-ACCELERATE %s
 ! RUN: %flang -### -c --target=x86_64-unknown-linux-gnu -fveclib=libmvec %s 
2>&1 | FileCheck -check-prefix CHECK-libmvec %s
+! RUN: %flang -### -c --target=x86_64-unknown-linux-gnu -fveclib=AMDLIBM %s 
2>&1 | FileCheck -check-prefix CHECK-AMDLIBM %s
 ! RUN: %flang -### -c -fveclib=MASSV %s 2>&1 | FileCheck -check-prefix 
CHECK-MASSV %s
 ! RUN: %flang -### -c -fveclib=Darwin_libsystem_m %s 2>&1 | FileCheck 
-check-prefix CHECK-DARWIN_LIBSYSTEM_M %s
 ! RUN: %flang -### -c --target=aarch64-none-none -fveclib=SLEEF %s 2>&1 | 
FileCheck -check-prefix CHECK-SLEEF %s
@@ -11,6 +12,7 @@
 ! CHECK-NOLIB: "-fveclib=none"
 ! CHECK-ACCELERATE: "-fveclib=Accelerate"
 ! CHECK-libmvec: "-fveclib=libmvec"
+! CHECK-AMDLIBM: "-fveclib=AMDLIBM"
 ! CHECK-MASSV: "-fveclib=MASSV"
 ! CHECK-DARWIN_LIBSYSTEM_M: "-fveclib=Darwin_libsystem_m"
 ! CHECK-SLEEF: "-fveclib=SLEEF"
@@ -22,6 +24,7 @@
 ! RUN: not %flang --target=x86-none-none -c -fveclib=SLEEF %s 2>&1 | FileCheck 
-check-prefix CHECK-ERROR %s
 ! RUN: not %flang --target=x86-none-none -c -fveclib=ArmPL %s 2>&1 | FileCheck 
-check-prefix CHECK-ERROR %s
 ! RUN: not %flang --target=aarch64-none-none -c -fveclib=libmvec %s 2>&1 | 
FileCheck -check-prefix CHECK-ERROR %s
+! RUN: not %flang --target=aarch64-none-none -c -fveclib=AMDLIBM %s 2>&1 | 
FileCheck -check-prefix CHECK-ERROR %s
 ! RUN: not %flang --target=aarch64-none-none -c -fveclib=SVML %s 2>&1 | 
FileCheck -check-prefix CHECK-ERROR %s
 ! CHECK-ERROR: unsupported option {{.*}} for target
 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to