[Clang][SYCL] Reject an unknown offload architecture on a SPIR-V target (#229249)
Diagnose an unknown `--offload-arch` on a SPIR-V target for SYCL.
Previously, with `--offload-targets=spirv64-unknown-unknown`, any
`--offload-arch` value was accepted, so a typo such as `xe-pcv` silently
created a job for a device that does not exist. For SYCL on a plain
SPIR-V target, `spirv32-unknown-unknown` or `spirv64-unknown-unknown`,
`--offload-arch` and `--no-offload-arch` must now name an Intel GPU or
CPU, an IGCA target or `generic`. Anything else is an error, as it
already is for CUDA and HIP, including a numeric name for a GPU that is
not listed, such as `xe_40.11.0`, and a name with target features, such
as `xe-pvc:foo`.
An Intel name or IGCA target is also an error on any other SPIR-V
target, e.g. "the target architecture 'igca_20ca' is not supported by
the target 'spirv64-amd-amdhsa'".
[ci] Collect profiles in the LLVM test-suite LNT runs on Linux (#237439)
Run the test-suite with `--use-perf all` on Linux, which collects
profiling data and submits it to LNT. Bump both machines since the
version of the test suite also changes.
Assisted by Claude
[InlineCost] Ask TTI whether unsimplified vector and bool binops are free (#233841)
visitBinaryOperator charged every unsimplified binary operator without
consulting TTI, unlike casts, GEPs and other instructions. Return
TCC_Free from TTI::getInstructionCost as visitCastInst does.
This is an amended reland of #232397 attempting to workaround the
compile-time hit that led to the revert #232907.
It is different in two ways. First, it is now restricted to binary
operators.
Compares are left out because very few compare are currently counted as
free,
yet this is where we started to spend the majority of the queries.
Second, for binops, we query TTI only about vector and boolean
operations as this is where the majority of high-impact free operations
is.
[mlir][Presburger] NFC: use eliminateVarUsingEquality in existing callers
Replace the eliminateFromConstraint helper with the new
IntMatrix::eliminateColumnUsingRow / IntegerRelation::eliminateVarUsingEquality
primitives in gaussianEliminateVars, gaussianEliminate and
removeRedundantLocalVars, and delete it. Add an overload of
eliminateVarUsingEquality that takes the index of one of the relation's
own equalities as the pivot and skips that row.
[mlir][Presburger] Add helpers for eliminating a variable using an equality
Add IntMatrix::eliminateColumnUsingRow, which eliminates a column from a
row using a pivot row with a positive multiplier on the row (a port of
ISL's isl_seq_elim), and IntegerRelation::eliminateVarUsingEquality,
which applies it to every equality and inequality of a relation (a port
of ISL's eliminate_var_using_equality).
Use them in reduceUsingEqualities in place of the file-local
eliminateColumnUsingEquality helper. These are intended as the shared
primitive behind the existing hand-rolled elimination loops (e.g. in
gaussianEliminateVars, gaussianEliminate and removeRedundantLocalVars),
which can be migrated separately.
[mlir][Presburger] Add IntegerRelation::reduceUsingEqualities helper
Add a protected helper that rewrites all constraints of a relation using
the equalities of another relation in the same space, without changing
the intersection of the two. This is a port of ISL's
isl_basic_set_reduce_using_equalities together with
project_onto_involved: the equalities are first projected onto the
variables that occur in the relation being reduced, so that no new
variables (in particular, no locals of the other relation) are
introduced, and each remaining equality is then used to eliminate its
last variable with a non-zero coefficient from every constraint, so that
later variables (locals) are eliminated in favor of earlier ones.
This is a building block for context-based simplification (gist) and is
exercised by the gist tests added in a follow-up commit, since there is
no existing pattern for unit-testing protected members of
IntegerRelation.
[MemProf] Handle local aliases in ThinLTO indirect tail-call cloning (#238190)
Indirect call targets in value profile metadata may come from
instrumentation PGO, keyed by PGOFuncName, or from SamplePGO and MemProf
synthesized targets, keyed by the binary symbol name (i.e. unprefixed
for locals), independent of the build's FDO mode. During the thin link,
updateValueInfoForIndirectCalls translates unprefixed local target GUIDs
to the local's actual ValueInfo, which then keys any MemProf callsite
record synthesized for a missing tail-call frame.
In distributed ThinLTO backends, the summary index omits original-name
mappings, so findIndirectTailCallCallsite reconstructs them from the
module's definitions via InstrProfSymtab. This failed for local aliases:
InstrProfSymtab does not index GlobalAliases, and an imported copy of an
alias (a Function created by replaceAliasWithAliasee) retains the
aliasee's !guid, so it was indexed under the aliasee's GUID rather than
the alias's, and could also shadow the aliasee's own function when both
were in the module. As a result, synthesized records targeting local
aliases were missed, leaving callers uncloned with undefined .memprof.*
[26 lines not shown]
NAS-144124 / 27.0.0 / Refuse SED reset, setup and unlock on boot pool disks (#20121)
On a system licensed for SED whose boot drive happens to support TCG,
the boot drive was reported as a SED disk like any other. Storage >
Disks showed its SED status, and since the SED Reset button started
showing in every SED state
([NAS-144107](https://ixsystems.atlassian.net/browse/NAS-144107)) it
offered a PSID factory reset of the running boot device, which
middleware would carry out with nothing to stop it.
- `disk.query` now reports boot pool disks as not SED, with no SED
status. `disk.details` and the disk change events carry the same values,
so the WebUI stops showing SED status and SED Reset for the boot drive
without a WebUI change.
- `disk.reset_sed`, `disk.setup_sed` and `disk.unlock_sed` reject a boot
pool disk as not a SED disk.
- Systems with no SED disks see no change, and no extra boot pool
lookup.
A PSID reset of a disk in an imported data pool is still not refused;
that is [NAS-144112](https://ixsystems.atlassian.net/browse/NAS-144112).
[NFC] Build: Suppress AIX binary compat warning in real-value.h (#238605)
Fixes
```
error: alignment of 16 bytes for a struct member is not binary compatible with IBM XL C/C++ for AIX 16.1.0 or older [-Werror,-Waix-compat]
```
caused by https://github.com/llvm/llvm-project/pull/216960.
Co-authored-by: Hubert Tong <hstong at ca.ibm.com>
[mlir][acc] Do not report a negative launch width as a size (#238572)
A negative constant launch width leaves the size to be chosen at launch,
but the remarks printed it as `gang([invalid_num])` and
`gridDim=-1x1x1`. Make `getKnownConstantLaunchArg` ignore negative
constants and print such widths as `(*)` in the launch remark.
[mlir][LLVM] Use a disjoint scope domain when inlining noalias
This matches recent changes to the LLVM inliner.
AI disclosure: Claude wrote the code, I wrote the commit message and
have done initial review.
[AI test fix] Use property syntax for alias scope attributes
The strict-properties assembly format change means inherent attributes
such as `alignment`, `alias_scopes` and `noalias_scopes` on
`llvm.load`/`llvm.store` can no longer be parsed out of the trailing
attribute dictionary. Switch the newly added tests to the `<...>`
property syntax already used by the rest of these files.
[mlir][LLVM] Add disjointScopes to AliasScopeDomainAttr
This also updates the MLIR-side inliner to clone disjoint domains
while cloning alias scopes, matching changes to LLVM.
AI disclosure: Claude wrote the code, I wrote the commit message and
looked at the code.
[AMDGPU] Use a disjoint scope domain for merged LDS structs
When lowering LDS values, all the values are mutually disjoint, so we
can use the newly-added disjoint scopes feature to simplify the IR.
AI disclosure: Claude wrote this and I reviewed it and wrote the
commit message
[AMDGPU] Use a disjoint scope domain for noalias kernel arguments
All noalias arguments of a kernel are disjoint with each other, so we
can use a disjoint scope to save on metadata construction.
AI disclosure: Claude wrote this, I looked at it and wrote this
message.
Unwrap long lines in remaining new tests
Match sibling elementwise builtin tests, which keep RUN lines and
statements on one line.
Change-Id: I33de97f85093f2649c0035c22f99a33b1657486f
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>