[RISCV] Merge decodeUImmOperand and decodeUImmOperandGE. NFC (#223925)
Add the LowerBound template argument to decodeUImmOperand with a default
value of 0.
Similar for decodeUImmPlus1Operand and decodeUImmPlus1OperandGE, but
default the LowerBound to 1.
[RISCV] Add hasCompleteDecoder to sspopchk, sspush, and ssrdp operands. (#223847)
This allows them to disassemble as mop.r.28 or mop.rr.7 when the
operands are not valid for the Zicfiss mnemonic.
Assisted-by: Claude
clang: Do not overwrite a module's DataLayout in the backend (#224012)
emitAssembly() unconditionally reset the module's DataLayout from
TargetMachine::createDataLayout(). The TargetMachine's DataLayout is
unreliable given the existence of the "target-abi" module flag, so it
should not be used.
For -x ir input modules this would discard the correct datalayout in
favor of a possibly wrong one.
The post-codegen consistency check compared the module's DataLayout
against clang's frontend getDataLayoutString(), which likewise ignores the
target-abi flag. Recompute the expected layout from the module's own ABI via
Triple::computeDataLayout(getTargetABIName(M)) so the check stays
meaningful without assuming the DataLayout is a fixed property of the target
options. This still detects frontend/LLVM DataLayout drift for generated modules.
PR44896.ll and asan-unified-lto.ll declared x86_64 modules but ran without an
explicit triple, relying on the old overwrite to convert them to the default target.
[2 lines not shown]
AMDGPU: Separate getCoExecInfo opcode classification (#220329)
Extract WMMA opcode classification from getCoExecInfo into a dedicated
helper. Also track functional unit occupancy separately from the
co-execution window.
[PAC][ELF] Support R_AARCH64_AUTH_TLSDESC_CALL relocation
The R_AARCH64_AUTH_TLSDESC_CALL is introduced to allow linker relaxation of
AUTH TLSDESC call sequences for non-preemptible undefined weak symbols.
The lld patch introducing the relaxation: #194636
Corresponding ARM docs PR: https://github.com/ARM-software/abi-aa/pull/395
[LLVMAABI][AARCH64] Handle homogeneous aggregate return types (#218799)
This change implements the IsHomogenousAggregate() function, which is
shared across targets, and uses it to implement direct passthrough of
return values that meet the homogeneous aggregate criteria.
I'm also adding a new AArch64ABIOptions object that will be used to
track various conditions that are derived from target settings and must
be accounted for in the ABI handling. This change adds only two options,
IsILP32 and IsMicrosoftCXXABI. Other options are expected and will be
added as they are needed.
This change also revises the not-yet-implemented cases, having them
return Ignore rather than Direct so that they fail in more obvious ways.
This was necessary in order to be able to distinguish a return type that
was classified as Direct because it was a homogeneous aggregate from one
that was classified as Direct because it was an unhandled type.
Assisted-by: Cursor / various models
[flang][FIRToMemRef] Treat heap-pointer allocas as static, not as dynamic arrays (#223821)
Whole-array assignment of an allocatable inside !$acc kernels with
-Mstack_arrays aborted on !fir.ref<!fir.heap<!fir.array<?xf32>>>. A
fir.alloca !fir.heap<array> is a local heap pointer, but it was
unwrapped and handled as a dynamic array. The memref converter then
peeled only the outer ref and asserted because !fir.heap is not a memref
element.
Keep the pointer as a static allocation. Make convertibleMemrefType use
the same one-pointer peel as convertMemrefType so a nested pointer is
not treated as an f32 array.
[lldb-dap][test] Only check compile units from stack frames for main.c (#223450)
The `test_stack_frame_compile_unit_id` test case added in #222512 checks
that compileUnitId in a stack frame points to the source file. However,
it does so by checking there is only one unique compileUnitId in the
whole stack trace. This may not be true if start.S is included as a
compile unit.
Relax the check by only looking for stack frames that point to main.c.
Also check the other way, i.e. ensure the same compile unit id isn't
referenced by a stack frame that doesn't point to main.c. This way the
test retains its stated goal of making sure the compile unit id resolves
to its source file while also allowing start.S from a different compile
unit to be present.
[libc++] Fix query benchmarks for associative containers (#216065)
We were calling get_key and the random number generator in the hot loop.
Instead, create a pool of keys to draw from in the initial setup phase,
and then query these keys in a round-robin fashion.
[libc++] Return a const reference from get_key in benchmarks (#216088)
It was unnecessary to create a temporary string, and in fact it would
have a negative impact on some benchmarks like `erase(key) (existent)`
which called get_key in the hot loop.
[libc++] Reword confusing warning message about AppleClang version (#222380)
AppleClang 26.4 is not a thing -- it's AppleClang 21.0 that shipped with
Xcode 26.4.
[SandboxVec][LoadStoreVec] Vectorize load seed chains (#215944)
LoadStoreVec previously only vectorized store bundles. SeedCollection
already emits homogeneous store and load slices separately, so
runOnRegion() now dispatches on the seed kind and calls
vectorizeStores()
or vectorizeLoads() accordingly.
Add vectorizeLoads() to combine consecutive load chains into a single
vector load, unpack for remaining uses, and clean up dead scalar loads
and pointer operands.
Add load_store_vec_load_seeds.ll covering load-only seeds (no uses,
single use, general uses, vector-typed loads, and mixed-type cases), and
extend load_store_vec.ll with a trivial load-then-store case.
[libc++][pstl] Use libdispatch on Apple platforms by default (#223240)
Currently the default on Apple platforms is "std_thread", which is a
serial dummy.
To enable automatic benchmarking of PSTL, set the backend to
"libdispatch" by default, so it doesn't require specific overrides in
`libcxx/utils/ci/lnt/cmake`.
As a drive-by, fixes some of the minor issues with this backend that
surfaced once more pipelines started using it.
AMDGPU/GlobalISel: RegBankLegalize rules for s_bitreplicate (#189138)
Add uniform and divergent rules for s_bitreplicate intrinsic.
Assisted-By: Claude