Skip to content

Commit c1e632b

Browse files
[LLVM][VecLib] Refactor LIBMVEC integration to be target neutral.
Renames LIBMVEC-X86 to LIBMVEC and updates TLI to only add the existing x86 specific mapping when targeting x86.
1 parent 5da6f3e commit c1e632b

File tree

10 files changed

+24
-18
lines changed

10 files changed

+24
-18
lines changed

clang/lib/Driver/ToolChains/CommonArgs.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
934934
std::optional<StringRef> OptVal =
935935
llvm::StringSwitch<std::optional<StringRef>>(ArgVecLib->getValue())
936936
.Case("Accelerate", "Accelerate")
937-
.Case("libmvec", "LIBMVEC-X86")
937+
.Case("libmvec", "LIBMVEC")
938938
.Case("MASSV", "MASSV")
939939
.Case("SVML", "SVML")
940940
.Case("SLEEF", "sleefgnuabi")

clang/test/Driver/fveclib.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
/* Verify that the correct vector library is passed to LTO flags. */
3939

4040
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=libmvec -flto %s 2>&1 | FileCheck --check-prefix=CHECK-LTO-LIBMVEC %s
41-
// CHECK-LTO-LIBMVEC: "-plugin-opt=-vector-library=LIBMVEC-X86"
41+
// CHECK-LTO-LIBMVEC: "-plugin-opt=-vector-library=LIBMVEC"
4242

4343
// RUN: %clang -### --target=powerpc64-unknown-linux-gnu -fveclib=MASSV -flto %s 2>&1 | FileCheck --check-prefix=CHECK-LTO-MASSV %s
4444
// CHECK-LTO-MASSV: "-plugin-opt=-vector-library=MASSV"

