AMDGPU: Handle more TargetParser queries in tablegen
Previously we had various enum switches. Start generated tables
indexed by enums. Avoid some special cases by defining the dummy
"generic" and "generic-hsa" targets as real processors.
Co-authored-by: Claude (Claude-Opus-4.8)
AMDGPU: Generate TargetParser table from TableGen
Migrate .def file to tablegen. The initial TargetParser
AMDGPU backend only handled R600. Extend to modern targets.
Stub out some tablegen definitions which will be used in future
changes.
Co-authored-by: Claude (Claude-Opus-4.8)
[RISCV] Add macro fusion support for the Xqci extension instructions (#209542)
Add macro fusion definitions for the Qualcomm Xqci extension covering
movimm-alu, movimm-mul, movimm-ldst, movimm-jump, movimm-longlogical,
movimm-mov, mov-mov, mov-longlogical fusions.
The fusion definitions live in a new RISCVMacroFusionXQCI.td which is
included from RISCVMacroFusion.td. A MIR test and the feature list test
are updated accordingly.
To accomodate additional features, increased MAX_SUBTARGET_FEATURES to
448 (from 384).
Signed-off-by: Pankaj Gode <pgode at qti.qualcomm.com>
[libc] Implement cpp::unique_ptr utility (#206701)
[libc] Implement cpp::unique_ptr utility
Implemented cpp::unique_ptr and cpp::default_delete in
libc/src/__support/CPP/unique_ptr.h for internal use within LLVM-libc.
* Added cpp::default_delete and its array specialization.
* Implemented cpp::unique_ptr with support for custom deleters and
array specialization.
* Applied LIBC_TRIVIAL_ABI to unique_ptr and LIBC_NO_UNIQUE_ADDRESS to
the
deleter to enable empty member optimization and register-passing ABI.
* Defined portable LIBC_NO_UNIQUE_ADDRESS and LIBC_TRIVIAL_ABI macros in
attributes.h.
* Included is_assignable.h in type_traits.h to support conversion
assignment constraints.
* Modernized template constraints using enable_if_t and
is_convertible_v.
[12 lines not shown]
[libc++] Require selecting a machine when dispatching the benchmark workflow (#212591)
This resolves a TODO to allow selecting which machine we're running on.
As I am working on automation to dispatch these benchmarking jobs, it
turns out that we always want to specify the machine, and we always want
to specify a single machine to run per workflow, since this is the only
way we can track which commits have been attempted (or are still in
flight) on a given machine.
Therefore, the ability to run benchmarks on all machines at once is
removed from this workflow (but not from the related PR A/B benchmarking
workflow).
This patch also includes the machine name and the commit being
benchmarked into the runs's name, which is necessary for automation to
know what the workflow was benchmarking.
[RISC-V] Do not emit cm.popret[z] with zicfiss (#196267)
When emitting shadow call stack protection instructions, the push/pop
optimization needs to be turned off because an sspopchk before a
cm.popret[z] is guaranteed to fail in a non-leaf function. In addition,
the sspopchk must be emitted after a cm.pop so that the ra has the
correct value when the check is performed.
Fixes: https://github.com/llvm/llvm-project/issues/196261
Co-authored-by: Nemanja Ivanovic <nemanja at synopsys.com>
AMDGPU: Remove some assembler tests using dummy target
In the future it will be illegal to do anything with a binary
without a specific subarch. Most of these were redundant with an
existing run line.
kern_pdwait(): print the process pointer through pd
to avoid using uninitialized value in the KASSERT() statement on the first
iteration.
Also, do the assert under the proctree_lock, which is not critical but
satisfies the invariants.
Noted and reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D58505
proc_realparent(): assert that an orphaned child has real parent != parent
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D58504
[clang-format] Fix OverEmptyLines aligning trailing comments across block boundaries (#208324)
Fix `AlignTrailingComments` with `OverEmptyLines` aligning trailing
comments across block boundaries (e.g., between two functions or
structs). The alignment sequence now breaks at block-type braces
(`BK_Block`).
This is an `OverEmptyLines` bug exposed by
bae9ddca423145baf0c35e31898b723aa273f85c (#206393).
Fixes https://github.com/llvm/llvm-project/issues/208266
(https://github.com/llvm/llvm-project/issues/208266).
Commit created with the help of kiro-cli.
Co-authored-by: Vladislav Aranov <vladislav.aranov at ericsson.com>
Triple: Add query for the default long double format (#211239)
The long double format changes the library call info, which needs
to be computed independently of codegen. Implement this based on the
clang target code.
---------
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
pmc: enable the new pmc commands
This change hooks everything up to the pmc command and improves the
usage to document all functions. There are a couple older commands that
are currently broken that I have hidden from the usage, but left in the
code for those using it. I won't remove those until we have our
replacements upstreamed that depend on the AMD PMC multiplexing patches.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57780
pmc: pmc info command
Prints the log header including machine, cpu and kernel details along
with what counters were selected.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57778
pmc: pmc frontend stall analysis based on IBS
The frontend command uses AMD IBS frontend events to analyze the major
sources of frontend stalls. It displays a table breakind down the major
causes of front end stalls. This is a simple demonstration of the tools
as you can use the filtering tools to limit the analysis to a subset of
the samples including filtering by fetch latencies.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57779
pmc: pmc record command
The record command is designed around the idea of predefined studies.
While you can still select individual counters, the predefined studies
are meant to enable the best hardware options for a given generation.
It implements all of the base studies that I have built so far.
Sponsored by: Netflix
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D57777
pmc: new pmc log processing framework
View is a class for building PMC log processing tools it is designed to
work with the new PMC record command that adds a header with additional
CPU information. The new framework processes PMC logs about 2.5 times
faster and in about half the code as libpmcstat.
Sponsored by: Netflix
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D57776
pmc: console configuration and table rendering for new PMC tools
Initializes the terminal rendering code used by the new pmc tools. Then
provides a table abstraction for collecting, sorting and rendering
tables. It provides pretty printed results with typed fields that print
several types used throughout the new PMC tools. By default the fields
are formatted in engineering notation.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57775