Skip to content

Conversation

@z1-cciauto
Copy link
Collaborator

No description provided.

mleleszi and others added 30 commits November 5, 2025 16:09
llvm#159474

Another try of trying to land
llvm#166382
- Fix some leftover tests checking for specific  errnos
- Guard errno checking tests to not run on the GPU

@michaelrj-google
First patch for llvm#74368. Constant folding will be added in a follow-up
patch.
Previously, if the `open` or `openat` syscalls returned 0 as a (valid)
file descriptor, the `creat` and `openat` wrappers would erroneously
return -1.
…166489)

Early Niagara processors (T1-T3) lacks any branch predictor, yet they
also have a pipeline long enough that the delay slot cannot cover for
all of the branch latency.
This means that branch instructions will stall the processor for a
couple cycles, which makes them an expensive operation. Additionally,
the high cost of branching means that it's still profitable to prefer
conditional moves even when the conditional is predictable, so let LLVM
know about both things.

On SPARC T2, a pgbench test seem to show a modest, but pretty consistent
speedup (up to around 3%).
The idioms are described in https://reviews.llvm.org/D102116 and [https://reviews.llvm.org/D92754](https://reviews.llvm.org/D91038). In both cases, the way the loop is expressed changes, without changing its iteration count, which means we can reuse the original loop's branch probabilities.

Issue llvm#147390
…lvm#166591)

This patch fixes a crash in `tryVPTERNLOG` when trying to peel out the
outer not in cases like `~(A | B | C)`.

Previously, `InnerOp` was taken directly from `Op->getOperand(0)` before
verifying that it was a logical operation. As a result, the code could
later access `InnerOp->getOperand(0)` or `InnerOp->getOperand(1)` even
when `InnerOp` was something like a bitcast, causing an error.

This patch applies `getFoldableLogicOp` to `InnerOp`, ensuring that
`InnerOp` is a valid logic operation before it is dereferenced.
Generalize VPWidenSelectRecipe codegen to consider single-scalar
conditions instead of just loop-invariant ones.

If the condition is a single-scalar, we can simply use a scalar
condition.

PR: llvm#165506
This patch also configures fcntl lock tests to run with F_OFD_* command
variants, as all existing lock tests do not exercise process-associated-
or OFD-specific functionality.
Currently RuntimeLibcallsInfo is a hardcoded list based on the triple.
In the future the available libcall set should be dynamically modifiable
with module flags.

Note this isn't really used yet. TargetLowering is still constructing
its own copy, and untangling that to use this requires several more
steps.
… (NFCI)

Move and combine the code to narrow ops feeding interleave groups to a
single unified static helper. NFC, as legalization logic has not
changed.
…ine body (llvm#165650)

Fix the assertion failure in TrivialFunctionAnalysis::isTrivialImpl with
a coroutine body by caching the result with WithCachedResult.
…66658)

Reverts llvm#166252

Causing buildbot failures on `libc-x86_64-debian-dbg-asan`.
Add additional tests to cover chains of ops feeding interleave groups,
some of which could be narrowed.
…164825)

The code is ported from `SelectionDAG::computeKnownBits`.

As a result of adding `G_EXTRACT_VECTOR_ELT` to `GlobalISel`, the code
generated for some of the existing regression tests changes. The changes
in `neon-extadd-extract.ll` and `knownbits-buildvector.mir` look good to
me. Though I'm struggling to understand the diff in `sdiv.i64.ll`. Is
there a test that checks if the generated amdgcn produces the correct
result? Or tools that help with executing it (I do have an AMD GPU)?

**Edit**: Related to llvm#150515
An Info's FullName was not being used anywhere in clang-doc. It seems to
have been superseded by other types like QualName. Removing FullName
also orphans getRecordPrototype, which constructs a record's full
declaration (template<...> class ...). There are better ways to
construct this documentation in templates.

Fixes llvm#143086
This PR adds __builtin_elementwise_ldexp. It can be used for
implementing OpenCL ldexp builtin with vector inputs.
The register values between `2 << 30` (inclusive) and `2 << 31`
(exclusive) correspond to frame indices. To obtain the frame index from
the given register value we interpret first 30 bits as an unsigned
integer. Thus, currently only non-negative frame indices can be
represented.

However, we should also be able to represent negative frame indices as
register values as well. This is used by reaching definitions analysis
for example.

In order to do that, we interpret the first 30 bits of the register
value as a signed integer.

---------

Co-authored-by: Mikhail Gudim <mgudim@ventanamicro.com>
Co-authored-by: Petr Penzin <ppenzin@tenstorrent.com>
This patch introduces `SBFrameList`, a new SBAPI class that allows
iterating over stack frames lazily without calling
`SBThread::GetFrameAtIndex` in a loop.

The new `SBThread::GetFrames()` method returns an `SBFrameList` that
supports Python iteration (`for frame in frame_list:`), indexing
(`frame_list[0]`, `frame_list[-1]`), and length queries (`len()`).

The implementation uses `StackFrameListSP` as the opaque pointer,
sharing the thread's underlying frame list to ensure frames are
materialized on-demand.

This is particularly useful for ScriptedFrameProviders, where user
scripts will be to iterate, filter, and replace frames lazily without
materializing the entire stack upfront.

Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
This new test case breaks the buildbot starting
https://lab.llvm.org/buildbot/#/builders/201/builds/6934. The
corresponding clang test case sets the target triple to avoid failures.
…6670)

I was looking at the calls to `usleep` in debugserver and noticed that
these default arguments are never overwritten. I converted them to
constants in the function, which makes it easier to reason about.
This is step 1 of exposing WASM `ref.func` to LLVM.

This PR only handles creating the instruction and a test for assembling
it.
From the OpenACC 3.4 Specification:
```
1924 2.7.9 copyout clause
1925 The copyout clause may appear on structured data and compute constructs, on declare di
1926 rectives, and on exit data directives. The clause may optionally have a zero modifier if the
1927 copyout clause appears on a structured data or compute construct.
1928 Only the following modifiers may appear in the optional modifier-list: always, alwaysin or zero.
1929 Additionally, on structured data and compute constructs capture modifier may appear
```
`readonly` is not a legal modifier for the `copyout` clause. The call to
`genDataOperandOperationsWithModifier` should be checking the parsed
modifier for the `copyout` clause against the `Zero` modifier.
@z1-cciauto z1-cciauto requested a review from a team November 6, 2025 00:45
@z1-cciauto
Copy link
Collaborator Author

@z1-cciauto z1-cciauto merged commit 7c863ec into amd-staging Nov 6, 2025
8 checks passed
@z1-cciauto z1-cciauto deleted the upstream_merge_202511051945 branch November 6, 2025 03:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.