Remove the global __do_color_init, this is now obsolete. It was used
to force the terminal to be updated with the default colours because
the older colour code could not distinguish between default colours and
no colours. Now this is fixed so the forcing is no longer required.
[SLP][modularisation][NFC] Move full-vector width helpers to SLPTypeUtils (2/2)
Move the following BoUpSLP-independent helpers out of SLPVectorizer.cpp
into SLPVectorizer/SLPTypeUtils.{h,cpp}:
getFullVectorNumberOfElements
getFloorFullVectorNumberOfElements
getMaskedDivRemType
hasFullVectorsOrPowerOf2
They build on the type helpers moved in (1/2). Behavior is unchanged.
Part of the SLPVectorizer.cpp modularization effort:
https://discourse.llvm.org/t/modularizing-slpvectorizer-cpp/90922
[orc-rt] Use move_only_function in OptionParser (#220474)
Replace std::function with move_only_function in OptionParser.
move_only_function is preferred where possible to std::function, and we
didn't need these values to be copyable.
[LongVec] Add Support for pure HLSL APIs (#218155)
resolves https://github.com/llvm/llvm-project/issues/217716
The last pr only added them to clang builtins with the
"__builtin_elementwise" prefix. This adds the long vector support to the
ones written entirely in hlsl.
[SLP][modularisation][NFC] Move full-vector width helpers to SLPTypeUtils (2/2)
Move the following BoUpSLP-independent helpers out of SLPVectorizer.cpp
into SLPVectorizer/SLPTypeUtils.{h,cpp}:
getFullVectorNumberOfElements
getFloorFullVectorNumberOfElements
getMaskedDivRemType
hasFullVectorsOrPowerOf2
They build on the type helpers moved in (1/2). Behavior is unchanged.
Part of the SLPVectorizer.cpp modularization effort:
https://discourse.llvm.org/t/modularizing-slpvectorizer-cpp/90922
[SLP][modularisation][NFC] Move type/width helpers to SLPTypeUtils (1/2) (#214672)
Move the following BoUpSLP-independent type/width helpers out of
SLPVectorizer.cpp into a new SLPVectorizer/SLPTypeUtils.{h,cpp}:
isValidElementType
getValueType
getWidenedType
SLPReVec is passed as an explicit bool parameter to the moved helpers;
behavior is unchanged.
Part of the SLPVectorizer.cpp modularization effort:
https://discourse.llvm.org/t/modularizing-slpvectorizer-cpp/90922
[test][LoongArch][MC] Fix lifetime of MCOptions in LoongArchMCDisassemblerTest (#220453)
The original testbench added in #217971 contains a lifetime violation of
the stack-allocated `MCTargetOptions` object. Construct it in the
testing context instead to get a static lifetime. Now, the pattern is
consistent with
[X86MCDisassemblerTest.cpp](https://github.com/llvm/llvm-project/blob/ed1626b9d0eaf7c406f44da5fb595ad94559f54b/llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp#L29).
Fixes: #217971
CC: @fmayer, @heiher, @zhaoqi5, @SixWeining
DTLTO Cache optimization
Currently, DTLTO cache works this way: when native object file is
generated and sent back by the remote compilation, it's being saved on
the disk, then the content of this file is read and written into a
buffer and subsequently it's read from the buffer and written into the
cache file. This is obviously non-efficient.
With this optimization, after the native object file is saved on the
disk, it's being renamed into a cache file.
snd_uaudio: drop the default monitor level to 10%
As noted in the comment, some headsets with a hardware sidetone are
incredibly sensitive and emit immediate feedback upon attach with the
current system-wide default of 75%. Drop it down just for snd_uaudio(4)
to avoid incredibly unpleasant surprises.
MFC after: 3 days
Reviewed by: christos
Differential Revision: https://reviews.freebsd.org/D59199
rc: add a backlight service to save/restore backlight levels
The default on my laptop is annoyingly bright, and this is a useful
feature to mitigate that. The backlight script is largely a copy of the
mixer service which provides the same value for mixers, but this one is
specifically dependant on kld to allow DRM drivers a chance to attach.
Note that it's off by default to avoid interference with DEs, and
document the capability in backlight(8). Set backlight_enable=YES in
rc.conf(5) to enable save/restore.
Relnotes: maybe
Reviewed by: bapt, ivy, manu, ziaee
Differential Revision: https://reviews.freebsd.org/D59296
[SPARC] Fix SelectForceADDRrr for global addresses and non-reg operands (#220013)
When lowering byte-swapped memory operations on SPARC V9, LLVM emits
ASI-tagged memory instructions (such as STHArr, STArr, LDArr, etc.) that
require register+register addressing modes matched via ForceADDRrr.
SelectForceADDRrr previously forwarded 2-operand address nodes directly
to SelectADDRrr. However, SelectADDRrr explicitly returns false when
encountering SPISD::Lo (used in %hi/%lo global address calculations) or
small constant offsets in order to allow standard ADDRri patterns to
match. Because SelectForceADDRrr returned the result of SelectADDRrr
directly instead of falling back to Base = Addr, Disp = %g0, any
endian-adjusted load or store targeting a global variable failed to
select and caused a backend compiler crash:
"Cannot select: SPISD::STORE_LITTLE ..."
Fix SelectForceADDRrr so that if SelectADDRrr fails to match, it falls
back to evaluating the full address into a base register and using %g0
as the offset register. Also add tests for global variable byte-swapped
[5 lines not shown]
[orc-rt] Add skeleton command-line options parsing to ogre (#220467)
Just adds --help and --verbose options for now. The set can be extended
by adding fields to the Options struct and corresponding rules to the
parser.
[mlir][VectorToXeGPU] Un-flatten gather/scatter in convert-vector-to-xegpu (#218292)
XeGPU layouts (sg_layout, inst_data, lane_layout, ...) are expressed in
terms of the N-D shape of the accessed data. Frontends, however, often
emit vector.gather / vector.scatter with 1-D operands obtained by
shape_cast-ing N-D indices and masks. That forces layout propagation to
reason backwards through the surrounding shape_casts, which adds
complexity and tends to yield layouts that lower to unoptimized code.
This PR restores the N-D form of a flattened gather/scatter as a step in
the convert-vector-to-xegpu pass. The N-D shape is taken from the index
operand's producer, so the rewrite only ever undoes a flattening that
already happened.
assisted-by-claude
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply at anthropic.com>
[X86] Fix miscompilation in combinePMULH for types larger than 32 bits (#219996)
The combinePMULH DAG combine optimizes patterns like
trunc(lshr(mul(sext, sext), ShiftAmt) to i16) into X86 pmulhw
instructions followed by a right shift. Previously, this combine
unconditionally emitted a logical shift right to process the remainder
of the shift.
This is correct when the original multiplication type is 32 bits (as the
lshr naturally shifts in zeros from out-of-bounds bits). However, when
the multiplication type is larger than 32 bits, this results in a
miscompilation for negative products.
Fixes: https://github.com/llvm/llvm-project/issues/218844
[orc-rt] Remove redundant orc_rt:: qualifications. (#220465)
OptionParser is in the orc_rt namespace, so should shouldn't need
qualification for these.
[orc-rt] Rename CommandLineParser to OptionParser. (#220461)
"OptionParser" better describes what the class does: it parses a list of
option strings, which need not come from a command line (e.g. options
read from a config file, or constructed in a unit test).
[RISCV] Fix instruction combine of vwaddu.wv and vabd[u].vv (#220143)
The existing combination of `vwaddu.wv` and `vabd.vv/vabdu.vv` may
trigger a stack dump: The source operands of `vwaddu.wv` are not
commutative. Swapping these operands can generate an invalid `VWABDA_VL`
node and cause ISel to panic. This PR fixes the issue and only allows
the instruction with same `mask` and `vl` to be combined.
[ValueTracking][RISCV] Derive range and pow2 for vlenb CSR reads (#219924)
__riscv_vlenb() lowers to a read of the RISC-V vlenb CSR via
llvm.read_register("vlenb"), which returns VLEN/8. Teach
ValueTracking to recognize that read on a RISC-V target and reason
about its result:
* getRangeForIntrinsic() reports the value range of VLENB. RVV
requires VLEN to be a power of two in [32, 65536] (Zvl32b is
the smallest vector extension), so VLENB is in [4, 8192]
regardless of any attribute. This stays sound for Zvl32b,
whose VLEN (32) is not representable as an integer vscale
(VLEN / RVVBitsPerBlock). When the function carries a
vscale_range attribute the subtarget's VLEN is a multiple of
RVVBitsPerBlock (64), so VLENB = vscale * RVVBytesPerBlock
tightens the range.
* isKnownToBeAPowerOfTwo() reports that VLENB is a power of two.
This lets InstCombine fold vlenb comparisons such as
[11 lines not shown]
lang/babashka: Update to 1.13.220
Changes since 1.13.219:
1.13.220 (2026-08-31)
Read the release blog post:
https://blog.michielborkent.nl/babashka-ffi.html
FFI:
* Add experimental babashka.ffi
(https://github.com/babashka/ffi): call C functions in shared
libraries straight from babashka and JVM Clojure! See the guide:
https://github.com/babashka/ffi/blob/main/doc/guide.md
* Linux: dynamic binaries require glibc 2.28. The install script
selects the static binary on older systems
* On Linux, the install script installs the dynamic binary by
default. It installs the static binary on musl systems and on
[86 lines not shown]