llvm/include/llvm/Analysis/TargetLibraryInfo.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class TargetLibraryInfoImpl {
127127
NoLibrary, // Don't use any vector library.
128128
Accelerate, // Use Accelerate framework.
129129
DarwinLibSystemM, // Use Darwin's libsystem_m.
130-
LIBMVEC_X86, // GLIBC Vector Math library.
130+
LIBMVEC, // GLIBC Vector Math library.
131131
MASSV, // IBM MASS vector library.
132132
SVML, // Intel short vector math library.
133133
SLEEFGNUABI, // SLEEF - SIMD Library for Evaluating Elementary Functions.

llvm/lib/Analysis/TargetLibraryInfo.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static cl::opt<TargetLibraryInfoImpl::VectorLibrary> ClVectorLibrary(
2929
"Accelerate framework"),
3030
clEnumValN(TargetLibraryInfoImpl::DarwinLibSystemM,
3131
"Darwin_libsystem_m", "Darwin libsystem_m"),
32-
clEnumValN(TargetLibraryInfoImpl::LIBMVEC_X86, "LIBMVEC-X86",
32+
clEnumValN(TargetLibraryInfoImpl::LIBMVEC, "LIBMVEC",
3333
"GLIBC Vector Math library"),
3434
clEnumValN(TargetLibraryInfoImpl::MASSV, "MASSV",
3535
"IBM MASS vector library"),
@@ -1360,8 +1360,15 @@ void TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib(
13601360
addVectorizableFunctions(VecFuncs_DarwinLibSystemM);
13611361
break;
13621362
}
1363-
case LIBMVEC_X86: {
1364-
addVectorizableFunctions(VecFuncs_LIBMVEC_X86);
1363+
case LIBMVEC: {
1364+
switch (TargetTriple.getArch()) {
1365+
default:
1366+
break;
1367+
case llvm::Triple::x86:
1368+
case llvm::Triple::x86_64:
1369+
addVectorizableFunctions(VecFuncs_LIBMVEC_X86);
1370+
break;
1371+
}
13651372
break;
13661373
}
13671374
case MASSV: {

llvm/lib/Frontend/Driver/CodeGenOptions.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple,
2323
TargetTriple);
2424
break;
2525
case VectorLibrary::LIBMVEC:
26-
TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC_X86,
26+
TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC,
2727
TargetTriple);
2828
break;
2929
case VectorLibrary::MASSV:

llvm/test/CodeGen/Generic/replace-intrinsics-with-veclib.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes
22
; RUN: opt -vector-library=SVML -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,SVML
33
; RUN: opt -vector-library=AMDLIBM -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,AMDLIBM
4-
; RUN: opt -vector-library=LIBMVEC-X86 -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,LIBMVEC-X86
4+
; RUN: opt -vector-library=LIBMVEC -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,LIBMVEC-X86
55
; RUN: opt -vector-library=MASSV -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,MASSV
66
; RUN: opt -vector-library=Accelerate -replace-with-veclib -S < %s | FileCheck %s --check-prefixes=COMMON,ACCELERATE
77

llvm/test/Transforms/LoopVectorize/X86/libm-vector-calls-VF2-VF8.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -vector-library=LIBMVEC-X86 -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
1+
; RUN: opt -vector-library=LIBMVEC -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
22

33
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
44
target triple = "x86_64-unknown-linux-gnu"

llvm/test/Transforms/LoopVectorize/X86/libm-vector-calls-finite.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -vector-library=LIBMVEC-X86 -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
1+
; RUN: opt -vector-library=LIBMVEC -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
22
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
33
target triple = "x86_64-unknown-linux-gnu"
44

llvm/test/Transforms/LoopVectorize/X86/libm-vector-calls.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -vector-library=LIBMVEC-X86 -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
1+
; RUN: opt -vector-library=LIBMVEC -passes=inject-tli-mappings,loop-vectorize -S < %s | FileCheck %s
22

33
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
44
target triple = "x86_64-unknown-linux-gnu"

llvm/test/Transforms/Util/add-TLI-mappings.ll

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
; RUN: opt -mtriple=x86_64-unknown-linux-gnu -vector-library=SVML -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,SVML
22
; RUN: opt -mtriple=x86_64-unknown-linux-gnu -vector-library=AMDLIBM -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,AMDLIBM
33
; RUN: opt -mtriple=powerpc64-unknown-linux-gnu -vector-library=MASSV -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,MASSV
4-
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -vector-library=LIBMVEC-X86 -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,LIBMVEC-AARCH64
5-
; RUN: opt -mtriple=x86_64-unknown-linux-gnu -vector-library=LIBMVEC-X86 -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,LIBMVEC-X86
4+
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -vector-library=LIBMVEC -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=LIBMVEC-AARCH64
5+
; RUN: opt -mtriple=x86_64-unknown-linux-gnu -vector-library=LIBMVEC -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,LIBMVEC-X86
66
; RUN: opt -mtriple=x86_64-unknown-linux-gnu -vector-library=Accelerate -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,ACCELERATE
77
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -vector-library=sleefgnuabi -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,SLEEFGNUABI
88
; RUN: opt -mtriple=riscv64-unknown-linux-gnu -vector-library=sleefgnuabi -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,SLEEFGNUABI_RISCV
99
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -vector-library=ArmPL -passes=inject-tli-mappings -S < %s | FileCheck %s --check-prefixes=COMMON,ARMPL
1010

11+
; LIBMVEC-AARCH64-NOT: llvm.compiler.used
12+
1113
; COMMON-LABEL: @llvm.compiler.used = appending global
1214
; SVML-SAME: [6 x ptr] [
1315
; SVML-SAME: ptr @__svml_sin2,
@@ -33,9 +35,6 @@
3335
; MASSV-SAME: ptr @__log10f4
3436
; ACCELERATE-SAME: [1 x ptr] [
3537
; ACCELERATE-SAME: ptr @vlog10f
36-
; LIBMVEC-AARCH64-SAME: [2 x ptr] [
37-
; LIBMVEC-AARCH64-SAME: ptr @_ZGVbN2v_sin,
38-
; LIBMVEC-AARCH64-SAME: ptr @_ZGVdN4v_sin
3938
; LIBMVEC-X86-SAME: [2 x ptr] [
4039
; LIBMVEC-X86-SAME: ptr @_ZGVbN2v_sin,
4140
; LIBMVEC-X86-SAME: ptr @_ZGVdN4v_sin
@@ -197,8 +196,8 @@ declare float @llvm.log10.f32(float) #0
197196
; MASSV: declare <2 x double> @__sind2(<2 x double>)
198197
; MASSV: declare <4 x float> @__log10f4(<4 x float>)
199198

200-
; LIBMVEC-AARCH64: declare <2 x double> @_ZGVbN2v_sin(<2 x double>)
201-
; LIBMVEC-AARCH64: declare <4 x double> @_ZGVdN4v_sin(<4 x double>)
199+
; LIBMVEC-AARCH64-NOT: declare <2 x double> @_ZGVbN2v_sin(<2 x double>)
200+
; LIBMVEC-AARCH64-NOT: declare <4 x double> @_ZGVdN4v_sin(<4 x double>)
202201

203202
; LIBMVEC-X86: declare <2 x double> @_ZGVbN2v_sin(<2 x double>)
204203
; LIBMVEC-X86: declare <4 x double> @_ZGVdN4v_sin(<4 x double>)

0 commit comments

Comments
 (0)