RuntimeLibcalls: Add signatures for atomic libcalls
Define type signatures in tablegen for the various atomic
library functions.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
galene: Install static files and use them by default
Galene server needs static files to run otherwise it will fail to
start.
Install them and also adjust the default for `-static' to automatically
pick them up.
[GlobalOpt] [NFC] Skip cold call analysis when no function can use coldcc (#227944)
OptimizeFunctions() starts by calling hasOnlyColdCalls() on every
function in the module to find functions whose callers are all cold.
That analysis needs BlockFrequencyInfo for each caller and can be
expensive on large modules.
The result is only used to switch functions to the cold calling
convention, which happens only if TargetTransformInfo::
useColdCCForColdCall() returns true for the function (or if
-enable-coldcc-stress-test is set). On targets where that hook never
returns true, the analysis is wasted work.
Add a cheap pre-scan that asks TTI whether any non-intrinsic function in
the module can use coldcc, and only run the hasOnlyColdCalls() loop if
one can, or if the stress-test flag is set. The pre-scan stops at the
first match.
This is a compile-time improvement only; there is no change in output.
[5 lines not shown]
[MLIR][XeVM] Set the required sub-group size on every kernel (#232844)
When serializing a gpu.module to SPIR-V, the XeVM target sets
intel_reqd_sub_group_size = 16 on the first kernel only: the walk stops
after the first kernel it finds. The other kernels of the module get no
required size, so the GPU compiler may pick a different sub-group size
for them, for example 32. Code that the XeGPU and XeVM lowering emits
assumes 16 lanes, so those kernels can compute wrong results.
Set the required sub-group size on every kernel of the module.
---------
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
misc/opencode: New port: AI coding agent for the terminal
OpenCode is an open-source, model-agnostic AI coding agent that runs in
the terminal. It combines a full-screen TUI and a scriptable CLI with
a client/server architecture, LSP awareness and multi-session support.
Tested on arm64 and amd64.
[flang][OpenMP] Don't treat different runtime conditions as subsets
When two METADIRECTIVE candidates have the same score and one selector is
a strict subset of the other, the superset wins. Flang ranks every
runtime condition with the same property, so isStrictSubset saw
different conditions as the same:
!$omp metadirective &
!$omp& when(user={condition(a)}, &
!$omp& implementation={vendor(score(4): llvm)}: taskyield) &
!$omp& when(user={condition(b)}, device={kind(host)}, &
!$omp& implementation={vendor(score(3): llvm)}: taskwait)
Both candidates score 5, and `b` was tested first, so TASKWAIT ran when
both conditions were true. Neither selector is a subset of the other, so
clause order should decide.
This patch adds a UserCondition key to VariantMatchInfo, and
isStrictSubset requires equal keys when the first selector has a
[14 lines not shown]
[lldb] Move register support out of ProcessUtility (#232969)
Create lldbRegister under lldb/Register and move register classes that
do not call OS-specific interface directly.
RuntimeLibcalls: Add the remaining vector libraries (#232770)
Add definitions for Accelerate, Darwin_libsystem_m, LIBMVEC, MASSV and
SVML, and fill out SLEEFGNUABI, ArmPL and AMDLIBM to match VecFuncs.def.
The struct-returning ArmPL modf and sincos variants need new _STRET
libcalls.
With the new implementations available, type-split vector math calls
can now be expanded, and the vectorizer keeps pow as an intrinsic for
codegen to lower to the library call.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[lldb][Fortran] Added support for base types to DWARFASTParserFortran, tests for DWARFASTParserFortran and a method to get the parser from TypeSystemFortran
TargetParser: Clean up data layout string construction (#232392)
Instead of building many small string fragments, use longer
concatenated literals. The mips case in particular was hard
to follow and had an unused enum value.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[Offload][omp] Load and resolve device binaries through liboffload (#231545)
Create a new abstraction (Program) that uses liboffload to load the
binary and do symbol resolution instead of calling the PluginInterface
directly. Remove from GenericPluginTy load_binary, get_global and
get_function.
Assisted by Claude.
---------
Co-authored-by: Kevin Sala Penades <kevinsala.ks at gmail.com>