devel/llvm18: misc improvements
Fix worse runtime performance on Zen CPU when optimizing for Zen. [0] Install all standard heaaders with clang. Historically we've been unable to build FreeBSD with the full set due to conflicts and/or missing features between the compiler provided headers and FreeBSD's headers. I've verified that I can build world and kernel on the main, stable/14, and stable/13 branches for amd64 so let's give it another try in broader testing. [1] PR: 278908 [0], 274542 [1]
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
PORTNAME= llvm
|
||||
DISTVERSION= 18.1.6
|
||||
PORTREVISION= 0
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= devel lang
|
||||
MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \
|
||||
https://${PRE_}releases.llvm.org/${LLVM_RELEASE}${RCDIR}/
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
--- clang/lib/Headers/CMakeLists.txt.orig
|
||||
+++ clang/lib/Headers/CMakeLists.txt
|
||||
@@ -6,34 +6,9 @@
|
||||
float.h
|
||||
inttypes.h
|
||||
iso646.h
|
||||
- limits.h
|
||||
module.modulemap
|
||||
- stdalign.h
|
||||
- stdarg.h
|
||||
- __stdarg___gnuc_va_list.h
|
||||
- __stdarg___va_copy.h
|
||||
- __stdarg_va_arg.h
|
||||
- __stdarg_va_copy.h
|
||||
- __stdarg_va_list.h
|
||||
- stdatomic.h
|
||||
- stdbool.h
|
||||
- stdckdint.h
|
||||
- stddef.h
|
||||
- __stddef_max_align_t.h
|
||||
- __stddef_null.h
|
||||
- __stddef_nullptr_t.h
|
||||
- __stddef_offsetof.h
|
||||
- __stddef_ptrdiff_t.h
|
||||
- __stddef_rsize_t.h
|
||||
- __stddef_size_t.h
|
||||
- __stddef_unreachable.h
|
||||
- __stddef_wchar_t.h
|
||||
- __stddef_wint_t.h
|
||||
- stdint.h
|
||||
- stdnoreturn.h
|
||||
tgmath.h
|
||||
unwind.h
|
||||
- varargs.h
|
||||
)
|
||||
|
||||
set(arm_common_files
|
||||
83
devel/llvm18/files/patch-freebsd-cadd2ca21765
Normal file
83
devel/llvm18/files/patch-freebsd-cadd2ca21765
Normal file
@@ -0,0 +1,83 @@
|
||||
commit cadd2ca21765ebcb95b77ec94977b4e74e1edc1b
|
||||
Author: Dimitry Andric <dim@FreeBSD.org>
|
||||
Date: Sat May 25 19:52:15 2024 +0200
|
||||
|
||||
Merge commit d0be944aa511 from llvm-project (by Simon Pilgrim):
|
||||
|
||||
[X86] Add slow div64 tuning flag to Nehalem target (#91129)
|
||||
|
||||
This appears to have been missed because later cpus don't inherit from Nehalem tuning much.
|
||||
|
||||
Noticed while cleaning up for #90985
|
||||
|
||||
Merge commit 8b400de79eff from llvm-project (by Simon Pilgrim):
|
||||
|
||||
[X86] Enable TuningSlowDivide64 on Barcelona/Bobcat/Bulldozer/Ryzen Families (#91277)
|
||||
|
||||
Despite most AMD cpus having a lower latency for i64 divisions that converge early, we are still better off testing for values representable as i32 and performing a i32 division if possible.
|
||||
|
||||
All AMD cpus appear to have been missed when we added the "idivq-to-divl" attribute - this patch now matches Intel cpu behaviour (and the x86-64/v2/3/4 levels).
|
||||
|
||||
Unfortunately the difference in code scheduling means I've had to stop using the update_llc_test_checks script and just use old-fashioned CHECK-DAG checks for divl/divq pairs.
|
||||
|
||||
Fixes #90985
|
||||
|
||||
This fixes possibly worse runtime performance on AMD Zen hardware, when
|
||||
using -march=znver4 (or any other znver), as opposed to -march=x86-64-v4
|
||||
or the baseline -march=x86-64. A similar fix is applied for Nehalem.
|
||||
|
||||
PR: 278908
|
||||
MFC after: 3 days
|
||||
|
||||
diff --git llvm/lib/Target/X86/X86.td llvm/lib/Target/X86/X86.td
|
||||
index e89ddcc570c9..1aff5f9fad97 100644
|
||||
--- llvm/lib/Target/X86/X86.td
|
||||
+++ llvm/lib/Target/X86/X86.td
|
||||
@@ -867,6 +867,7 @@ def ProcessorFeatures {
|
||||
// Nehalem
|
||||
list<SubtargetFeature> NHMFeatures = X86_64V2Features;
|
||||
list<SubtargetFeature> NHMTuning = [TuningMacroFusion,
|
||||
+ TuningSlowDivide64,
|
||||
TuningInsertVZEROUPPER,
|
||||
TuningNoDomainDelayMov];
|
||||
|
||||
@@ -1336,6 +1337,7 @@ def ProcessorFeatures {
|
||||
FeatureCMOV,
|
||||
FeatureX86_64];
|
||||
list<SubtargetFeature> BarcelonaTuning = [TuningFastScalarShiftMasks,
|
||||
+ TuningSlowDivide64,
|
||||
TuningSlowSHLD,
|
||||
TuningSBBDepBreaking,
|
||||
TuningInsertVZEROUPPER];
|
||||
@@ -1358,6 +1360,7 @@ def ProcessorFeatures {
|
||||
list<SubtargetFeature> BtVer1Tuning = [TuningFast15ByteNOP,
|
||||
TuningFastScalarShiftMasks,
|
||||
TuningFastVectorShiftMasks,
|
||||
+ TuningSlowDivide64,
|
||||
TuningSlowSHLD,
|
||||
TuningSBBDepBreaking,
|
||||
TuningInsertVZEROUPPER];
|
||||
@@ -1380,6 +1383,7 @@ def ProcessorFeatures {
|
||||
TuningFastVectorShiftMasks,
|
||||
TuningFastMOVBE,
|
||||
TuningSBBDepBreaking,
|
||||
+ TuningSlowDivide64,
|
||||
TuningSlowSHLD];
|
||||
list<SubtargetFeature> BtVer2Features =
|
||||
!listconcat(BtVer1Features, BtVer2AdditionalFeatures);
|
||||
@@ -1404,6 +1408,7 @@ def ProcessorFeatures {
|
||||
FeatureLWP,
|
||||
FeatureLAHFSAHF64];
|
||||
list<SubtargetFeature> BdVer1Tuning = [TuningSlowSHLD,
|
||||
+ TuningSlowDivide64,
|
||||
TuningFast11ByteNOP,
|
||||
TuningFastScalarShiftMasks,
|
||||
TuningBranchFusion,
|
||||
@@ -1483,6 +1488,7 @@ def ProcessorFeatures {
|
||||
TuningFastScalarShiftMasks,
|
||||
TuningFastVariablePerLaneShuffle,
|
||||
TuningFastMOVBE,
|
||||
+ TuningSlowDivide64,
|
||||
TuningSlowSHLD,
|
||||
TuningSBBDepBreaking,
|
||||
TuningInsertVZEROUPPER,
|
||||
@@ -5917,6 +5917,21 @@ llvm%%LLVM_SUFFIX%%/include/llvm/XRay/YAMLXRayRecord.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__clang_hip_math.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__clang_hip_runtime_wrapper.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__clang_hip_stdlib.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stdarg___gnuc_va_list.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stdarg___va_copy.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stdarg_va_arg.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stdarg_va_copy.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stdarg_va_list.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_max_align_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_null.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_nullptr_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_offsetof.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_ptrdiff_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_rsize_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_size_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_unreachable.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_wchar_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__stddef_wint_t.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__wmmintrin_aes.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/__wmmintrin_pclmul.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/adcintrin.h
|
||||
@@ -6010,6 +6025,7 @@ llvm%%LLVM_SUFFIX%%/include/llvm/XRay/YAMLXRayRecord.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/keylockerintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/larchintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/lasxintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/limits.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/llvm_libc_wrappers/assert.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/llvm_libc_wrappers/ctype.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/llvm_libc_wrappers/inttypes.h
|
||||
@@ -6096,6 +6112,14 @@ llvm%%LLVM_SUFFIX%%/include/llvm/XRay/YAMLXRayRecord.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/sm3intrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/sm4intrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/smmintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdalign.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdarg.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdatomic.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdbool.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdckdint.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stddef.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdint.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/stdnoreturn.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/tbmintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/tgmath.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/tmmintrin.h
|
||||
@@ -6105,6 +6129,7 @@ llvm%%LLVM_SUFFIX%%/include/llvm/XRay/YAMLXRayRecord.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/usermsrintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/vadefs.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/vaesintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/varargs.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/vecintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/velintrin.h
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_MAJOR%%/include/velintrin_approx.h
|
||||
|
||||
Reference in New Issue
Block a user