[AMDGPU] Add a sched group mask for LDSDMA instructions
The existing VMEM masks are not fine-grained enough for some use cases. For
example, if users want to control async loads, using VMEM may cause the compiler
to pick instructions it shouldn't.
This PR adds a new sched group mask for LDSDMA instructions. It is a subclass of
VMEM, but only targets isLDSDMA instructions.
jail: tests: cosmetic-ish improvements
The new version of incrementing `jid` is a little cleaner and harder to
mess up, and also fix a nwlin omission while we're here.
These comments were dropped on D51502; ngie takes a co-author credit
so that they're not blamed for the commit message, but I can't claim
that I tweaked their suggestions.
Co-authored-by: ngie
[ELF] Handle INCLUDE like a call stack (#193427)
The lexer maintains a stack of buffers, which allows a construct
started in an INCLUDE'd file to be closed by the parent. This produces
spurious acceptance of malformed scripts (e.g. a bare assignment with
no trailing `;` in the include, terminated by the parent's `;` after
`INCLUDE`) and undefined-behavior span computations in
`readAssignment`'s `commandString` (issue #190376).
Force each INCLUDE to fully parse its own content, similar to a call
stack frame. `ScriptLexer::lex` no longer auto-pops on EOF; the
`buffers` member is gone. `readInclude` takes a `function_ref<void()>`
callback, and the four call sites (top-level, SECTIONS, output
section, MEMORY) pass a context-appropriate parser.
With this, each buffer contains complete parser structures by
construction, so the `[oldS, curTok)` pointer range in
`readAssignment` no longer needs a guard.
makeman: switch over to the .lua implementation
Nobody will test it as long as it's not tied into the top-level target,
and we don't really have a good reason not to cut over to it since it
does produce identical results. Switch over but do not remove the old
sh implementation yet, just in case.
Note that this replacement is driven by a significant speedup from how
the new version is designed: tha lua version actually tries to
parallelize its data collection efforts to speed up generation.
Reviewed by: imp (previous version), emaste
Differential Revision: https://reviews.freebsd.org/D56558
Re-factor the various m68k platforms' identifycpu() functions, and bring
some consistency to how the CPU/FPU/MMU/cache information is displayed.
Each platform now provides a machine_set_model() function that is called
from cpu_startup_common(). This function is respondible for calling
cpu_setmodel() with platform-specific model description. Then, common code
is responsible for printing the model information, along with the CPU
and cache info, but separately (and this is no longer included in the
hw.model sysctl node; at least it's now consistent!)
Some examples:
Qemu 10.1.2 Virt platform
MC68040+MMU+FPU, 4k+4k on-chip I/D caches
(hw.model == "Qemu 10.1.2 Virt platform")
Motorola MVME-147
MC68030 CPU+MMU @ 25MHz, MC68882 FPU
[43 lines not shown]
vendor/BINUTILS227: Accept character '+' in filename for AR/MRI scripts
This fixes the bug that AR/MRI scripts would reject any filenames with
a '+' character, which is not uncommon and is actually used by GCC's
libstdc++ source. To work around this limitation, we're renaming the
source files and libraries with '++' to replace '++' with 'xx'; see
gnu/lib/gcc120/libstdcxx/product/Makefile for details.
The official documentation [1] says:
> ‘+’ is used as a line continuation character; if ‘+’ appears at the
> end of a line, the text on the following line is considered part of
> the current command.
This bug fix is obtained from the upstream [2]. It landed in bintuils
between 2.38 (2022-02-09) and 2.39 (2022-08-05).
[1] https://sourceware.org/binutils/docs-2.27/binutils/ar-scripts.html#ar-scripts
[2] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=add0eb9d6e731e08a0bc2463d8c1f0acb02894a0
vendor/BINUTILS234: Accept character '+' in filename for AR/MRI scripts
This fixes the bug that AR/MRI scripts would reject any filenames with
a '+' character, which is not uncommon and is actually used by GCC's
libstdc++ source. To work around this limitation, we're renaming the
source files and libraries with '++' to replace '++' with 'xx'; see
gnu/lib/gcc120/libstdcxx/product/Makefile for details.
The official documentation [1] says:
> ‘+’ is used as a line continuation character; if ‘+’ appears at the
> end of a line, the text on the following line is considered part of
> the current command.
This bug fix is obtained from the upstream [2]. It landed in bintuils
between 2.38 (2022-02-09) and 2.39 (2022-08-05).
[1] https://sourceware.org/binutils/docs-2.34/binutils/ar-scripts.html#ar-scripts
[2] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=add0eb9d6e731e08a0bc2463d8c1f0acb02894a0
[flang] Disable copy-out to INTENT(IN) args (#192382)
Don't copy out to actual args that themselves happen to be INTENT(IN)
dummy args.
```
subroutine test(a)
real, intent(in) :: a(:)
call require_contiguous_arg(a(1:n:2)) ! copy-in only, no copy-out
end
```
---------
Co-authored-by: Claude Sonnet 4.6 <noreply at anthropic.com>
[X86] Improve FREEZE node elimination for SETCC operations (#192362)
This improves FREEZE node handling around SETCC and SETCC_CARRY
operations to enable better optimization, particularly for APX
CCMP/CTEST
pattern matching with fastmath comparisons.
Resolve https://github.com/llvm/llvm-project/issues/191716.
[lldb/test] Fix shared library symlinks for remote testing (#189177)
When running tests on a remote device, framework convenience symlinks
created by test Makefiles (e.g. `$(BUILDDIR)/Framework` pointing to
`$(BUILDDIR)/Framework.framework/Framework`) cause launch failures.
`Platform::Install` recreates these as symlinks on the remote device
pointing to host build paths that don't exist, resulting in "No such
file or directory" from dyld.
This patch changes `LN_SF` in Makefile.rules to strip the common
directory prefix from the symlink source using `patsubst` so it produces
relative symlinks instead of absolute ones.
It also resolve symlinks with `os.path.realpath()` in
`registerSharedLibrariesWithTarget` before registering modules so that
`Platform::Install` sees a regular file and transfers the actual binary
content.
[2 lines not shown]